C++ 如何使用叉积计算两个二维向量之间的角度?

C++ 如何使用叉积计算两个二维向量之间的角度?,c++,vector,sfml,angle,cross-product,C++,Vector,Sfml,Angle,Cross Product,下面是同一个问题的链接,但最好的答案并不能完全解释: 这是我一直坚持的叉积,因为这个链接中的公式只能应用于计算之外的数学 以计算形式计算叉积的实际公式是什么? 如果你可以把它作为C++代码来发布,那就太好了。 请记住,我在寻找2个2D向量之间的叉积,而不是3D。标题中说您对计算两个2D向量之间的角度感兴趣,所以这就是我要说的 例如,如果您看一看,用代码实现是相当简单的 然而,atan2功能使这一点变得轻而易举: double angle = atan2(p2y, p2x) - atan2(p1

下面是同一个问题的链接,但最好的答案并不能完全解释:

这是我一直坚持的叉积,因为这个链接中的公式只能应用于计算之外的数学

以计算形式计算叉积的实际公式是什么? 如果你可以把它作为C++代码来发布,那就太好了。
请记住,我在寻找2个2D向量之间的叉积,而不是3D。

标题中说您对计算两个2D向量之间的角度感兴趣,所以这就是我要说的

例如,如果您看一看,用代码实现是相当简单的

然而,atan2功能使这一点变得轻而易举:

double angle = atan2(p2y, p2x) - atan2(p1y, p1x);

对于三维情况。
我一直坚持使用叉积,因为该链接中的公式只能应用于计算之外的数学。
不正确@上尉,他们说的是精灵,所以我假设它是2D,他们提供的链接应该足以满足他们的需要。从我所看到的情况来看,这个公式是无法应用的。sinθ的第一个实例是0,因为我们根本不知道θ是什么。谢谢,我不知道点积可以用来求角度。当然,在使用点积时,这两个向量中的任何一个都必须是单位向量吗?@StallMar不,它被假定为一个正常的XY坐标系。哦,这让我有点困惑。这是否意味着我只需在第一个atan2()中插入鼠标的x,y位置,在第二个atan2()中插入播放器的x,y位置?还是我还需要2个向量?因为之前我有一个从玩家到鼠标位置的向量,还有一个玩家的单位向量。如果没有单位向量,我就不知道从哪里可以得到另一个向量。它是一个0,0的速度向量还是什么?单位向量是x和y。在计算机屏幕上,它们是像素。在数学上,它们可能是奇怪的生物。是的,插上电源就行了。如果您从代码中得到奇怪的结果,请发布新问题。希望有帮助。