我正在研究可以通过一组点拟合一组贝塞尔曲线的东西。我已经可以使用Pomax中的曲线拟合方法来做到这一点。这种方法的问题在于,它无法通过具有很多拐点的直线拟合低阶贝塞尔曲线。因此,为了进行这项工作,我需要能够通过在曲线的拐点处分割曲线然后从那里运行曲线拟合算法来获得分段三次贝塞尔曲线。问题是我不确定如何找到没有明确函数的一组点的导数。我想我总是可以计算出割线而不是切线的斜率,但是我不确定这是否行得通。是否有人对找到一组拐点的拐点有更好的想法?
拐点是分度曲线,曲率绕组从CW变到CCW,反之亦然。因此,首先检测绕组。
假设是二维情况...
如果您的点是{ p0,p1,p2,...,p(n-1) }
,则在p(i)
处缠绕是2个相切线的叉积的z坐标的符号:
w(i) = cross ( ( p(i)-p(i-1) ),( p(i+1)-p(i) ).z
因此,如果p(i)
不灵活,则:
w(i)*w(i-1) < 0
问题是,如果w(i)
为零,则必须跳过或特殊处理绕组。