1 开门见山
目标:给定若干个有序的型值点坐标,要求用一条三次B样条曲线通过这些型值点,最后可以得到这条曲线的控制点和插值点,工程上用处较大的是插值点,可以细化轨迹。本文的代码有两种方法,方法一是求通过型值点的开曲线,思路参考东辰叶落大佬的代码B样条数据点反求控制点绘制曲线(源码);方法二是将第一个型值点和最后一个型值点连起来,求通过型值点的闭曲线。反求原理参考施法中的《计算机辅助几何设计与非均匀有理B样条》第八章第一节部分,建议配合代码一起看,更容易理解。
2 效果演示
2.1 BSplineTool.py 通过型值点的开曲线
蓝色为型值点,红色为控制点,绿色为插值点
2.2 BSplineTool2.py 通过型值点的闭曲线
蓝色为型值点,红色为控制点,绿色为插值点
2.3 BSplineQTDemo.py 交互式界面(鼠标点击处记录为型值点,开曲线闭曲线可切换)
蓝色为型值点,红色为控制点,绿色为插值点
3 代码
Python通过型值点反求三次B样条控制点及插值点(含开曲线和闭曲线)
Github
https://github.com/fangyongfan/BSpline