我们知道余弦定理 cos(α) = A·B/(A·B),反过来也可以求得A,B向量得夹角
α = arccos(A·B/(A·B))。
但是,由于余弦函数是一个0~Π之间的偶函数,当夹角大于Π时,计算得到的角度仍然为正值,不是正确的夹角,此时可以用以下方法:
向量Vector是一个Point1指向Point2向量,先计算出该向量的X分量与Y分量
double radian = 0;
double deltaX = Point2.X - Point1.X;//X分量
double deltaY = Point2.Y - Point1.Y;//Y分量
double length= Math.Sqrt(deltaX * deltaX + deltaY * deltaY);//该向量的长度
然后利用反三角函数计算夹角,此时需要注意角度的旋转方向
if(deltaY >0)
radian = Math.Acos((deltaX) / length);//计算与单位向量(1,0)的夹角
else
radian = -Math.Acos((deltaX) / length);//当角度超过180时则需要取反