Unity Chapter 5-1. C# 프로그래밍 [중급] (1/2) : 벡터
카테고리: Unity Lesson 1
태그: C Sharp Math Unity Game Engine
인프런에 있는 이제민님의 레트로의 유니티 C# 게임 프로그래밍 에센스 강의를 듣고 정리한 필기입니다. 😀
🌜 [레트로의 유니티 C# 게임 프로그래밍 에센스] 강의 들으러 가기!
Chapter 5. C# 프로그래밍 : 중급 (1/2)
🔔 벡터 연산 기초
- 좌표, 방향, 거리, 속도 등등을 나타낼 때 사용한다.
- 길이와 방향을 갖고 있는 존재다.
- (x, y, z) 👉
Vector3
: 3차원 - (x, y) 👉
Vector2
: 2차원
Vector2, Vector3
UnityEngine
에서 지원하는 클래스다.
- 위치 좌표
- 벡터
를 나타내는데 쓰인다.
Vector2
와Vector3
은 두가지 쓰임새를 가진다.- 위치 좌표 (= 절대좌표)를 나타낼 때.
- 원점으로부터 얼마나 떨어져 있는지를 나타내는 위치 좌표
점
으로 나타낼 수 있다.- 사실 위치좌표 또한
벡터
개념으로 볼 수 있다.
- 원점으로부터 (a, b)로 향하는 방향으로 볼 수 있기 때문.
- 벡터 (= 상대좌표)를 나타낼 때.
- 어떤 방향으로 얼만큼의 길이만큼 가는지. (소위 말하는 그 벡터 개념)
- 출발 위치가 어딘지는 관심이 없다.
화살표
로 나타낼 수 있다.- Vector2(1, 1) + Vector2(-3, 3) = Vector2(2, 4)
- Vector2(1, 1) : 위치 좌표 (출발 위치)
- Vector2(-3, 3) : 벡터
- \(3\sqrt{2}\) 길이 만큼
- 상대적으로 x 방향으로 -3, y 방향으로 3 만큼 더 갈 것이다.
- Vector2(2, 4) : 위치 좌표 (도착 위치)
- 어떤 방향으로 얼만큼의 길이만큼 가는지. (소위 말하는 그 벡터 개념)
- 위치 좌표 (= 절대좌표)를 나타낼 때.
벡터의 크기(= 길이) : Magnitude
- 벡터의 크기(길이)
- Magnitude
- 선의 실제 길이
벡터
개념으로서의 Vector2(-4, 3)값이 있다면 이 벡터의 길이는 \(\sqrt{(-4)^2 + 3^2} = 5\) 이다.- 실제 이동하는
거리
는5
이고 상대적으로 (-4, 3)의방향
으로 간다고 보면 된다.
- 실제 이동하는
- ‘거리’에 대응될 수 있음.
벡터의 덧셈
\[시작 위치좌표 + 벡터 = 도착 위치좌표\]
어떤 절대적 위치 좌표에서 벡터만큼 이동한다는 것을 의미한다.
- Vector2(1, 1) + Vector2(-3, 3) = Vector2(2, 4)
- Vector2(1, 1) : 위치 좌표 (출발 위치)
- Vector2(-3, 3) : 벡터
- \(3\sqrt{2}\) 길이 만큼
- 상대적으로 x 방향으로 -3, y 방향으로 3 만큼 더 갈 것이다.
- Vector2(2, 4) : 위치 좌표 (도착 위치). 덧셈 결과!
- Vector2(1, 1) 점 에서 Vector2(-3, 3) 벡터 만큼 움직여서 Vector2(2, 4) 점 에 도달하는 개념과 같다.
벡터의 뺄셈
내 현재 위치에서 얼마만큼(= 벡터) 도달해야 저 위치에 도달할 수 있을까?
\[목적지 위치좌표 - 현재 위치좌표 = 벡터**\]
ex)
플레이어 위치를 (2, 4)
라고 하고 적의 위치를 (-4, 1)
이라고 하자. 플레이어가 적의 위치로 가고 싶을 때 얼만큼 어느 방향으로 가야 하는지( = 벡터
)를 알기 위해선 적의 위치(-4, 1)에서 플레이어의 위치(2, 4)를 빼면 된다
(-6, -3) 벡터가 답이 되며 플레이어 위치에서 적의 위치로 가려면 \(3\sqrt{5}\) 만큼의 거리와 원점에서 (-6, -3)으로 향하는 방향으로 이동하면 된다는 정보가 된다.
- 벡터의 출발 위치는 중요하지 않다. 오로지 얼만큼의 방향과 길이가 필요한지만 따진다. 따라서 저 보라색 화살표가 바로 정답이 되는 것이다.
저 만큼
이동하면 된다는 의미니까.
벡터의 스칼라 곱셈
A 벡터와 B 벡터가 방향은 동일한데 A벡터의 크기가 B벡터의 크기보다 k 배 크다면 \(\vec{A} × k = \vec{B}\) 이렇게 벡터의 스칼라 곱셈으로 나타낼 수 있다.
방향 벡터 (= 단위 벡터)
\[방향 벡터 = (벡터의 각 성분 / 벡터의 길이)\]
- 6cm는
1cm × 6
으로 표현한다. 6cm를1.5cm × 4
라고 하지는 않는다. 1cm가단위
이기 때문이다. - 벡터 또한 딱
길이가 1이며 방향만 나타내는 벡터
를 단위 벡터로 하여단위 벡터(방향) × 길이
만으로 나타낼 수 있다. 단위 벡터
는 길이가 1이며 오로지 방향만 나타낸다. 그래서방향 벡터
라고도 한다.방향벡터
는 해당 벡터와의 방향은 동일하나 길이는 1인 벡터이다.- 즉 온전히 해당 벡터의 *방향*을 뜻한다.
ex)
- vec2(-3, 3)의
길이
는 \(3\sqrt{2}\)이므로 vec2(-3, 3)의단위 벡터
는 vec2(\({-3}\over{3\sqrt{2}}\), \({3}\over{3\sqrt{2}}\))이 된다.- vec2(-3, 3) = vec2(\({-3}\over{3\sqrt{2}}\), \({3}\over{3\sqrt{2}}\)) × \(3\sqrt{2}\)
- 이렇게
벡터
를방향벡터 × 길이
로 표현할 수 있게 되었다.
- 이렇게
- vec2(-3, 3) = vec2(\({-3}\over{3\sqrt{2}}\), \({3}\over{3\sqrt{2}}\)) × \(3\sqrt{2}\)
- vec2(3, 4)의
길이
는 5 이므로 vec2(3, 4)의단위 벡터
는 vec2(\({3}\over{5}\), \({4}\over{5}\))가 된다.- vec2(3, 4) = vec2(\({3}\over{5}\), \({4}\over{5}\)) × \(5\)
- 이렇게
벡터
를방향벡터 × 길이
로 표현할 수 있게 되었다.
- 이렇게
- vec2(3, 4) = vec2(\({3}\over{5}\), \({4}\over{5}\)) × \(5\)
🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄
댓글남기기