Unity Chapter 5-1. C# 프로그래밍 [중급] (1/2) : 벡터

Date:     Updated:

카테고리:

태그:

인프런에 있는 이제민님의 레트로의 유니티 C# 게임 프로그래밍 에센스 강의를 듣고 정리한 필기입니다. 😀
🌜 [레트로의 유니티 C# 게임 프로그래밍 에센스] 강의 들으러 가기!


Chapter 5. C# 프로그래밍 : 중급 (1/2)

🔔 벡터 연산 기초

  • 좌표, 방향, 거리, 속도 등등을 나타낼 때 사용한다.
  • 길이방향을 갖고 있는 존재다.
  • (x, y, z) 👉 Vector3 : 3차원
  • (x, y) 👉 Vector2 : 2차원

Vector2, Vector3

UnityEngine에서 지원하는 클래스다.

  1. 위치 좌표
  2. 벡터

를 나타내는데 쓰인다.

image

  • Vector2Vector3은 두가지 쓰임새를 가진다.
    1. 위치 좌표 (= 절대좌표)를 나타낼 때.
      • 원점으로부터 얼마나 떨어져 있는지를 나타내는 위치 좌표
      • 으로 나타낼 수 있다.
      • 사실 위치좌표 또한 벡터 개념으로 볼 수 있다.
      • 원점으로부터 (a, b)로 향하는 방향으로 볼 수 있기 때문.
    2. 벡터 (= 상대좌표)를 나타낼 때.
      • 어떤 방향으로 얼만큼의 길이만큼 가는지. (소위 말하는 그 벡터 개념)
        • 출발 위치가 어딘지는 관심이 없다.
        • 화살표로 나타낼 수 있다.
        • 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)를 빼면 된다

image

(-6, -3) 벡터가 답이 되며 플레이어 위치에서 적의 위치로 가려면 \(3\sqrt{5}\) 만큼의 거리와 원점에서 (-6, -3)으로 향하는 방향으로 이동하면 된다는 정보가 된다.

  • 벡터의 출발 위치는 중요하지 않다. 오로지 얼만큼의 방향과 길이가 필요한지만 따진다. 따라서 저 보라색 화살표가 바로 정답이 되는 것이다. 저 만큼 이동하면 된다는 의미니까.

벡터의 스칼라 곱셈

image

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, 4)의 길이는 5 이므로 vec2(3, 4)의 단위 벡터는 vec2(\({3}\over{5}\), \({4}\over{5}\))가 된다.
    • vec2(3, 4) = vec2(\({3}\over{5}\), \({4}\over{5}\)) × \(5\)
      • 이렇게 벡터방향벡터 × 길이로 표현할 수 있게 되었다.


🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우 
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄

맨 위로 이동하기

Unity Lesson 1 카테고리 내 다른 글 보러가기

댓글 남기기