Affine Transformations 은 선형 변환과 이동 변환이 결합된 변환이다. 직선을 직선으로 유지하지만, 평행선이 보장되지 않을 수 있다. 선형 변환에 비해 더 일반적인 변환이며, 그래픽스에서 많이 사용된다.
- 3차원에 대한 아핀 변환은 4x4 행렬로 표현된다.
⎣⎢⎢⎢⎡a11a21a310a12a22a320a13a23a330txtytz1⎦⎥⎥⎥⎤
- 여기서 aij는 선형 변환을 담당하고, tx,ty,tz는 이동 변환이다.
Affine Transformations (아핀 변환) 은 Linear Transformations (선형 변환) 과 Translations (평행 이동)의 조합으로 이루어진다.
- 아핀 변환은 직선을 직선으로 변환한다. 즉, 아핀 변환을 적용하더라도 직선은 휘어지지 않고 그대로 직선으로 남는다.
- 아핀 변환은 평행한 선을 여전히 평행하기 유지한다. 두 직선이 변환전에 평행했다면, 변환 후에도 여전히 평행 관계를 유지한다.
- 아핀 변환은 한 직선 위의 거리 비율을 유지한다. 즉, 직선 위에 있는 두 점 간의 상대적인 거리는 변하지 않지만, 전체적인 거리는 변할 수 있다.
- 아핀 변환은 절대적인 거리와 각도를 보존하지 않는다. 즉, 변환을 통해 도형의 크기나 두 직선 사이의 각도는 변할 수 있다. 회전하거나 크기를 확대/축소 하는 경우가 이에 해당한다.
2D Rotation
⎝⎜⎛x′y′1⎠⎟⎞=⎝⎜⎛cosθsinθ0−sinθcosθ0001⎠⎟⎞⎝⎜⎛xy1⎠⎟⎞
2D Scaling
⎝⎜⎛x′y′1⎠⎟⎞=⎝⎜⎛sx000sy0001⎠⎟⎞⎝⎜⎛xy1⎠⎟⎞=⎝⎜⎛sxxsyy1⎠⎟⎞
2D Shear
⎝⎜⎛x′y′1⎠⎟⎞=⎝⎜⎛100d10001⎠⎟⎞⎝⎜⎛xy1⎠⎟⎞=⎝⎜⎛x+dyy1⎠⎟⎞
2D Reflection
⎝⎜⎛x′y′1⎠⎟⎞=⎝⎜⎛1000−10001⎠⎟⎞⎝⎜⎛xy1⎠⎟⎞=⎝⎜⎛x−y1⎠⎟⎞
2D Translation
⎝⎜⎛x′y′1⎠⎟⎞=⎝⎜⎛100010txty1⎠⎟⎞⎝⎜⎛xy1⎠⎟⎞=⎝⎜⎛x+txy+ty1⎠⎟⎞
3D Rotation
x-rotation
⎝⎜⎜⎜⎛x′y′z′1⎠⎟⎟⎟⎞=⎝⎜⎜⎜⎛10000cosθsinθ00−sinθcosθ00001⎠⎟⎟⎟⎞⎝⎜⎜⎜⎛xyz1⎠⎟⎟⎟⎞
y-rotation
⎝⎜⎜⎜⎛x′y′z′1⎠⎟⎟⎟⎞=⎝⎜⎜⎜⎛cosθ0−sinθ00100sinθ0cosθ00001⎠⎟⎟⎟⎞⎝⎜⎜⎜⎛xyz1⎠⎟⎟⎟⎞
z-rotation
⎝⎜⎜⎜⎛x′y′z′1⎠⎟⎟⎟⎞=⎝⎜⎜⎜⎛cosθsinθ00−sinθcosθ0000100001⎠⎟⎟⎟⎞⎝⎜⎜⎜⎛xyz1⎠⎟⎟⎟⎞
2D Pivot-Point Rotation
- Rotation with respect to a pivot point (x,y)
T(x,y)⋅R(θ)⋅T(−x,−y)=⎝⎜⎛100010xy1⎠⎟⎞⋅⎝⎜⎛cosθsinθ0−sinθcosθ0001⎠⎟⎞⋅⎝⎜⎛100010−x−y1⎠⎟⎞=⎝⎜⎛cosθsinθ0−sinθcosθ0x(1−cosθ)+ysinθy(1−cosθ)−xsinθ1⎠⎟⎞
Scaling Direction
- Scaling along an arbitrary axis
R−1(θ)⋅S(sx,sy)⋅R(θ)