B-Spline

来源:互联网 发布:淘宝延长收货 花呗 编辑:程序博客网 时间:2024/05/17 02:40

二次B样条基函数,控制一段曲线至少要三个点


三次B样条基函数,控制一段曲线至少要四个点



以三次B样条基函数为例,给定一组控制顶点,如何得到其所控制的曲线的点集的matlab代码

t=linspace(0,1,20);%采样密度,每段curve取20个点%74个点组成x=[379 379 370 341 307 321 344 326 331 350 388 453 453 415 356 326 328 347 377 361 283 252 262 277 281 254 251 221 203 197 163 151 177 169 134 79 39 36 62 100 126 135 126 108 109 154 179 182 160 127 103 108 129 138 102 81 106 140 168 168 138 108 82 102 140 132 110 105 127 159 177 258 344 344]; y=[244 244 230 226 241 248 246 390 406 402 347 375 431 485 492 468 429 416 435 456 458 441 399 390 411 459 500 462 414 376 362 404 436 483 504 499 470 418 371 356 363 388 423 419 378 299 286 286 263 255 269 296 300 315 322 277 245 234 245 247 238 248 277 324 317 301 297 268 255 263 285 290 293 293]; z=[0 0 -11 -18 0 14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 17 36 41 37 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -41 -39 -38 -43 -55 -35 -51 -47 -38 -41 -36 -32 59 45 44 41 34 52 36 30 38 43 24 17 0 0 0]; X=[];Y=[];Z=[];for i=1:71X=[X,1/6.*((-t.^3+3*t.^2-3*t+1)*x(i)+(3*t.^3-6*t.^2+4)*x(i+1)+(-3*t.^3+3*t.^2+3*t+1)*x(i+2)+t.^3*x(i+3))];Y=[Y,1/6.*((-t.^3+3*t.^2-3*t+1)*y(i)+(3*t.^3-6*t.^2+4)*y(i+1)+(-3*t.^3+3*t.^2+3*t+1)*y(i+2)+t.^3*y(i+3))];Z=[Z,1/6.*((-t.^3+3*t.^2-3*t+1)*z(i)+(3*t.^3-6*t.^2+4)*z(i+1)+(-3*t.^3+3*t.^2+3*t+1)*z(i+2)+t.^3*z(i+3))];end
figure;plot3(X,Y,Z);



0 0
原创粉丝点击