mathematica中贝塞尔曲线的疑惑

mathematica中贝塞尔曲线的疑惑

起因

因工作中需要用贝塞尔曲线来作为角色登场的路线,所以游戏设计中有多条曲线;对于控制点数>4的贝塞尔曲线发现与游戏实际中显示的不同

对于path3的控制点为{{50,1400},{600,813},{-400,628},{110,296},{440,136},{192,-105}}

* 游戏中的路径

 

游戏中的路径
游戏中的路径

 

* mathematica出现不同

第一次直接使用贝塞尔曲线命令如下

Graphics[{BezierCurve[pts3], Green, Line[zon], Black, Point[zon]}, 
 Axes -> True]

得到如下图形
出现相交出不平滑

对于此mathematica给予如下解释
相交出不平滑

并给出了将两点重合进行平滑的方式,但是认为不精确故而弃用

 

相邻点共点近似法
相邻点共点近似法

 

奇怪的b样条

在mathematica中存在一个b样条曲线的函数,该函数定义为
非均匀有理 B 样条曲线.貌似与贝塞尔曲线有联系,但是有什么联系目前不详
用b样条曲线处理path3得到一条光滑曲线
代码

Graphics[{BSplineCurve[pts3, SplineKnots -> Automatic], Green, 
 Line[zon]}]

 

b样条的光滑曲线
b样条的光滑曲线

 

但是依然存在较大差距尤其是zon区域外mathematica两次绘图都存在有曲线部分

目前的疑惑有三点

  • b样条和贝塞尔的区别在哪
  • mathematica中对于多阶贝塞尔曲线是否是单纯的拼接而成
  • mathematica给出了一个多阶贝塞尔曲线的生成例子之间存在什么关系
posted @ 2019-07-29 18:30  余者皆可  阅读(440)  评论(0)    收藏  举报