220610) SRT Transform, 벡터, 내적과 외적
SRT Transform
좌표계 내 객체의 크기(Scale), 각도(Rotation), 이동(Translation)의 변환을 도와주는 행렬을 뜻한다.
위 사진은 Homogeneous 2D 좌표계에서 변환을 할 경우의 변환행렬 계산식을 나타낸 것이며, 좌표 p = [x,y,1]이 있다고 할 때(p의 3번째 원소는 상수 w), [p' = (T · R · S) · p] 꼴로 표현하여 변환된 좌표 p'를 구한다.
-----
3D에서의 Transform
3차원 좌표계의 변환행렬은 4x4 꼴로 계산한다. 이때, 변환행렬에 대한 SRT행렬 곱셈순서는 DirectX와 OpenGL 사이에서 차이가 발생한다. DirectX는 왼손 좌표계를 사용하고(p · SRT), OpenGL은 오른손 좌표계(TRS · p)를 사용하기 때문이다. 둘은 서로 전치행렬이므로 변환에 대한 결과 값은 동일하다.
DirectX에서의 3차원 회전변환 행렬은 다음과 같다.
벡터
: 방향과 크기를 나타낸 것. 앞 좌표가 원점이면 끝점값만으로 벡터를 표현할 수 있다.
벡터 합연산
: 두 벡터의 값을 합한 값. A+B일때 아래의 법칙 중 하나를 사용해 결과값 C를표현할 수 있다.
: 벡터에 실수(스칼라)를 곱한 값. 스칼라는 방향 없이 크기만을 가진 값을 뜻하며, 벡터와 곱할 경우 크기에 영향을 준다.
: 벡터와 벡터를 곱했을 때, 스칼라값으로 변하는 곱. A · B 꼴로 표현한다.
: A = (a1,a2,a3), B = (b1,b2,b3)일 때, A · B = (a1*b1, a2*b2, a3*b3)로 계산된다.
벡터의 외적(Cross Product)
: 벡터와 벡터를 곱했을 때, 벡터값을 유지하는 곱. A×B 꼴로 표현한다.
: A = (a1,a2,a3), B = (b1,b2,b3)일 때, A×B = (a2*b3-a3*b2, a3*b1-a1*b3, a1*b2-a2*b1)로 계산된다.