私は2点を得ました。own=(x, y, z)
とen=(x, y, z)
は、私自身の世界と他の選手の位置を表しています。もう1人のプレーヤーにはpitch
(90度から-90度)とyaw
(0から360度)があります。私は他の選手の表情と自分の位置との間の角度を計算したい。 2DでC++ベクトルとポイントの間の角度
、アルファは私が計算しようとしているものです:
int main()
{
float own_x = 1, own_y = 1, own_z = 1;
float en_x = 10, en_y = 1, en_z = 10;
float pi = 3.14159265;
float pitch = 0.f * (pi/180), yaw = 45.f * (pi/180);
float x = sin(yaw) * cos(pitch);
float y = sin(pitch);
float z = cos(pitch) * cos(yaw);
float vec_length = sqrt(pow(en_x - own_x, 2) + pow(en_y - own_y, 2) + pow(en_y - own_y, 2));
x /= vec_length;
y /= vec_length;
z /= vec_length;
float cos_t = ((en_x - own_x)*x + (en_y - own_y)*y + (en_z - own_z)*z)/sqrt(pow(en_x - own_x, 2) + pow(en_y - own_y, 2) + pow(en_y - own_y, 2));
float arc = acos(cos_t) * (180/pi);
return 0;
}
問題とは何ですか? – UnholySheep
これは正しい天使(この例では180)を与えません –
コードをデバッグしますか? cos_tの計算で – UnholySheep