贝塞尔曲线与圆的交点
Point of intersection between bezier curve and circle
我的目标是创建以下内容(连接两个节点的有向箭头):
目前我有这个(从一个节点的中心点到另一个节点的中心绘制的二次贝塞尔曲线):
(注意我在节点上方绘制了贝塞尔曲线以显示它的开始和结束位置)
我需要一种方法 - 启发式或其他方式 - 来计算贝塞尔曲线和节点(椭圆)周长之间的交点(上面用红色圈出)。
有了这个,我可以计算节点中心和交点之间的角度,以在正确的位置和角度绘制箭头线。
作为最后的手段,我可以使用二次贝塞尔公式生成沿曲线的点列表,还生成位于圆周上的点列表并使用彼此之间欧几里得距离最小的两个坐标之一作为我的交点。我希望任何答案都可以利用几何或其他任何东西来更好地解决它。
由于交集方程是四次方程 ((X(t)-Xc)² + (Y(t)-Yc)²=R²
),因此一般问题并不容易,其中 X
和 Y
是二次多项式)。如果你手边有四次求解器,你可以使用它,但你必须 select 正确的根。
更合理的做法是将圆与控制点之间的线段相交。这是近似值,但如果圆半径很小,可能不会引起注意。
如果您想要更高的准确性,请从这一点开始执行一到两次牛顿迭代。
我的目标是创建以下内容(连接两个节点的有向箭头):
目前我有这个(从一个节点的中心点到另一个节点的中心绘制的二次贝塞尔曲线):
(注意我在节点上方绘制了贝塞尔曲线以显示它的开始和结束位置)
我需要一种方法 - 启发式或其他方式 - 来计算贝塞尔曲线和节点(椭圆)周长之间的交点(上面用红色圈出)。
有了这个,我可以计算节点中心和交点之间的角度,以在正确的位置和角度绘制箭头线。
作为最后的手段,我可以使用二次贝塞尔公式生成沿曲线的点列表,还生成位于圆周上的点列表并使用彼此之间欧几里得距离最小的两个坐标之一作为我的交点。我希望任何答案都可以利用几何或其他任何东西来更好地解决它。
由于交集方程是四次方程 ((X(t)-Xc)² + (Y(t)-Yc)²=R²
),因此一般问题并不容易,其中 X
和 Y
是二次多项式)。如果你手边有四次求解器,你可以使用它,但你必须 select 正确的根。
更合理的做法是将圆与控制点之间的线段相交。这是近似值,但如果圆半径很小,可能不会引起注意。
如果您想要更高的准确性,请从这一点开始执行一到两次牛顿迭代。