导航:首页 > 编程语言 > bezier曲面程序matlab

bezier曲面程序matlab

发布时间:2023-12-11 10:01:00

⑴ matlab画Bezier曲线求助

原理可参考网络的【贝塞尔曲线】,当然,英语过得去的话建议参考维基网络的【Bézier curve】(没办法,中文版被墙了)。

参考代码

%控制点
p=[111;123;234;346;545;589;689];

%n为控制点的数量,t为0~1的参变量,b为平滑后的结果
n=size(p,1);
t=linspace(0,1)';
b=0;
fork=0:n-1
tmp=nchoosek(n-1,k)*t.^k.*(1-t).^(n-1-k);
b=b+tmp*p(k+1,:);
end
plot3(p(:,1),p(:,2),p(:,3),'.:',b(:,1),b(:,2),b(:,3))
gridon

⑵ 急找绘制bezier曲面代码(matlab)

/*
产生三次方贝塞尔曲线的程序
*/

typedef struct
{
float x;
float y;
}
Point2D;

/*
cp 在此是四个元素的阵列:
cp[0] 为起始点,或上图中的 P0
cp[1] 为第一个控制点,或上图中的 P1
cp[2] 为第二个控制点,或上图中的 P2
cp[3] 为结束点,或上图中的 P3
t 为参数值,0 <= t <= 1
*/

Point2D PointOnCubicBezier( Point2D* cp, float t )
{
float ax, bx, cx;
float ay, by, cy;
float tSquared, tCubed;
Point2D result;

/* 计算多项式系数 */

cx = 3.0 * (cp[1].x - cp[0].x);
bx = 3.0 * (cp[2].x - cp[1].x) - cx;
ax = cp[3].x - cp[0].x - cx - bx;

cy = 3.0 * (cp[1].y - cp[0].y);
by = 3.0 * (cp[2].y - cp[1].y) - cy;
ay = cp[3].y - cp[0].y - cy - by;

/* 计算位于参数值 t 的曲线点 */

tSquared = t * t;
tCubed = tSquared * t;

result.x = (ax * tCubed) + (bx * tSquared) + (cx * t) + cp[0].x;
result.y = (ay * tCubed) + (by * tSquared) + (cy * t) + cp[0].y;

return result;
}

/*
ComputeBezier 以控制点 cp 所产生的曲线点,填入 Point2D 结构的阵列。
呼叫者必须分配足够的内存以供输出结果,其为 <sizeof(Point2D) numberOfPoints>
*/

void ComputeBezier( Point2D* cp, int numberOfPoints, Point2D* curve )
{
float dt;
int i;

dt = 1.0 / ( numberOfPoints - 1 );

for( i = 0; i < numberOfPoints; i++)
curve[i] = PointOnCubicBezier( cp, i*dt );
}

阅读全文

与bezier曲面程序matlab相关的资料

热点内容
哪里学加工中心编程 浏览:523
如何切换oracle数据库 浏览:959
陌陌升级有什么好处 浏览:390
oracle数据库管理从入门到精通pdf 浏览:648
mysql数据库培训 浏览:441
whasapp聊天记录在哪个文件夹 浏览:108
30岁去哪里学编程 浏览:30
word为尾部空格添加下划线 浏览:190
大众朗逸的数据总线在哪里 浏览:500
广西大专编程哪个好 浏览:99
qq头像戴口罩男生动漫 浏览:440
远程桌面连接系统找不到指定文件 浏览:416
qq男生背影头像伤感带字 浏览:997
爱思助手读设备开机密码 浏览:315
js动态生成word 浏览:646
危险化学品按什么分类建立数据库 浏览:300
手机号重新注册微信怎么恢复数据 浏览:815
全脑和编程哪个好 浏览:709
教师学习编程语言有什么用 浏览:444
extjs创建对象 浏览:608

友情链接