그래픽스/DX11

D3D11 선형 변환(Linear Transformation) - 동차성과 가법성

뽀또치즈맛 2024. 12. 12. 00:00

 
선형 변환에서 변환은 그래픽스에서 뭘까? 뭐가 될 수 있을까?
변환이란 어떠한 함수라고 생각해보자.
 

 
그렇게 되면 위와 같은 식이 전개가 된다.
그럼 이 Tau가 어떤 함수인가에 따라,
Scaling이 되기도 하고, Rotation이 되기도 한다.
 

 
 

이 두 가지 사례를 만족하는 것이 선형 변환이다.
그렇다면 선형 변환이 아닌 경우는 뭘까?
 
이처럼 동차성과 가법성을 만족해야만 하는 것이 선형 변환이다.
 

선형 변환이 아닌 경우

 
예를 들어 tau라는 변환이 x,y,z를 넣었을 때,
x,y,z를  x^2, y^2, z^2인 경우
 
왜 선형 변환이 아닐까?
~이 아닌 경우를 찾을 때는 그에 대한 반례를 찾으면 된다.
 
k가 2라고 하고, 

해당 식을 전개하면 다음과 같은 결과값이 나온다.
1,2,3에다가 2를 각각 곱하면
2,4,6은 4,16,36이 된다.
 
k=2인 상태에서 반대로 
괄호 밖에서 곱해주면 다음과 같은 식이 전개된다.

 
이 변환은 2번째 조건을 만족하지 못했기 때문에 선형변환이라 할 수 없다.
 
왜 선형변환이라 할 수 없을까?
동차성 조건을 만족하지 않기 때문이다.
동차성 조건은 선형 변환의 기본적인 성질 중 하나로,
변환 Tau가 다음 조건을 만족해야 함을 의미한다.

 
여기서 k는 임의의 스칼라(숫자)를 뜻하고,
u는 벡터를 의미한다.
 
이 조건은 선형 변환이 스칼라 곱과 호환된다는 것을 나타낸다.
즉, 벡터 u에 k를 곱한 후 변환한 결과와 u를 변환한 후 결과에 
k를 곱한 것이 같아야 한다.
 

 
이는 동차성 조건 검증을 뜻한다.
k = 2라고 하고, u = (1,2,3)으로 설정한다.
Tau(ku)와 kTau(u)를 계산한다.
 
첫 번째 계산 (t(ku)) :

두 번째 계산

즉 이러한 계산은

라는 결과에 도달하기 때문에 이를 식으로 전개하면

라는 것과 같다. 이는 동차성 조건을 만족하지 않는다.

따라서, 위 변환 함수는 선형 변환이 될 수 없다.
 

예시로 이해하기

주어진 변환:


1. ku를 변환한 경우:
u = (1,2,3)이고 k=2라고 하면,

2. u를 변환한 뒤 kkk를 곱한 경우:

3. 비교 :

즉 동차성 조건을 만족하지 않는다.
 

요약

동차성 조건이란, 변환 τ가 스칼라 곱에 대해 선형적으로 작동해야 한다는 것
그러나 주어진 변환 τ(x,y,z)=(x2,y2,z2) τ(x, y, z) = (x^2, y^2, z^2)는
동차성 조건을 만족하지 않으므로 선형 변환이 아니다.
 
다음과 같은 반례를 통해 선형 변환이 아님을 확인할 수 있다.

 
 

선형 변환 예시

 
그럼, 선형 변환이 아닌 경우도 봤으니
선형 변환인 경우도 살펴보자.

앞서 말했듯이 동차성의 원리를 만족해야 한다고 했다.
즉, 두 가지 조건을 다 만족해야 한다는 뜻이다.
 
이를 증명하기 위해서 기호를 그대로 전개하였음에도
 
스칼라 k에 대해 u=(ux,uy,uz)u = (ux, uy, uz)u=(ux,uy,uz)일 때 :

 

 

따라서 동차성을 만독한다.
 
가법성은 선형 변환의 두 가지 핵심 조건 중 하나로,
벡터를 더한 후 변환한 결과가
각 벡터를 변환한 후 더한 결과와 같아야 한다는 것을 의미한다.
즉, 변환이 벡터 덧셈 연산과 호환되는 성질을 말한다.
 

 
이 식은 가법성도 만족하는데,

라는 것으로 가법성도 만족한다.
 

선형 변환의 행렬 표현

 

 
자, 그럼 선형 변환의 행렬 표현식을 기반으로,
스케일링을 어떻게 표현해야할까?
 
이는 아래와 같다.

 

'그래픽스 > DX11' 카테고리의 다른 글

D3D11 애파인 변환(=아핀 변환)  (1) 2024.12.16
D3D11 회전축에 대한 벡터의 회전  (1) 2024.12.13
D3D11 그래픽스 - 변환  (1) 2024.12.11
D3D11 Rasterization - Light  (0) 2024.10.30
DX11 - 쉐이딩(Blinn-Phong Shading)  (0) 2024.10.25