声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2012|回复: 3

[编程技巧] 求助:matlab怎么光顺 B样条曲线

[复制链接]
发表于 2006-6-18 11:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
高手指点:想用matlab光顺双三次B样条曲线,使其高斯曲率变化均匀,有没有什么办法可以实现?谢谢了
回复
分享到:

使用道具 举报

发表于 2006-6-18 15:11 | 显示全部楼层
“光顺”是使zhi光滑的意思么
发表于 2006-6-18 20:46 | 显示全部楼层

回复:(mxwcy)求助:matlab怎么光顺 B样条曲线

是这个一意思吗?<BR><BR>% B样条曲线生成程序<BR>% 说明:给定8个控制顶点{(3 5),(2 4),(3 2),(6 1),(5 8),(10 6),(8 1),(6 0)}<BR>%load c;x=800:25:1800;<BR>%a(1,:)=x;a(2,:)=c;<BR>a=[10 15 20 25 30 35 40 45 50 55 60 65 70 75 80 85 90;20 16 26 26 26 26 24 24 24 22 22 16 28 26 26 26 24];    % 控制顶点数组;<BR>%a=[4 3 2 3 6 5 10 8 6 4;6 5 4 2 1 8 6 1 0 -1];%增加两个控制顶点(4 6)(4 -1)从而使曲线通过原来的首末点;<BR>plot(a(1,:),a(2,:),':');                 % 绘制控制多边形;<BR>hold on;                   % 默认为hold off,此命令用来保留控制多边形的图形;                               <BR>for i=1:38;          % 由于4个顶点可以确定一条B样条,共有8个控制顶点,可确定5条B样条曲线;<BR>%for i=1:7;<BR>for u=0:0.001:1;    % 参数u;   <BR>    <BR>    b0=1.0./6.*(1-u).^3;                     % 基函数b0;<BR>    b1=1.0./6.*(3.*u.^3-6.*u.^2+4);          % 基函数b1;<BR>    b2=1.0./6.*(-3.*u.^3+3.*u.^2+3.*u+1);    % 基函数b2;<BR>    b3=1.0./6.*u.^3;                         % 基函数b3;<BR>    <BR>    x=b0.*a(1,i)+b1.*a(1,i+1)+b2.*a(1,i+2)+b3.*a(1,i+3);   % 确定曲线的横坐标x;<BR>    y=b0.*a(2,i)+b1.*a(2,i+1)+b2.*a(2,i+2)+b3.*a(2,i+3);   % 确定曲线的纵坐标y;<BR>    <BR>    line(x,y);       % 绘制曲线坐标点;<BR>end<BR>end<BR>hold off;
 楼主| 发表于 2006-6-18 23:22 | 显示全部楼层
谢谢楼上各位,<BR>现在绘制出的样条曲线光滑但高斯曲率变化不均匀,想用一种算法调整塔形指点的位置使其曲率变化也均匀,这其中有个问题是每个节点处二阶导可以用matlab直接算吗,根据已知的样条基函数?
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-10-4 09:25 , Processed in 0.058428 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表