3D Graphics/Open GL
특정 벡터를 기준으로 각도 계산하기
rajent
2008. 12. 6. 16:10
728x90
float GetPointAngle(double *base, double *point)
{
double v[3], yv[3];
float angle;
double len;
v[0] = point[0] - base[0];
v[1] = point[1] - base[1];
v[2] = point[2] - base[2];
//길이 계산.
len = sqrt( (v[0]*v[0] + v[1]*v[1] + v[2]* v[2] ) );
//normalize
v[0] /= len;
v[1] /= len;
v[2] /= len;
if (v[0] >= 0)
{
yv[0] = 0, yv[1] = 1, yv[0] = 0;
angle = acos( (v[0]*yv[0] + v[1]*yv[1] + v[2]*yv[2]) );
angle = angle/PI * 180;
}
else
{
yv[0] = 0, yv[1] = 1, yv[0] = 0;
angle = acos( (v[0]*yv[0] + v[1]*yv[1] + v[2]*yv[2]) );
angle = 360-(angle/PI * 180);
}
return angle;
}