본문 바로가기

develop

벡터 각도, 벡터 내적 구하기.

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