我搜索最快或最简单的方法来计算凸多边形任意点的外角。这意味着,总是更大的角度,而所讨论的两个角度加起来为360度。
以下是插图:
现在我知道我可以计算两个矢量A-B和C-B之间的角度,它涉及点积,归一化和余弦。然后我仍然需要确定两个结果角度中的哪一个(第二个是180度减去第一个)我想要两次加到另一个角度。
然而,我认为可能有一个更简单,更简单的解决方案,可能使用强大的atan2()函数。我卡住了,问你这个问题: - )
更新
有人问我需要什么角度。我需要计算B周围这个特定圆的面积,但只计算A,B,C,......所描述的多边形。
因此,为了计算面积,我需要角度来使用公式0.5*angle*r*r
。
答案 0 :(得分:5)
使用描述线条的向量的内积(点积)得到内角并从360度减去?
如果你已经有了点矢量形式的线条,那么效果最好,但你可以很容易地从点到点形式获得矢量(即通过减法)。
将.
作为我们的点积
v . w = |v| * |w| * cos(theta)
其中v
和w
是向量,theta
是行之间的角度。并且可以通过
v . w = SUM(v_i * w_i : i=0..3) // 3 for three dimensions. Use more or fewer as needed
此处下标表示组件。
实际上读问题:
答案 1 :(得分:3)
使用此公式:
beta = 360° - arccos(<BA,BC>/|BA||BC|)
<,>
是标量积,而BA
(BC
)是从B
到A
(B
到{{的向量1}})。
答案 2 :(得分:2)
我需要计算A,B,C,......所描述的多边形外面的圆的面积。
听起来你采取了错误的做法。您需要计算circumcircle的面积,然后减去多边形的面积。
答案 3 :(得分:1)
如果您需要角度,则无法对矢量进行标准化并执行点或交叉积。如果你想通过asin,acos或atan计算角度,但最终只能对执行速度产生影响,你可以选择。
但是,如果您能告诉我们您要归档的内容,那将会很好。如果我们能够更好地了解您正在做的事情,我们可能会给您一些提示,以便在不首先计算角度的情况下解决问题。
可以重写许多几何算法,仅适用于交叉和点积。很少需要欧拉角。