1. 벡터 각도 구하기.
Vector2 A = ( 현재 위치.x , 현재 위치.y );
Vector2 B = ( 기준 위치.x , 기준 위치.y );
A -= B; // 방향 벡터를 구한다.
A.Normalize(); // 단위 벡터로 만든다.
float m_fAngle = acos( A.x ) // 단위 벡터.x 값으로 아크코사인을 구한다.
// -1부터 1, 0부터 파이 까지의 라디안 값이다.
m_fAngle *= ( 180f / 3.141592f ); // 라디안 값을 디그리 값으로 변환한다.
2. 두 벡터 각도 구하기.
Vector2 A = ( 현재 위치.x , 현재 위치.y );
Vector2 B = ( 기준 위치.x , 기준 위치.y );
A -= B; // 방향 벡터를 구한다.
A.Normalize(); // 단위 벡터로 만든다.
float m_fInnerProduct = A.x * B.x + A.y * B.y + A.z * B.z; // 내적을 구한다.
m_fInnerProduct = acos( m_fInnerProduct ); // '코사인( 각도 ) = 내적' 이기 때문에
// 내적의 아크코사인 값을 구한다.
m_fInnerProduct *= ( 180f / 3.141592f ); // 라디안 값을 디그리 값으로 변환한다.
이것 만으로는 0에서 180으로만 나온다.
0에서 360까지 아는 방법은, 외적한 벡터의 방향이 기준 벡터인 B의 왼쪽인지 오른쪽인지를 판단하면 된다.
'develop' 카테고리의 다른 글
php로 mysql 활용하기 (0) | 2014.01.15 |
---|---|
[Virtual Box] Host와 Guest 사이의 네트워크 설정하기 (0) | 2014.01.09 |
Head First SQL Chepter6 (0) | 2011.11.19 |
Head First SQL Chepter5 (0) | 2011.11.19 |
Head First SQL Chepter4 (0) | 2011.11.19 |