我正在编写一个程序(.net)来创建一个体育场风格的布局,并且需要确定每个多边形与水平方向相比的旋转角度。
这样我就可以构造多边形的内容,并正确旋转它以适应内部。
以下面的图像为例来模拟面对方向的每个变体(由红线表示)我如何确定使形状在顶部具有红线所需的旋转角度,如已经显示的那样形状5。
http://i40.tinypic.com/16ifhoo.gif
我找到了确定构成红线的点的角度的逻辑,但我还需要知道旋转以使其恢复到水平。
我不确定是否需要一些中心参考点来帮助所有多边形。
我怎样才能最好地解决这个问题?
答案 0 :(得分:0)
我会尝试计算每条红线上的法线向量(例如,多边形5为0度,4度为45度,3度为90度等),然后是正常旋转所需的角度 - 因此匹配的多边形 - 这样正常的“向上点”应该非常简单。
不幸的是,我没有为你提供所需的公式,但谷歌搜索“普通矢量”和/或在维基百科上搜索它应该让你开始很好,我想。可能是所谓的“交叉产品”的方向。
此处不需要所有多边形的中心参考点(法线方向与绝对坐标无关)。
答案 1 :(得分:0)
如果您知道某些多边形( a ,例如)的红线角度,则多边形位于该线的一侧或另一侧。所以:
根据您测量 a 的方式,上方和下方对应于线的较小角度侧和较大角度侧。
答案 2 :(得分: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)。输入google:“arctan((65-55)/(55-65))in degrees”