贝塞尔曲线与圆之间的交点

mic*_*cle 2 processing geometry bezier

我的目标是创建以下(连接两个节点的有向箭头): 目标

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

当前

(注意我已在节点上方绘制了bezier以显示其开始和结束的位置)


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

有了这个,我可以计算节点中心和交叉点之间的角度,以在正确的位置和角度绘制箭头.


作为最后的手段,我可​​以使用二次Bézier公式生成沿曲线的点列表,并生成位于圆周上的点列表,并使用具有最少欧几里得的两个坐标之一彼此之间的距离作为我的交点.我希望任何答案都可以利用几何或其他任何方法来更好地解决它.

Yve*_*ust 5

一般问题是不安的,因为交叉方程是四次((X(t)-Xc)² + (Y(t)-Yc)²=R²),其中xy是二次多项式).如果你有一个方便的四次解算器你可以使用它,但你必须选择正确的根.

更合理的方法是将圆与控制点之间的线段相交.这是近似值,但如果圆半径小,则可能不明显. 在此输入图像描述

如果您想要更高的精确度,请从此处执行一次或两次牛顿迭代.