Programming/Game-Math

벡터 내적 공식 유도
-머릿말- 내적은 프로그래밍에 있어 가장 많이 쓰이고 중요한 연산중 하나이다. 최근에 백페이스 컬링을 위해 내적 연산을 사용했었는데, 이 외에도 정말 많은 연산에 사용된다. 오늘은 벡터 내적 공식 유도를 주제로 포스팅 한다. 간단하게 위 사진이 내적 증명의 전부인데, 핵심은 제 2코사인 법칙을 통해 증명이 된다는 점이다. 제 2 코사인 법칙을 설명하려면... 제 1코사인 법칙부터 설명해야하기에 그부터 설명해보겠습니다. 제 1 코사인 법칙 삼각형 CBA의 꼭짓점 A에서 변 BC에 직교하게끔 수선의 발을 내린 점 D를 만들었다고 가정한 후 이때, CD와 BD의 길이를 구해보자면, CD = CA cosC , BD = AB cosB가 됩니다. BC = CD + BD이므로, BC = CA cosC + AB cos..

카메라의 뷰 좌표계와 LookAt 행렬 유도
카메라의 뷰 좌표계란, 월드 좌표계에서 기준 점(X, Y, Z)로 부터 카메라를 기준으로 본 좌표계를 의미한다.

3차원 회전 행렬 구하기 by 오일러각 Input
고등학생때 2차원 회전 행렬을 응용해서 풀어야 했던 문제가 있었던게 어렴풋이 기억이 난다. 2차원 회전 행렬은 특정 각만큼 회전시켰을때 기존 좌표를 삼각함수로 연산하여 회전된 좌표를 구한 식을 행렬로 표현한 것이라고 할 수 있다. 이와 약간은 다르게 3차원 회전 행렬은 축기준으로 회전을 하게 된다. X축을 기준으로 회전하면, X값은 변치 않고 Y,Z값만 수정되며, Y축을 기준으로 회전하면, Y값은 변치 않고 X,Z값만 수정되며, Z축을 기준으로 회전하면 Z값은 변치 않고 X,Y값만 수정된다. 이때 중요한 점은 특정 축을 기준으로 회전하기에, 수정되는 좌표는 어디까지나 2개의 좌표이므로, 2차원 회전 행렬 개념을 그대로 적용해서 연산을 수행한다고 볼 수 있다. 또한 최종 연산 결과가 여러 축을 기준으로 회..

선형 변환(Linear Transformation)과 행렬(Matrix)의 관계
선형 변환(Linear Transform)은 벡터 공간에서 벡터 공간으로 가는 함수로, 그것들 중 벡터 공간의 성질을 보존하는, 선형성을 갖는 함수이다. 행렬과의 관계를 따져볼때, 선형대수학의 기본정리를 보면 행렬과 선형 변환은 본질적으로 같다는 것을 증명하며, 기능이 완전히 같아 선형 변환은 행렬로 표현해 계산할 수 있다. 즉 벡터 공간에서 벡터 공간으로 가는 선형 연산자는 행렬과 일대일 대응(벡터 공간에는 기저가 존재하고, 선형 변환이 주어지면 그것을 기저에 맞춰 행렬로 표현할 수 있음)이기에, 둘은 본질적으로 같다고 볼 수 있다.