문제. 기저벡터란
"벡터 공간에서 각각의 축방향을 가리키는 단위 벡터"
라고 한다. 간단해서 좋다. 조금 더 복잡한 정의를 찾아 보았다.
기저 벡터란 n차원 공간에서 임의의 벡터를 표현할 수 있는 기준이 되는 벡터이다.
위의 정의도 결론은 n차원에서 임의의 벡터를 표현하기 위한 기준이 되는 벡터란다. 결국 축방향을 가리키는 단위 벡터라는 말이다.
문제. aabb에 대하여 설명하시오.
축 정렬된 바운딩 박스.
물체가 회전하거나 애니메이션 되면 경계상자를 다시 만들어야 한다. 정적 오브젝트에 많이 사용된다.
문제. OBB에 대하여 설명하시오.
방향성이 있는 바운딩 박스.
축에 정렬된 방향으로 고정되어 있지 않고 물체가 회전하는 것에 따라 같이 회전한다. AABB보다 좀 더 세밀한 충돌이 가능하다. 한 번의 충돌검사를 위해 좀 더 많은 연산이 필요하다.
OBB와 Plane의 충돌여부를 확인하기 위해선 OBB의 센터의 위치와 평면과의 거리를 D로 놓고, OBB의 좌표축의 길이(표준 기저 벡터) 3개를 평면의 법선벡터에 내적(투영)한 값의 '크기의 합'을 비교하여,
D > |dx + dy + dz|면 충돌하지 않고, D < |dx + dy+ dz|면 충돌한다고 판정한다.
좀 더 야매같이 표현하면 평면에 닿아 충돌할 직육면체인지 체크하기 위해, 각 벡터 xyz의 투영크기를 합하는데, 결국 그 축 방향으로 닿을 것 같거나, 그 방향으로 향하고 있는 모든 벡터들의 합이 중심 좌표(Center)에서 평면상의 거리 보다 크다면 닿는다고 판정하는 것이다
문제. 탄젠트 스페이스를 설명.
접선공간, 텍스쳐 스페이스 라고도 하며 로컬좌표에 있는 UVZ좌표
문제. 테일러 급수란 무엇이고 왜 사용해야 하는가?
테일러 급수란 여러 번 미분가능한 함수f(x)에 대해 x=a에서 그 f(x)에 접하는 다항 함수로 표현하는 방법
문제. Eigen value와 Eigen vector에 대해서 설명.
행렬 A를 선형변환으로 봤을 때, 선형변환 A에 의한 변환 결과가 자기 자신의 상수배가 되는 0이 아닌 벡터를 고유벡터(eigenvector)라 하고 이 상수배 값을 고유값(eigenvalue)라 한다.
문제. Digonalize(대각화)에 대허서 설명.
행렬을 대각요소만 가진 대각형렬로 만들어주는 것이다.
문제. Transform matrix를 3*3이 아닌 4*4를 사용하는 이유는?
4x4의 행렬은 첫번째 열부터 라이트 벡터, 업 벡터, 룩 벡터, 위치 벡터로 쓴다.
문제. Matrix와 vector에 대해서 설명하시오.
행렬(matrix)이란 수를 괄호 안에 직사각형으로 배열한 것이다. 크기와 모양이 같은 행렬은 원소별로 연산이 가능하다.
게임에서는 대체적으로 행과 열이 같은 정사각형행렬인 정방행렬을 사용한다.
4x4의 행렬은 첫번째 열부터 라이트 벡터, 업 벡터, 룩 벡터, 위치 벡터로 쓴다.
벡터(vector)는 크기와 방향을 나타내는 수학적 도구이다.
개념은 그렇지만 게임에서는 위치를 나타내기도 하고 다양하게 쓰인다.
문제. 사원수(쿼터니온)는 무엇이고 사원수를 사용해야 하는 이유를 설명.
사원수란 3차원 그래픽에서 회전을 표현할 때, 행렬 대신 사용하는 수학적 개념으로 4개의 값으로 이루어진 복소수 체계이다.
사원수는 행렬에 비해 연산 속도가 빠르고, 차지하는 메모리 양도 적으며, 결과의 질에 있어 오류가 날 확률이 적다.
오일러 각의 문제점을 보완하여 짐벌락을 피한다.
오일러각과 다르게 3개의 축을 동시에 회전시킨다.
즉 다른 축에 대한 종속성이 서로 없다.
4차원 벡터를 사용한다. 정확히 말하자면 3개의 허수와 4개의 실수를 사용한다. (i, j, k는 허수.)
벡터를 하나 더 사용하니 축이 겹쳐도 3차원 공간에선 문제가 없다.
그리고 유니티에선 Vector3로 쿼터니언을 사용할 수 있게끔 편의를 제공한다.
q=w+xi+yj+zk
스칼라값 하나와 각 요소에 허수인 계수가 붙는 3차원 벡터 이렇게 총 4차원 벡터로 표현한다.
q=(w,(xi,yj,zk))
문제. 쿼터니온(사원수)에 대해서 설명하시오.
복소수에서 차원을 확장시켜 만든 사원수이고, 일종의 벡터이다. 3차원 회전을 복소수로 표현한 것이 쿼터니온이다. 오일러 각 방식에서 나타나는 짐벌락 현상을 해결하기 위해 많이 사용된다.
문제. Gimbal lock에 대해서 설명하고 해결 방법을 작성하시오.
김벌락은 3차원 공간에서 오일러 각 회전을 적용할 때, 특정 회전 상황에서 세 축 중 두 축이 겹치는 현상이다.
오일러 각(Euler's Angle)은 이름에서 풍겨나오는 아우라와는 달리 단순하다. x축 기준의 회전각, y축 기준의 회전각, z축 기준의 회전각을 말한다.
문제. 회전 공식에 대해서 설명.
좌표 평면의 점 P(x, y)를 각도A만큼 회전시켜 P2(x2, y2)으로 옮기는 변환f를 회전변환이라고 한다.
공식은
x2 = (cosA -sinA)(x)
y2 = (sinA cosA)(y)
문제. 다이렉트에서는 벡터와 행렬을 주로 사용하는데 단위 벡터의 정의와 항등 행렬의 정의에 대해서 기술하라.
단위 벡터 - 길이가 1인 벡터
벡터의 정규화(Normalize) - 일반 벡터를 단위 벡터로 만들어주는 것
항등 행렬 - 주대각선 상의 성분들이 모두 1이고 그 밖에는 모두 0인 정사각형행렬
문제. 각도를 표현하는 단위에는 degree와 radian이 있다. radin에 대해서 설명하고 45도를 radian으로 바꿔라. 변환 과정을 수식으로 작성.
각도를 표현하는 방법에는 각도법과 호도법이 있다. 각도법은 degree 호도법은 radian이라고 한다.
사람이 선호하는 신호체계는 degree인 반면 컴퓨터나 수학에서 사용하는 각 체계는 radian이다.
180도는 (파이)* radian이다.
이 관계를 이용하면 다음과 같이 degree와 radian의 단위를 변경 할 수 있다.
180 degree = π radian
1 radian = 180 / π degree
x radian = x * 180 / π degree
문제. 공간분할이론에 대해 아는 것을 설명하시오.
공간 분할 이론에는 이진 공간분할, 쿼드트리,옥트리가 있다.
이진 공간 분할
- 말 그대로 2개씩나누어 공간을 분할하는 방식으로 FPS의 내부지형을 구현할때 많이 사용하는 것으로 알고 있다.
쿼드트리
- 공간이 성냥갑처러 얇은 즉 하늘을 공간분할 할 필요가 없을때 쿼드트리를 사용한다.
- 자료구조의 트리를 기반으로 자식노드가 4개인 트리를 의미한다.
- 쿼드트리는 일반적으로 상하개념이 없어서 3차원 세계를 4개의 평면으로 분할하지만 옥트리는 4개로 분할한 쿼드트리에서 상하의 분할평면으로 나누어 총 8개의 자식노드를 갖게 된다.
- 일반적으로 지형( Terrain )에 사용된다.
옥트리 (팔진 트리)
- 공간이 두부처럼 두꺼운 즉 하늘을 공간분할 할 필요가 있을 경우 옥트리를 사용한다.
- 3차원 공간을 분할하는 기법 중 하나이며 쿼드트리(Quadtree) 가 높이 면에 대한 분할을 하지 않는다는 점에 비해 옥트리는 높이에 대한 분할까지 시도한요.
따라서 대게 3차원에 대해 모두 활용하는 공간에서 옥트리를 사용하게 된다.
문제. 램버트 조명 공식을 설명하시오.
램버트 확산 조명
“물체 표면에서 반사하는 빛의 휘도(Luminance)는 빛의 입사 벡터 L과 표면의 법선 벡터 N이 이루는 각도의 코사인에 비례한다”
문제. 내적과 외적은 무엇이고 어떠한 상황에서 사용하는지 또 언제 사용하였는지 설명하시오.
기하학적인 의미로 내적은 두 벡터가 이루는각, 외적은 두 벡터 모두에게 수직인 벡터
내적 - 객체와 객체사이의 각도를 구할 때 사용하거나 게임에서 밝기 계산에 사용
면에 수직인 벡터(노말벡터)와 빛 방향 벡터의 사이각을 이용한 내적값으로 밝기를 구하게 된다.
(단위 벡터를 사용하므로, 면에 수직일 때 원래밝기, 면에 가까워질수록 어두워짐)
스칼라곱, 스칼라배라 한다.
외적 - 방향벡터와 기준 축벡터를 외적하여 벡터를 기준으로 왼쪽, 오른쪽을 판단할 때
벡터곱이라 한다.
문제. 법선벡터란
직각을 이루는 벡터 (직교벡터, 노말벡터)
'Technical > Organize' 카테고리의 다른 글
[Technical Organize] 기술면접_요약정리 (2) | 2022.12.28 |
---|---|
[Technical Organize] 기술면접_자료구조&알고리즘 (1) | 2022.12.28 |
[Technical Organize] 기술면접_디자인패턴 (0) | 2022.12.28 |
[Technical Organize] 기술면접_DirectX (1) | 2022.12.28 |
[Technical Organize] Effective C++_#define (0) | 2022.12.28 |
댓글