我有一条弧,有三个已知点B、C、D。B、C是弧的两个端点,D是弧上的随机控制点。现在我需要得到这个弧的最小边界框。
有什么好的计算方法吗?
术语 AABB(轴对齐边界框)、OBB(定向边界框)和 MBR(最小边界矩形 = 2D 边界框)不是用于查找边界框的算法,它们是边界框的类型。
假设您正在寻找一个从 A 点开始,经过 M 点并在 B 点结束的圆弧的轴对齐框,您可以执行以下不依赖于任何三角函数的步骤
使用 A、M、B 的坐标通过 A、M、B 点找到圆心
C=[Cx,Cy]
和半径 r
使用此 答案
定义点
E=[Cx+r,Cy]
N=[Cx,Cy+r]
W=[Cx-r,Cy]
S=[Cx,Cy-r]
计算三角形 ABM、ABE、ABN、ABW、ABS 的面积:
ABM = (Ax*(By-My) + Bx*(My-Ay) + Mx*(Ay - By))/2
ABE = (Ax*(By-Ey) + Bx*(Ey-Ay) + Ex*(Ay - By))/2
...
如果
ABM*ABE > 0
则BBxmax = Ex
否则BBxmax = max(Ax,Bx)
如果
ABM*ABN > 0
则BBymax = Ny
否则BBymax = max(Ay,By)
如果
ABM*ABW > 0
则BBxmin = Wx
否则BBxmin = min(Ax,Bx)
如果
ABM*ABS > 0
则BBymin = Sy
否则BBymin = min(Ay,By)
完成这些步骤后,
[BBxmin,BBymin]
和[BBxmax,BBymax]
应该是您感兴趣的最小轴对齐边界框的角。