如何计算圆弧的边界框?

问题描述 投票:0回答:1

我有一条弧,有三个已知点B、C、D。B、C是弧的两个端点,D是弧上的随机控制点。现在我需要得到这个弧的最小边界框。

有什么好的计算方法吗?

Arc bounding box

algorithm polygon
1个回答
0
投票

术语 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]
应该是您感兴趣的最小轴对齐边界框的角。

© www.soinside.com 2019 - 2024. All rights reserved.