我正在寻找有关创建能够计算弧形边界框的算法的帮助。通常,这将是一个简单的问题。但是,我需要将盒子的边缘之一作为连接弧的起点和终点的线。
我在开发能够计算矩形的另外两个点的算法时遇到了困难。
这是我正在尝试计算的图片:
两个紫色的点,我需要开发一个算法来确定这两个位置。绿点是可以输入的已知点。此外,我确实知道圆弧的半径和圆心。
我需要算法来处理 AB 线垂直、具有 + 斜率和 - 斜率的不同情况。
我一直在考虑几个方向。例如,我知道通过点 E 的线平行于线 AB。因为它是平行的,这意味着它们将具有相同的斜率,并且从点 A 到紫色点的线垂直于这条线。然后我可以考虑通过 E 的线与这条垂直线的交点。
这种方法看起来很麻烦,因为那时我需要考虑 AB 线的斜率无限大且为 0 的情况。我想知道是否有某种算法可以自动解决这个问题(或者甚至不考虑斜率在全部用于 AB 行)
最佳答案
你声称知道点A
、B
、C
、D
、E
,圆弧的支撑角幅度不超过180°(半圆)。
让P1
, 和P2
, 补充bounding box的两个点——(在图中,P1
就是上面的紫色点A
,P2
B
上面的那个)。
使用向量:
E-C = 垂直于线段 AB' 的向量,即从 E 中减去 C;它的大小等于距离 EC
。
P1 = A + (E-C)
P2 = B + (E-C)
边界框 = 矩形 A
, P1
, P2
, B
如果需要更紧密的拟合,可以将vector (E-C)
替换为vector (D-C)
以放置边界线段P1P2
切线到 D
关于algorithm - 协助创建围绕圆弧创建框的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49804636/