선형 변환이 행렬에 의해 표현될 수 있는 유일한 것은 아닙니다. n-차원 유클리드 공간 Rn에서 비-선형인 일부 변환은 n+1-차원 공간 Rn+1에서 선형 변환으로 나타낼 수 있습니다. 여기에는 (평행이동과 같은) 아핀 변환과 투영 변환이 모두 포함됩니다. 이러한 이유로, 4×4 변환 행렬은 3D 컴퓨터 그래픽에서 널리 사용됩니다. 이들 n+1-차원 변환 행렬은, 그것들의 응용에 따라, 아핀 변환 행렬(affine transformation matrices), 투영 변환 행렬(projective transformation matrices), 또는 보다 일반적으로 비-선형 변환 행렬(non-linear transformation matrices)이라고 불립니다. n-차원 행렬에 관해, n+1-차원 행렬은 증가된 행렬(augmented matrix)로 설명될 수 있습니다.
여전히, 구성 요소가 대각 행렬을 형성하고, 따라서, 곱셈 복잡도가 n으로 감소하는 연산자에 대한 특별한 기저가 있습니다. 대각선이라는 것은 를 제외한 모든 계수 가 영이고 위의 합 에서 한 항만 남기는 것을 의미합니다. 살아남은 대각선 원소 는 고윳값(eigenvalues)으로 알려져 있고 정의 방정식에서 로 지정되어, 로 줄어듭니다. 결과 방정식은 고윳값 방정식(eigenvalue equation)으로 알려져 있습니다.[5]고유벡터와 고윳값은 특성 다항식을 통해 유도됩니다.
원점을 고정된 상태로 유지하는 가장 공통적인 기하적 변환(geometric transformations)은 회전, 스케일링, 전단, 반사, 및 직교 투영을 포함하여 선형입니다; 만약 아핀 변환이 순수한 변환이 아니면, 그것은 일부 점을 고정되게 유지하고, 해당 점은 변환을 선형으로 만들기 위해 원점으로 선택될 수 있습니다. 2-차원에서, 선형 변환은 2×2 변환 행렬을 사용하여 나타낼 수 있습니다.
Stretching
xy-평면에서 늘리기(stretch)는 특정 방향에서 모든 거리를 일정한 비율로 확대하지만 수직 방향에서 거리에 영향을 미치지 않는 선형 변환입니다. 우리는 x-축과 y-축을 따라 늘어나는 것만 고려합니다. x-축을 따라 늘리기는 일부 양의 상수 k에 대해 x' = kx; y' = y 형식을 가집니다. (만약 k > 1이면, 이것은 실제로 "늘리기"이고, k < 1이면 기술적으로는 "압축"이지만 여전히 눌리기라고 부름에 주목하십시오. 역시, k = 1이면, 그 변환은 항등이며, 즉, 효과가 없습니다.)
x-축을 따라 인수 k에 의한 늘리기와 결합된 행렬은 다음과 같이 제공됩니다:
유사하게, y-축을 따라 인수 k에 의한 늘리기는 x' = x; y' = ky 형식을 가지므로, 이 변환과 결합된 행렬은 다음과 같습니다:
Squeezing
만약 위의 두 늘리기가 역수 값과 결합되면, 변환 행렬은 압착 매핑(squeeze mapping)을 나타냅니다:
축에 평행한 변을 갖는 정사각형은 정사각형과 같은 넓이를 갖는 직사각형으로 변환됩니다. 역수 늘리기와 압축은 넓이를 불변으로 둡니다.
Rotation
원점에 대한 반-시계-방향(counterclockwise, 양의 방향) 각도 θ만큼 회전(rotation)에 대해, 함수형 형식은 와 입니다. 행렬 형식으로 쓰면, 이것은 다음이 됩니다:[6]
마찬가지로 원점에 대한 시계-방향(clockwise, 음의 방향) 회전에 대해, 함수형 형식은 와 입니다. 행렬 형식은 다음과 같습니다:
평면 (원점을 통과함)을 통해 점을 반사하기 위해, 를 사용할 수 있으며, 여기서 는 3×3 항등 행렬이고 은 평면의 법선인 벡터에 대해 3-차원 단위 벡터(unit vector)입니다. 만약 , , 및 의 L2 노름이 단위이면, 변환 행렬은 다음과 같이 표현될 수 있습니다:
만약 A와 B가 두 선형 벡터의 행렬이면, 먼저 A를 적용하고 그 다음 B를 열 벡터 에 적용하는 효과는 다음에 의해 제공됩니다:
다시 말해서, A 다음에 B와 같이 조합된 변환의 행렬은 단순히 개별 행렬의 곱입니다.
A가 역-가능 행렬(invertible matrix)일 때, A를 "취소"하는 변환을 나타내는 행렬 A−1이 있는데, 왜냐하면 A와의 합성이 항등 행렬(identity matrix)이기 때문입니다. 일부 실제 응용에서, 반전은 일반적인 반전 알고리듬을 사용하거나 (반대 방향으로 회전하는 것과 같은 명확한 기하학적 해석을 가지는) 역 연산을 수행하고 그런-다음 역순으로 그것들을 합성함으로써 계산될 수 있습니다. 반사 행렬은 자체의 역이고 별도로 계산할 필요가 없기 때문에 특별한 경우입니다.
Other kinds of transformations
Affine transformations
Effect of applying various 2D affine transformation matrices on a unit square. Note that the reflection matrices are special cases of the scaling matrix.Affine transformations on the 2D plane can be performed in three dimensions. Translation is done by shearing parallel to the xy plane, and rotation is performed around the z axis.
모든 보통의 선형 변환은 아핀 변환의 집합에 포함되고, 단순화된 형식의 아핀 변환으로 설명될 수 있습니다. 그러므로, 임의의 선형 변환은 역시 일반 변환 행렬로 나타낼 수 있습니다. 후자는 해당 선형 변환 행렬을 한 행과 열만큼 확장하고, 1로 설정되어야 하는 아래-오른쪽 모서리를 제외하고 여분의 공간을 0으로 채워서 얻습니다. 예를 들어, 위에서 반-시계방향회전 행렬(counter-clockwiserotation matrix)은 다음이 됩니다:
동차 좌표를 포함하는 변환 행렬을 사용하여, 평행이동이 선형이 되고, 따라서 다른 모든 유형의 변환과 매끄럽게 혼합될 수 있습니다. 그 이유는 실수 평면이 실수 투영 공간에서 w = 1 평면에 매핑되고, 따라서 실수 유클리드 공간에서의 변환이 실수 투영 공간에서 전단으로 표현될 수 있기 때문입니다. 비록 평행이동은 데카르트 좌표에 의해 설명되는 2-D 또는 3-D 유클리드 공간에서 비-선형 변환이지만 (즉, 교환성 및 다른 속성을 보존하면서 다른 변환과 결합될 수 없음), 그것은, 동차 좌표에 의해 3-D 또는 4D 투영 공간에서, 단순 선형 변환 (전단)이 됩니다.
더 많은 아핀 변환은 둘 이상의 아핀 변한의 합성에 의해 얻을 수 있습니다. 예를 들어, 벡터 를 갖는 평행이동 T', 반-시계방향 각도 θ만큼 회전 R, 인수 를 갖는 스케일링 S, 및 벡터 의 변환 T가 주어졌을 때, T'RST의 결과 M은 다음과 같습니다:[8]
아핀 변환을 사용할 때, 좌표 벡터의 동차 구성 요소 (통상적으로 w라고 함)는 절대 변경되지 않습니다. 따라서 항상 1이라고 안전하게 가정하고 무시할 수 있습니다. 어쨌든, 이것은 원근 투영을 사용할 때 참이 아닙니다.
Comparison of the effects of applying 2D affine and perspective transformation matrices on a unit square.
3D 컴퓨터 그래픽에서 중요한 또 다른 변환 유형은 원근 투영(perspective projection)입니다. 평행 투영이 평행 직선을 따라 이미지 평면 위로의 점을 투영하기 위해 사용되고, 반면에 원근 투영은 투영의 중심이라고 불리는 단일 점에서 나오는 직선을 따라 이미지 평면 위로의 점을 투영합니다. 이것은 대상이 투영의 중심에서 멀리 떨어져 있을 때 더 작은 투영을 갖고 더 가까울 때 더 큰 투영을 가짐을 의미합니다 (역수 함수(reciprocal function) 참조).
가장 간단한 원근 투영은 원점을 투영의 중심으로 사용하고, 에서 평면을 이미지 평면으로 사용합니다. 이 변환의 함수형 형식은 그때에 ; 입니다. 이것을 동차 좌표(homogeneous coordinates)로 다음과 같이 표현할 수 있습니다:
행렬 곱셈(matrix multiplication)을 수행한 후, 동차 구성 요소 는 의 값과 같을 것이고 다른 세 개는 변하지 않을 것입니다. 그러므로, 실수 평면으로 다시 매핑하려면, 각 구성 요소를 로 나눔으로써 동차 분할(homogeneous divide) 또는 원근 분할(perspective divide)을 수행해야 합니다:
이미지 평면과 투영의 중심을 원하는 곳으로 이동하기 위해 이것을 회전, 스케일, 평행이동, 및 전단과 조합함으로써 더 복잡한 원근 투영을 구성할 수 있습니다.