如何确定多边形旋转角度

问题描述 投票:2回答:3

我正在编写一个程序(.net)来创建体育场风格的布局,并且需要确定每个多边形与水平方向相比的旋转角度。

这样我就可以构造多边形的内容,并正确旋转它以适应内部。

给出下面的图像作为模拟面对方向的每个变体(由红线表示)的示例,我如何确定使形状在顶部具有红线所需的旋转角度,如已经由形状5所示。

http://i40.tinypic.com/16ifhoo.gif alt text

我已找到逻辑来确定构成红线的点的角度,但我还需要知道旋转以使其恢复到水平。

我不确定我是否需要一些中心参考点来帮助所有多边形。

我怎么能最好地解决这个问题?

geometry rotation polygon angle
3个回答
0
投票

如果您知道某些多边形(例如)的红线角度,则多边形位于该线的一侧或另一侧。所以:

  • 使用两侧线附近的某些像素的平均颜色来确定是哪种情况。 如果多边形在线上方,则旋转角度为180 + a。 如果多边形在线下方,则旋转为a。

根据您测量a的方式,上方和下方对应于线的较小角度侧和较大角度侧。


0
投票

我会尝试计算每条红线上的法线向量(例如,多边形5为0度,4度为45度,3度为90度等),然后是需要旋转法线的角度 - 因此匹配多边形 - 这样正常的“积分”应该非常简单。

不幸的是,我没有为你提供所需的公式,但谷歌搜索“普通向量”和/或在维基百科上搜索它应该让你开始很好,我想。可能是所谓的“交叉产品”的方向。

此时不需要所有多边形的中心参考点(法线方向与绝对坐标无关)。


0
投票

sin,cos,tan函数允许您从三角形边缘比率转换为度数。

想象一下,红线的一端是(x1,y1),另一端是(x2,y2)。您可以将红线视为矩形三角形的hipotenuse,并使用arctan获得度数。

导管之间的比率是(x2-x1)/(y2-y1)。然后红线的旋转是arctan((x2-x1)/(y2-y1))。注意y1-y1为0时的情况!

让我们试试你的照片中的一个例子,多边形6带有坐标(55,65)和(65,55)。输入谷歌:“arctan((65-55)/(55-65))in degrees”

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