동차 표기법은 무엇인가 많이 검색하고 찾아봤지만 나에게는 다 두루뭉실하게 들렸다ㅠ

 

내가 정의한 동차 표기법은

"차원을 하나 더 추가하는 표기법" 이다.

하나 더 추가하는 이유는 그 차원의 값을 통하여 여러가지 계산을 쉽게 할 수 있기 때문이다.

실제로 차원이 더 늘어나는게 아님


예를들어 3차원에서 3x3행렬으로도 회전, 스케일링 등의 선형변환을 나타낼 수 있다.

하지만 이동은 3x3행렬로 표현할 수 없다

 

그래서 한차원을 추가해서 4x4행렬로 만든다면 행렬곱을 통하여 이동 및 여러 변환을 쉽게 시킬수가 있다.

한차원을 추가 : 3차원 (x, y, z) => 4차원 (x, y, z, w)


또 다른 기능이 있는데 방향벡터와 위치벡터를 구분해줄수있다.

벡터에는 위치를 나타내는 위치벡터와 방향을 나타내는 방향벡터가 있다.

 

근데 방향벡터에 이동이 필요한가?

한다면 정규화된 값이 방향벡터이라 의미가 없다고 생각한다.

 

그렇기 때문에 방향 벡터는 w의 값을 0, 위치벡터는 w의 값을 1로 사용하여

두 벡터를 구분할 수 있다.

 

이는 VertexShader에서 확인이 가능한데

vertex shader의 매개변수 구조체

다들 Vs를 작성해봤었다면 정점의 위치는 float4, 방향벡터는 float3로 정의하여 값을 옮겼을 것이다.

위치데이터가 float4인 이유는 바로 저 동차표기로 이동을 계산해야하기 때문이다.

그래서 float4로 정의하면 w값에 1이 초기값으로 들어간다.

 

Normal은 방향벡터로 w가 쓸일이 없으니까 굳이 w값까지 필요 없기에 float3로 받아오는것이다.


또 다른 사용의도가 있는데 이번에는 Pixel Shader에서 화면 비율과 관련된 의도인데

아직 사용을 안해봐서 직접해보고 추가로 작성해야겠다.

 

 


https://coding-groot.tistory.com/89

 

Homogeneous Coordinates를 왜 쓸까?

Homogeneous Coordinates에 대한 정리 수학적으로 $Homogeneous \ Coordinates$를 왜 쓰는지 이해는 못했다. 하지만 실용적으로 어떤 편의를 위해서 쓰는지는 알겠다. 검색하면서 정리한 여러 사용법에 대해서

coding-groot.tistory.com

https://enghqii.tistory.com/59?category=206685 

 

'DirectX 11 > 개념 정리' 카테고리의 다른 글

D3D11_USAGE / Resource Usage Type  (0) 2022.02.08
Vertex Shader, Pixel Shader, Rasterizer  (0) 2022.02.07
Device & Device Context / COM객체  (0) 2022.02.06

+ Recent posts