기초 수학 — 직접 구현
그래픽스의 모든 것은 벡터와 행렬 위에 서 있습니다. 이 장은 Vec3·Mat4를 비롯한 수학 도구를 C++로 직접 구현하며 내부 동작을 손으로 확인한 뒤, 실무 표준인 DirectXMath로 넘어갑니다. 각 주제를 코드 한 줄·성분 하나까지 파고드는 별도 페이지로 나눠 두었습니다. 순서대로 읽는 것을 권합니다.
규약
이 가이드는 D3D 규약으로 통일합니다: 행벡터
v' = v * M(HLSL mul(v, M)),
행렬은 행 우선 저장, 왼손 좌표계, 클립 공간 z 범위 [0, 1].
OpenGL/GLM(열벡터)과 곱 순서가 반대이니 다른 자료를 그대로 옮기지 마세요.
세부 페이지
1 / 6
벡터 — Vec3
위치·방향·색을 담는 3차원 벡터. 덧셈·스칼라곱·내적·외적·길이·정규화를 성분 하나까지 해부.
구조체 · 연산자 오버로딩 · dot · cross · length · normalize
2 / 6
행렬 — Mat4
4×4 행렬을 행 우선으로 저장하고 항등·곱셈·전치를 구현. cbuffer 업로드와 전치의 이유까지.
행 우선 저장 · identity · 행렬 곱 · transpose · cbuffer
3 / 6
좌표계와 변환
이동·크기·회전 행렬을 직접 만들고 곱 순서가 결과를 바꾸는 이유, 동차좌표(w) 의미를 파고듭니다.
translate · scale · rotate · 곱 순서 · 동차좌표 · S*R*T
4 / 6
내적 · 외적의 실전 활용
사잇각·투영·삼각형 법선·2D 감김 부호를 코드로. 내적/외적이 실제로 어디에 쓰이는지.
angleBetween · projectOnto · triangleNormal · cross2D
5 / 6
삼각함수
도↔라디안 변환, sin/cos로 2D 회전과 공전(orbit)을 구현. deltaTime 기반 애니메이션까지.
라디안 · rotate2D · orbitPosition · deltaTime
6 / 6
선형대수와 기하학
피킹·충돌의 핵심: 무게중심 점-삼각형 판정, 레이-평면, 레이-구 교차를 이차방정식으로.
barycentric · rayPlane · raySphere · picking · 엡실론