贝塞尔曲线与圆的交点

时间:2018-08-12 19:00:02

标签: processing geometry bezier

我旨在创建以下内容(连接两个节点的有向箭头): Aim

目前,我有这个(从一个节点的中心点到另一个节点的中心的二次贝塞尔曲线):

Current

(请注意,我已在节点上方绘制了贝塞尔曲线,以显示其开始和结束的位置)


我需要一种方法-启发式或其他方法-计算贝塞尔曲线和节点(椭圆)圆周之间的交点(上方用红色圆圈圈出)。

这样,我可以计算节点中心与相交点之间的角度,以在正确的位置和角度绘制箭头线。


作为最后的选择,我可以使用二次Bézier公式来生成沿曲线的点列表,还可以生成在圆的圆周上的点列表,并使用两个中的一个彼此之间的欧式距离最小的坐标作为我的交点。我希望任何答案都可以利用几何学或其他任何方法来更好地解决它。

1 个答案:

答案 0 :(得分:5)

由于交集方程是四次的((X(t)-Xc)² + (Y(t)-Yc)²=R²,其中xy是二次多项式,所以总的问题不容易解决。如果您有方便的四次求解器,则可以使用它,但必须选择正确的根。

更合理的方法是将圆与控制点之间的线段相交。这是近似值,但如果圆半径很小,可能不会引起注意。 enter image description here

如果要获得更高的准确性,请从这一点开始执行一两次牛顿迭代。