在图形用户界面中,我正在处理类似图形的结构。节点由圆形或矩形表示。用户应该能够在两个节点之间绘制连接线(有向边),并且可以定义该线应该通过的一组中间点。
创建从第一个节点的中心开始,经过所有中间点并在第二个节点的中心结束的分段 C2 连续贝塞尔曲线是没有问题的。
问题
但是现在(主要是出于美学原因)我希望边缘在节点边界而不是中心点开始/结束。那么我怎样才能在节点的边界上找到合适的锚点呢?一种可能性是计算我的贝塞尔曲线和节点边界之间的交点。但是对于圆来说,这将导致一个 6 阶多项式方程,并且试图以数字方式解决这个问题似乎有点矫枉过正。
可能的解决方案
我尝试的另一个选项是取节点边界与穿过第一条/最后一条贝塞尔曲线的两个控制点的线之间的交点。虽然如果中间点离节点更远,这似乎是一个很好的近似值,但如果它们靠近则失败:
灰色:中间点,绿色/蓝色:控制点,红色:近似交点
有没有推荐的方法来解决这个问题?现有工具如何处理这个问题?