Unreal

2. Vector & Rotator & Trigonometry

Kelvin의 게임개발 2023. 11. 18. 11:50
728x90
반응형

1. Vector

 

X,Y2차원 평면에서 시작점과 끝점이 있는 화살표를 2차원 벡터라고 부른다 (시작점(5,5), 끝점(20,20))

 

벡터는 방향과 크기를 가진다 (Direction, Magnitude) 이때 크기는 벡터의 길이다

 

위의 벡터는 (15,15)로 나타낼 수 있다 (시작점에서 끝점까지 X15, Y15 이동이 필요하기 때문이다)) 이를 쉽게 계산하기 위해서는 끝점의 X와 시작점의 X를 빼고 끝점의 Y와 시작점의 Y를 빼주면 된다

 

이 두개의 벡터는 같은 벡터이다 (벡터는 크기와 방향에 의해서만 정의되기 때문이다)

 

시작점과 끝점이 반대가 되면 벡터의 축 부호를 반대로 해주면 된다

ex) 위의 벡터가 반대로 된다면 (-5,-10)이 된다

 

3차원 벡터도 2차원 벡터 계산과 같은 방식으로 가능하다 (각 좌표별 끝점 – 시작점들이 벡터가 된다)

 

마찬가지로 시작점과 끝점이 반대가 된다면 x,y,z축 부호를 반대로 써주면 된다

((-4, -3, 7)이 된다)

 

 

2. Vector Operation

 

벡터에는 스칼라 곱셈/나눗셈이 가능하다

ex) V1(1, 2, 3) 2를 곱하면 각 축의 값들이 2씩 곱하면 된다 -> 2V1 = (2, 4, 6)

(나누기도 마찬가지로 각 축의 값들을 스칼라 값으로 나눠주면 된다)

 

벡터는 벡터와의 덧셈/뺄셈이 가능하다

ex) V1(1, 2, 3) + V2(2, 3, 4) = V3(3, 5, 7)이 된다 두 벡터의 각 축의 값들을 서로 더해주면 된다

(뺄셈도 마찬가지로 두 벡터의 각 축의 값들을 서로 빼주면 된다)

 

벡터와 벡터의 덧셈과 뺄셈을 기하학적으로 보면 다음과 같은 그림이 나온다

 

위와 같이 V1의 끝점이 V2의 시작점인 벡터 두개를 더하면 V1의 시작점과 V2의 끝점을 잇는 벡터가 나온다

 

위와 같이 V1의 끝점이 -V2의 시작점인 벡터 두개를 더하면 V1의 시작점과 V2의 끝점을 잇는 벡터가 나온다

 

이를 3차원 벡터에도 같은 방식으로 적용이 가능하다

 

UE에서 액터의 위치를 나타내는 3차원 벡터인 위치벡터(LocationVector)는 0,0,0에서 시작하여 액터의 위치까지 이은 벡터이다

(0,0,0에서 시작하여 검은점인 (2,2,0) 까지의 벡터이기 때문에 검은 점의 위치 벡터는 (2,2,0)이 되는것이다)

 

이때 검은점에서 빨간점까지의 벡터는 (3,0,2)가 나온다

빨간점의 위치벡터를 알기 위해서는 (0,0,0)에서 빨간점까지의 벡터를 구해야 한다 이는 위의 공식을 사용하여 (0,0,0)에서 검은점까지의 벡터와 검은점부터 빨간점까지의 벡터를 더해주면 대각선으로 벡터가 나오게 되기 때문에 위치벡터를 구할 수 있게 되는것이다 -> (5,2,2)가 나오게 된다

 

 

3. Vector Magnitude

 

2차원 벡터의 길이는 피타고라스 정리로 계산이 가능하다

 

따라서 이러한 V1(3, 4) 벡터의 길이는 5가 된다

V1(x, y) 일 경우 x제곱 + y제곱 = 길이의 제곱이다

 

3차원 벡터 같은 경우

이렇게 벡터의 길이를 구할 수 있다

 

 

4. Vector Normalize

 

벡터의 크기가 1인 벡터를 단위벡터 (Unit Vector) 라고 부른다

 

단위벡터를 구하는 방법은 벡터를 벡터의 길이(크기) 만큼 나눠주면 된다

ex) V1(x, y)이고 V1의 크기가 10이라면 V1(x/10, y/10)이 단위벡터가 된다

 

이렇게 방향은 그대로지만 벡터의 길이를 1로 만드는 것을 정규화라고 한다 (Normalize) (벡터를 계산할 때 크기는 제외하고 방향만 고려하고 싶을 때 사용한다 방향만 고려하면 되기 때문에 벡터 연산을 단순하게 해줄 수 있다)

ex) Unreal 방향 벡터

 

 

5. Rotator

 

Unreal에서 X축 방향은 forward vector, Y축 방향은 Right Vector, Z축 방향은 Up Vector가 된다

 

RotatorX,Y,Z 대신 Pitch, Yaw, Roll을 사용한다 PitchY, YawZ, RollX축이다

728x90
반응형

'Unreal' 카테고리의 다른 글

6. Moving Object & Trig Function(삼각함수)  (131) 2023.12.08
5. Actor Class & Debug(2)  (42) 2023.12.05
4. Actor Class & Debug(1)  (1) 2023.12.05
3. Reflection System  (1) 2023.11.18
1. Getting Start Unreal Engine  (2) 2023.11.18