计算多边形旋转使直角是直的

Calculate Polygon Rotation so Right Angles are Straight

我有一个多边形 (RED SQUARE),为简单起见,它是一个 100x100 的正方形,距左上角的偏移量为 100。假设坐标系左上角为 0,0。所以我的简单正方形的坐标是:[x:100,y:100],[x:100,y:200],[x:200,y:200],[x:200,y:100].

现在假设我有另一个正方形(蓝色正方形),它也是一个 100x100 正方形,与左上角有相同的 100 偏移,但是这个正方形旋转了 45 度,所以它的线是:(圆形)[ x:150,y:79],[x:79,y:150],[x:150,y:221],[x:221,y:150].

如果只给出坐标,如何计算蓝色正方形的旋转(45 度)?假设我希望直角在此坐标系(如红色方块)中是直角(垂直或水平)。

换句话说...给定这些坐标:[x:150,y:79],[x:79,y:150],[x:150,y:221],[x:221, y:150] 如何计算应用于多边形的旋转,所以它的坐标是这样的:[x:100,y:100],[x:100,y:200],[x:200,y:200], [x:200,y:100]

这是一张展示我所说内容的图片。 Image of both polygons with coordinates

你这样做的方式是

  1. 计算两个相邻点之间的角度。这个 Math.atan2(x2-x1, y2-y1) 的公式;这将为您提供四边形所在的角度。
  2. 将四边形(从其中心)旋转 -angle(或 pi/2 - angle),一侧将水平,另一侧将垂直