Вы можете получить угол, который описывает вращение каждого вектора, используя обратную касательную отношения между y и x (при условии, что вы хотите получить угол на плоскости Oxy).Затем вы можете просто вычесть угол одного вектора к другому:
atan2(vector1.y, vector1.x)-atan2(vector2.y, vector2.x)
, где atan2
обычно определяется как
atan2(y, x) {
if(x==0) {
if(y<0) {
return PI/2;
} else {
return -PI/2;
} else {
angle=atan(y/x);
if(x<0 && y>=0) {
angle+=PI
} else if(x<0 && y<0) {
angle-=PI
}
return angle;
}
}
, возвращая угол между -PI иЧИСЛО ПИ;таким образом, он охватывает весь круг, а не только половину.