본문 바로가기

DirectX/[Inflearn_rookiss] Part2: DirectX1235

23. Orthographic Projection 직교투영은 원근투영과 다르게 깊이 값에 대해 크기를 보정해주지 않는다. UI와 같은 고정된 화면을 만들 때 유용하게 사용된다. *NDC 좌표계는 x(-1~1), y(-1~1), z(0~1)로 되어 있다. - x, y만 봤을 때 가운데가 (0, 0)이고 우상단은 (1, 1)이 되어야 함 - 실제 크기인 width, height를 대입해보면 좌표는 우상단이 w/2, h/2이므로 이 값을 1, 1로 만들어 주어야 한다. - 그러려면 x = 2x/w로 계산하고, y = 2y/h로 계산해야 한다. - (x는 x를 (w/2)로 나눈 값이고, y는 y를 (h/2)로 나눈 값이다.) - z는 비교적 조금 더 까다롭다. - z = z / (f - n) - n / (f - n) 이 식에 z를 대입하여 계산해면 된다. - .. 2023. 2. 2.
22. Quaternion - 개념과 사용 방법 - 사원수라고도 부르며, Vector4와 같이 float4개로 이루어진 단위 - 행렬에 비해 빠르고, 메모리를 적게 차지한다 - 그리고 짐벌락 현상을 막을 수 있다. 쿼터니언 q는 xi + yj + zk + w로 이루어져 있으며, xi + yj + zk를 허수부, w를 실수부로 표현한다. i, j, k는 서로 다른 공간에 존재하며, 아래와 같은 식을 만족한다. i² = j² = k² = -1 ij = -ji = k jk = -kj = i ki = -ik = j 각 요소의 제곱은 -1이지만 각각 요소에 대한 곱은 다른 차원으로 이동된다. xi + yj + zk + w 로 이루어진 구성은 Vector4에서 x, y, z, w의 구성과 비슷함을 알 수 있다. 따라서 3차원 벡터 v(x, y, z)를 4차원 벡.. 2023. 2. 1.
21. Quaternion - 로드리게스 회전 로드리게스 회전이란? - 회전 축과 각도가 주어진 공간에서 벡터를 회전시키는 효율적인 알고리즘 - 벡터 v를 방향벡터 a를 중심으로 𝜽만큼 회전시켜서 벡터 v'를 구하는 방법에 대한 내용 - 벡터 v는 수직을 향하는 성분(v ㅗa)과 수평을 향하는 성분(v lla)으로 나눠질 수 있다. - ①에 해당하는 축의 길이는 vsinα가 된다. - ①에 해당하는 축을 𝜽만큼 회전시키면 ②가 되는데 각도만 바꾼 것이므로, 크기는 같다. - 따라서 ②의 크기도 vsinα가 된다. - ③에 해당하는 축은 v와 a의 내적의 결과로 얻을 수 있다. - 외적의 결과는 v * a * sinα로 구해지는데, - a는 단위벡터이므로 결과는 vsinα로 위의 ②와 동일한 크기임을 알 수 있다. 결과적으로 v'은 아래와 같은 요소들.. 2023. 1. 31.
20. Quaternion - 짐벌락 현상과 복소수에 대한 개념 오일러 방식의 문제? - x축을 90도로 놓고 y축을 회전시키면 z축이 돌아간다. 왜지? 축이 손실된 것 - 이 현상을 짐벌락 현상이라고 한다. 짐벌락 현상이란? - 각 축의 회전이 결합할 때 세 축 중 하나의 축이 먹통이 되는 현상 - 유니티는 회전을 적용하는 순서가 z - x - y 순으로 적용되는데, 항상 2번째 축에서 문제가 발생한다. - z축을 회전시키면 x축은 그 영향을 받아 원래 궤도가 아닌 다른 궤도로 움직인다. 이를 해결하기 위해서는? - 앞으로 배울 쿼터니언의 개념을 도입해야 한다! 복소수 개념 정리 복소수란? - a + bi 꼴의 수를 말하며 a는 실수부, bi는 허수부라고 칭한다. 이 수를 벡터와 같이 2차원 평면에 표현할 수 있는데 이 평면을 복소평면이라고 한다. 1) 복소수의 덧.. 2023. 1. 30.