1 minute read

glm 기능들

사칙연산

  • 벡터 간 더하기 빼기

to_string(vec3 v)

벡터 스칼라 곱

length(vec3 v)

  • 벡터 v의 길이

normalize(vec3 v)

  • v의 unit vector
  • 길이가 0.0인 벡터인 경우 에러 발생 가능

dot(vec3 v1, vec3 v2)

  • 벡터의 dot product
  • dot product의 결과는 스칼라

cross(vec3 v1, vec3 v2)

  • 벡터의 cross product
  • cross product의 결과는 벡터
  • cross product 결과의 길이를 2로 나누면 세 점을 이은 삼각형의 넓이

vec4(vec3 v, 1.0f)

  • vec3를 이용한 vec4 초기화

vec3 초기화

  • vec3 v = {1.0f, 2.0f, 3.0f};
  • vec3 v2 = vec3(1.0f);

vec3 멤버변수

  • x, y, z
  • r, g, b
  • 인덱싱 0~2

DirectXMath

  • smd 가속에 맞춰져 있어 빠르다.

개요

포인트와 벡터

  • point는 4번째 원소가 1.
  • vector는 4번째 원소가 0.
  • 따라서 포인트 + 벡터 = 포인트, 포인트 - 포인트 = 벡터

행렬

  • glm 행렬은 comlumn-major matrix 이다.
    • dx는 row-major matrix
  • mat2 mat3, mat4 타입으로 선언한다
  • 초깃값은 identity matrix
  • 전치행렬
    • transpose
  • 역행렬
    • inverse
  • 이동
    • translate(vec3)
      • vec3만큼 이동하는 행렬 생성
  • 회전 행렬
    • rotate(radian, vec3);
    • vec3를 회전 축으로 radian만큼 회전
  • 크기 변환
    • scale(vec3)

알아 두기

  • 회전행렬의 transpose는 역행렬과 같다.
  • 벡터의 회전에서 행렬의 translate 부분은 (0.0,0.0,0.0,1.0)으로 초기화 해주어야 한다.

개요

XMVector

  • SIMD 가속을 받기 좋은 형태
  • 그래서 연산 전 XMVector로 변환해주고 연산함

simplemath

  • xmvector로 변환하고 다시 변환하는 과정이 미리 구현되어 편하게 사용 가능

기능들

  • Matrix namespace
    • CreateScale()
    • CreateRotationY()
    • CreateRotationX()
    • CreateTranslation()
  • 행렬 메서드
    • Translation(Vector3)
    • Invert()
    • Transpose()
  • Vector
    • Normalize()
  • Vector4 namespace
    • Transform(point, matrix)

Leave a comment