C 两条线角处的角度

C 两条线角处的角度,c,geometry,C,Geometry,我寻找最快或最简单的方法来计算凸多边形任意点的外角。这意味着,始终是较大的角度,而所讨论的两个角度加起来是360度 下面是一个例子: 现在我知道我可以计算两个向量A-B和C-B之间的角度,包括点积,归一化和余弦。然后我仍然需要确定两个结果角(第二个是180度减去第一个)中的哪一个,我想取两倍加在另一个上 但是,我认为可能有一个更简单、更不复杂的解决方案,可能是使用强大的atan2()函数。我被卡住了,问你这件事:-) 更新: 有人问我需要这个角度做什么。我需要计算这个围绕B的特定圆的面积,但只

我寻找最快或最简单的方法来计算凸多边形任意点的外角。这意味着,始终是较大的角度,而所讨论的两个角度加起来是360度

下面是一个例子:

现在我知道我可以计算两个向量A-B和C-B之间的角度,包括点积,归一化和余弦。然后我仍然需要确定两个结果角(第二个是180度减去第一个)中的哪一个,我想取两倍加在另一个上

但是,我认为可能有一个更简单、更不复杂的解决方案,可能是使用强大的atan2()函数。我被卡住了,问你这件事:-)

更新: 有人问我需要这个角度做什么。我需要计算这个围绕B的特定圆的面积,但只计算由A,B,C。。。 因此,为了计算面积,我需要角度来使用公式
0.5*angle*r*r

使用描述线的向量的内积(点积)来获得内角并从360度中减去


如果你已经有点向量形式的线,效果最好,但是你可以很容易地从点到点形式得到向量(即通过减法)

作为我们的dot产品

 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
这里的下标表示组件


在实际阅读了问题之后:

  • 反转点积返回的角度将始终小于180度,因此它始终是内角

如果需要角度,则无法规范化向量并进行点积或叉积。如果您想通过asin、acos或atan计算角度,您通常可以选择,但最终这对执行速度没有影响

不过,如果你能告诉我们你想归档什么,那就太好了。如果我们对你正在做的事情有一个更好的了解,我们可能会给你一些提示,如何在不计算角度的情况下解决这个问题

许多几何算法可以重写为仅用于十字积和点积。很少需要欧拉角。

使用以下公式:

beta = 360° - arccos(<BA,BC>/|BA||BC|)
beta=360°-arccos(/| BA | BC |)
其中,
是标量积,
BA
BC
)是从
B
A
B
C
)的向量

我需要计算多边形外圆的面积,由A,B,C


那么,听起来你采取了错误的方法。您需要计算多边形的面积,然后减去多边形的面积。

谢谢您的回答,但这是一个误解。我只有一个围绕这个顶点的圆。我想说的是,我需要计算它的面积,但只计算多边形的面积,多边形由这个顶点和其他顶点定义。我知道多边形的其他部分在这里并不重要。