Algorithm 如何对旋转矩形的点进行排序?
它是角度小于90度的旋转矩形。 它可能是时钟方向或逆时钟方向。我喜欢将这些点排序为矩形的原始序列。 就像文本注释一样,1、2、3、4 我的算法是: 1.找到最左边、最右边、最上面、最下面的点, 2.比较顶部的.x和底部的.x 3.根据比较值,可以找到四角序列。 4.从四个角点开始,计算矩形边缘的线函数,然后排列其他点 我不确定是否有其他更有效或更优雅的算法来解决这个问题。Algorithm 如何对旋转矩形的点进行排序?,algorithm,Algorithm,它是角度小于90度的旋转矩形。 它可能是时钟方向或逆时钟方向。我喜欢将这些点排序为矩形的原始序列。 就像文本注释一样,1、2、3、4 我的算法是: 1.找到最左边、最右边、最上面、最下面的点, 2.比较顶部的.x和底部的.x 3.根据比较值,可以找到四角序列。 4.从四个角点开始,计算矩形边缘的线函数,然后排列其他点 我不确定是否有其他更有效或更优雅的算法来解决这个问题。 多谢各位 假设矩形已顺时针旋转了一些小于90度的角度。在这种情况下,请注意,顶行中的第(i+1)个点始终位于第i个点的下方和
多谢各位 假设矩形已顺时针旋转了一些小于90度的角度。在这种情况下,请注意,顶行中的第(i+1)个点始终位于第i个点的下方和右侧。因此,我们可以剥离行:
- 从链接列表中删除此点并将其标记为i
- 将p设置为列表中的下一个点
- 设置i=i+1
- 将lastX设置为刚添加点的x坐标
- 转到6以查找此行中的下一个点
- 我们已经完成了这一行,其中的所有点都已从链表中删除。转到4开始下一行
但是如果矩形是逆时针旋转的呢?正如评论家n.m.指出的那样,如果没有进一步的信息,就无法将这种情况与顺时针旋转区分开来:逆时针旋转d度的n×m矩形看起来完全像顺时针旋转(90-d)度的m×n矩形。如果您有一些其他信息可以区分这些情况,则可以使用与之前相同的算法处理逆时针旋转,但要注意第一行(或任何一行)的宽度,然后重新排列标签。假设矩形已顺时针旋转了一些小于90度的角度。在这种情况下,请注意,顶行中的第(i+1)个点始终位于第i个点的下方和右侧。因此,我们可以剥离行:
- 从链接列表中删除此点并将其标记为i
- 将p设置为列表中的下一个点
- 设置i=i+1
- 将lastX设置为刚添加点的x坐标
- 转到6以查找此行中的下一个点
- 我们已经完成了这一行,其中的所有点都已从链表中删除。转到4开始下一行