【发布时间】:2017-02-07 20:29:35
【问题描述】:
我处于这种情况:我有一个包含一些矩形的画布,这些矩形也可以旋转一个角度。我想获取这些矩形的顶部、底部、右侧和左侧端点,以便绘制一个可以包含所有这些矩形的形状。
这是一张图:
我想创建一个匹配 A、B、C、D 点的形状(多边形,而不是矩形)。
我该怎么做?
【问题讨论】:
-
既然你知道每个点都由 X,Y 坐标组成,那么如果你有所有的点,你可以确定哪个是顶部(即最高 Y 值),最右边(最高X值)等
-
右 - 将四个单独的矩形视为一个矩形。
-
这是一个一般的多边形合并问题。首先,您需要确保所有多边形(在您的情况下为 4 个矩形)都是顺时针方向的。如果不是,则反转坐标顺序。然后,通过合并具有公共边的多边形来减少多边形数量。 顺时针测试:对边求和,(x2 − x1)(y2 + y1)。如果结果为正,则曲线为顺时针,如果结果为负,则曲线为逆时针。 (结果是封闭区域的两倍,采用 +/- 约定。)。
-
问题是我真的不知道如何获得最多的顶部、底部、右侧和左侧点...从 Canvas.getLeft/right 等方法我只能得到一个点非旋转矩形...
-
矩形是如何旋转的?