본문 바로가기
3D Algorithm

사이각 벡터 계산

by DarkRock 2024. 3. 8.
반응형

 

두 벡터의 사이각 계산은 아래글을 통해 설명을 했었습니다.

2024.01.17 - [3D Algorithm] - 두 벡터 사이각(내적, 외적 활용)

 

두 벡터 사이각(내적, 외적 활용)

두 벡터의 내적은 아래 식과 같이 벡터 a, b가 있을 때, 두 벡터 길이(||a||, ||b||)와 코사인 곱으로 구할 수 있습니다. 참고로 벡터 길이는 3차원을 예로 들었을 때 x제곱, y제곱, z제곱의 수치들을 모

darkrock.tistory.com

 

이번 글은 아래 그림과 같이 벡터 AC와 CB를 알고 A 각을 알고 있을 때 AB에 해당하는 벡터를 계산하는 식을 알려드리겠습니다. 

출처:wiki

 

사실 벡터 AC와 A각을 알면 AB에 해당하는 벡터를 계산할 수 있습니다. 백터 AB를 계산하기 위해 CB의 벡터를 계산해야 하는데 2차원에서 CB 벡터는 
벡터 AC: x, y 이면
벡터 CB: -y, x 가 되고,

3차원에서는 AC 벡터와 사용자 view 벡터의 외적을 하면 벡터 CB를 계산할 수 있습니다. AC 벡터와 사용자 view 벡터로 이루어진 평면의 법선 벡터가 CB라고 보시면 이해하실 거라 생각합니다.

 


이렇게 벡터 AC, CB를 알고 A의 사이각을 알 때 벡터 AB는 다음과 같은 식을 이용하여 계산할 수 있습니다.
AB = AC*cos(θ) + CB*sin(θ)

벡터 AC, CB는 길이가 1인 단위벡터로 계산하셔야 합니다. 벡터 AB가 구해지면 B에 위치는 임의의 길이 l에 의해 다음과 같이 계산됩니다.

B = A + AB*l

 

간단하게 3차원 상에서 예를 들어,

벡터 AC(1,0,0), CB(0,1,0) 일 때 A 각 30도일 때를 계산해 보면, 

이 경우는 view direction은 (0,0,1)로 계산이 될 것입니다. 외적 계산 순서에 의해 (0,0,-1)로 계산 될 수도 있습니다.

 

AB = (1,0,0) * cos(30) + (0,1,0) * sin(30)

이 식을 계산하면 벡터 AB는 대략 (0.866, 0.5, 0.0)으로 계산이 됩니다.

반응형