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