🙇‍♀️Vector


🪐Vector

  • cosx = a
  • x = cos^-1(a)


u = (1,2), v = (3,-4)

u + v = (4,-2)
u - v = (-2,6)
-2u + v = (-2,-4) + (3,-4) = (1,-8)
  • u = (-1,3,2), v = (3,-4,1)일 때, u와 v를 정규화
    • u의 정규화 = (x/ u , y/ u , z u )
    • (-1/14^(1/2), 3/14^(1/2), 2/14^(1/2)), (3/26^(1/2), -4/26^(1/2), 1/26^(1/2))
u * v = u * v * cosX

u * v = 0이면 직각

p = projn(v) = (V*n/ n )*n/ n = (V * N)/ n ^2 * n


🪐외적

W = U X V = (Uy*Vz - UzVy, UzVx - UxVz, UxVy - UyVx)

W는 U와 V모두 직교인 벡터


  • 외적을 이용한 직교화
    • W0 = V0/ V0
    • W2 = W0*V1 / W0*V1
    • W1 = W2 * W0


🪐DirectXMath

  • XMVECTOR
  1. 지역 변수나 전역 변수에는 XMVECTOR를 사용한다.
  2. 클래스 자료 멤버에는 XMFLOAT2나 XMFLOAT3, XMFLOAT4를 사용한다.
  3. 계산을 수행하기 전에 적재 함수들을 이용해서 XMFLOATn을 XMVECTOR로 변환한다.
  4. XMVECTOR 인스턴스들로 계산을 수행한다.
  5. 저장 함수들을 이용해서 XMVECTOR를 XMFLOATn으로 반환한다.


적재 및 저장 함수

  • XMFLOAT2를 XMVECTOR에 적재
    • XMVECTOR XM_CALLCONV XMLoadFloat2(const XMFLOAT2 *pSource)
  • XMVECTOR의 자료를 XMFLOATn에 저장할 때에는 다음과 같은 함수들을 사용한다.
    • XMVECTOR를 XMFLOAT2에 저장
    • void XM_CALLCONV XMStoreFloat2(XMFLOAT2 *pDestination, FXMVECTOR v)


  • 매개변수 전달
    1. 처음 세 XMVECTOR 매갭ㄴ수에는 반드시 FXMVECTOR 형식을 지정해야 한다.
    2. 넷째 XMVECTOR 매개변수에는 반드시 GXMVECTOR 형식을 지정해야 한다.
    3. 다섯쨰와 여섯째 XMVECTOR 매개변수에는 반드시 HXMVECTOR 형식을 지정해야 한다.
    4. 그 이상의 XMVECTOR 매개변수들에는 반드시 CXMVECTOR 형식을 지정해야 한다.