计算多边形角度的边界矩形

kev*_*n42 7 algorithm graphics geometry

我需要以任意角度确定多边形的边界矩形.这张照片说明了我需要做的事情:

alt text http://kevlar.net/RotatedBoundingRectangle.png

对于简单的2d多边形,我需要在各个角度确定粉红色矩形.

任何解决方案都非常感谢!

编辑:

谢谢你的答案,我得到了中心点正确的工作.你们真棒!

sch*_*der 7

要获得具有特定角度的边界框,请将该多边形相反旋转该角度.然后,您可以使用最小/最大x/y坐标来获得一个简单的边界框,并按角度旋转以获得最终结果.

从您的评论中,您似乎遇到了获取多边形中心点的问题.多边形的中心应该是每个点的坐标和的平均值.所以对于点P1,...,PN,计算:

xsum = p1.x + ... + pn.x;
ysum = p1.y + ... + pn.y;
xcenter = xsum / n;
ycenter = ysum / n;
Run Code Online (Sandbox Code Playgroud)

为了完成这一点,我还为所涉及的旋转添加了一些公式.要围绕中心点(cx,cy)旋转点(x,y),请执行以下操作:

// Translate center to (0,0)
xt = x - cx;
yt = y - cy;
// Rotate by angle alpha (make sure to convert alpha to radians if needed)
xr = xt * cos(alpha) - yt * sin(alpha);
yr = xt * sin(alpha) + yt * cos(alpha);
// Translate back to (cx, cy)
result.x = xr + cx;
result.y = yr + cx;
Run Code Online (Sandbox Code Playgroud)

  • 即使对于边界框放置,只要你放置它后将盒子和形状围绕同一点旋转回来,它就会起作用. (3认同)