정의

  • 크기와 방향을 가진 수학적 개체
  • 2D(x,y), 3D (x,y,z)로 표현한다.
  • 단위벡터  - 길이가 1인 벡터
  • 영벡터 - 길이가 0인 벡터
  • 정규화 - 벡터를 벡터의 길이로 나누어 1로 만든다
  • 내적 - 두 벡터가 이루는 각도를 구한다.
  • 두 개의 벡터에 수직인 벡터를 구한다.

 

 

이동

  • 매 시간(Sec)동안 위치 업데이트
    • NewPosition(Vector) = OldPosition(Vector) + (Velocity x DeltaTime)
      • Velocity : 초당 이동 값
      • DeltaTime : 프레임 당 시간(초)
        • Ex) FPS가 60일 경우, DeltaTime = 1/60 (0.01666...)
      • Tick 이벤트 내 Delta Seconds를 사용한 위치 업데이트
  • 프레임 기반 이동값
    • NewPosition(Vector) = OldPosition(Vector) + Velocity
      • 프레임 속도에 따라 이동거리가 변동될 수 있다.
      • Tick 이벤트에서 매 프레임 위치 업데이트

 

 

단위벡터 (Unit Vector)

  • 길이가 1인 벡터
  • 벡터가 가르키는 방향을 필요할 때 사용한다.
  • 언리얼에서 정규화를 통해 방향을 가져올 수 있다.
    • 블루프린트 : Normalize
    • C++ : GetSafeNormal / GetUnsafeNormal
      • GetSafeNormal : 벡터가 (0,0,0)일 경우, (0,0,0) 반환
      • GetUnsafeNormal : 벡터가 (0,0,0)일 경우, 오류 / 충돌 발생할 수 있다.
  • 캐릭터 이동, 카메라 회전, 물리엔진(힘의 방향 또는 충돌 처리)에 사용할 수 있다.

 

 

정규화 (Normalization)

  • 벡터를 벡터의 길이로 나누어 1로 만드는 것
  • 정규화 과정을 거쳐 방향만 남기게 한다
  • 본인 * (1 / 본인의 크기)
  • 벡터가 (0,0,0)일 경우 정규화가 불가능 하다.

정규화 과정

 

1. 벡터의 크기 계산

벡터의 크기 계산

2. 정규화 - 각 성분을 벡터의 크기로 나눈다.

정규화

 

 

벡터의 내적 (Dot Product)

  • 두 벡터가 이루는 각도를 구할 수있다.
  • 내적값을 통해 두 벡터 각도의 코사인 값을 구할 수 있다.
  • 정규화된 벡터의 내적 값은 -1 ~ 1 사이에 존재한다.
    • Dot > 0 : 두 벡터가 같은 방향
    • Dot < 0 : 두 벡터가 반대 방향
    • Dot = 0 : 두 벡터는 수직
  • 언리얼
    • 블루프린트 : Dot Product (V1, V2)
    • C++ : Dot ProDuct (V1, V2)
  • 캐릭터 시야각 판별 / 투사체 방향 확인 / 충돌 반사 계산 등에 사용할 수 있다.

 

내적 공식

벡터 내적

 

 

벡터의 외적 (Cross Product)

  • 두 개의 벡터에 수직인 벡터를 구하는 연산
  • 연산값은 크기와 방향을 모두 가지는 벡터값
  • A x B = -(B x A)
  • A x B = 0
    • A와 B가 평행일 경우
  • 두 벡터의 외적 크기 : 두 벡터가 만들 수 있는 평행사변형 넓이
  • 두 벡터의 외적 방향 : 오른손 법칙에 따라 방향이 결정된다.
  • 언리얼 : CrossProduct(Edge1, Edgw2)
    • FVector Edge1 : Point2 - 1;
    • FVector Edge2 : Point3 - 1;
  • 캐릭터의 회전 방향 / 카메라 업벡터 계산 등에 사용한다.

 

외적 공식

벡터 외적

 

 


https://designerd.tistory.com/entry/DirectX12-Vector

'게임수학' 카테고리의 다른 글

게임수학 - 삼각함수  (1) 2025.01.21
게임수학 - Matrix (행렬)  (0) 2025.01.13
게임수학 - 왼손좌표계, 오른손좌표계  (1) 2025.01.02

+ Recent posts