프로그래밍 공부
작성일
2023. 12. 4. 16:10
작성자
WDmil
728x90

Q1. Vector3형태의 Obejct A와 B 두개가 주어졌을 때, B가 A를 바라보게 만들려면 어떠한 방법을 따라야 하는가.

 

A1. 

  1. A->B를 구한다.
  2. B의 Forward를 찾는다.
  3. A->B와 B.Forward()간의 Dot을 구한다.
  4. atan(Dot(A->B, B.Forward()))하여. 각도를 구한뒤에, B의 각도를 결과값에 보정한다.

Q2. 2D평면상의 Vector2형태의 Obejct A와 B가 존재할 때, A는 사각형, B는 원이다. 두 객체간 충돌을 검사하기 위한 과정은 어떻게 구성되는가?

 

A2.

  1. A의 각 꼭짓점을 찾는다.
    1. Rect(A) 형태의 사각형일 경우, APos(x, y)에서 사각형의 높이 길이 = Size(xA, yA)일 때. 
    2. 좌측하단 : Lw(x - xA * 0.5, y - yA * 0.5);
    3. 좌측상단 : Lu(x - xA * 0.5, y + yA * 0.5);
    4. 우측하단 : Rw(x+ xA * 0.5, y - yA * 0.5);
    5. 우측상단 : Ru(x + xA * 0.5, y + yA * 0.5);
  2. A와 B의 사잇거리를 계산한다.
    1. A ->B.Length()
  3. 모서리 검사를 먼저 진행한다.
    1. 원의 반지름을 찾는다. B.Radius();
    2. 각 모서리와 원의 중점간의 거리를 계산하고. 반지름에 접촉하는지 판단한다.
      1. Lw->B, Lu->B ... Length();
      2. 만약 B.Radius()보다 작은값이 나왔다면 무조건 충돌
  4. 각 변에 대해 검사를 진행한다.
    1. 각 변에 대해 Normalize된 A->BVector에 대해 Dot하여. float값을 도출한다.
    2. Dot(Lw->Lu, A->B.Normalize) .... 4개의 변에 대해 구함
    3. 가장 각도가 작은 변을 기준으로 충돌위치를 판별
    4. Cross(resultside, A->B.Normalize) 투영하여 충돌점 의 거리를 판별.
    5. Length()하여 길이를 가져온다.
    6. ResultCrossLength <= A->B.Length(). 일 경우. 충돌로 판별한다.

Q3. 3D공간에서 최적화를 위해 백페이스 컬링을 진행한다. 백 페이스 컬링이 무엇이고 어떻게 진행되는가?

 

A3.

  1. 백 페이스 컬링이란?
    1. 앞면 아닐경우에 뒷면을 판별하여. 뒷면일경우 렌더하지 않는 최적화 방법
  2. 진행방식
    1. DirectX에서 Object의 투영은, 삼각형 Face에서 우측으로 회전하는 오른손좌표계를 사용한다.
    2. 가장 좌측 Vertex값에서 가장 우측까지 시계방향으로 회전하는데, 시계방향 상. ViewPos와 내적해서 같은 방향이 나올경우에 렌더, 아닐경우 렌더하지 않는다.

Q4. Diffuse 광원은 WorldMap상에서 전체적으로 비추어주는 태양과 같은 광원을 이야기한다. Diffuse의 수행방식과 수식은?

 

A4.

  1. Diffuse의 수행방식.
    1. 절대적인 Direction을 가진다.
    2. Direction에 따라 Obejct의 삼각 Face별로 위를 향하는 UpDirection을 사용해서 Dot을 구한다.
    3. 해당 Dot을 기준으로 Color값에 보정한다.
  2. 수식
    1. Light = Dot(UpDriection, DiffuseDirection);

Q5. Specular 광원은 WorldMap상에서 각 Obejct의 광원과 UpDirection에 따라 얼마나 더 밝아지는지를 이야기한다. Specular의 수행방식과 수식은?

 

A5.

  1. Specular의 수행방식.
    1. 절대적인 Direction을 가진다.
    2. Direction에 따라 DIffuse를 수행한다.
    3. Diffuse를 수행한 결과값에 Pow(Dot(reflect(UpDirection, DiffuseDirection), ViewDirection), Shininess) 을 더해준다.
    4. (또는 결과값에 Shiniess만큼 제곱한다.)
  2. reflect 는 반사벡터이다. 객체값에 대해 UpDIrection에 따른 반대방향을 말한다.
  3. 수식
    1. Pow(Dot(reflect(DiffuseDirection, UpDriection), ViewPosition - wPosition), Sihiniess)

Q6. 반사 벡터는 진입해오는 방향벡터를 부딛혔을 때 부딛힌 객체의 UpDirection을 기준으로 반대로 돌려주는 벡터이다. 해당 벡터의 수식을 기술하시오.

 

A6.

  1. 반사벡터의 수식
    1. Reflect = IncomingVector - 2 * Dot(IncomingVector, UpDIrection) * Upirection

Q7. 미끄러짐 벡터는 진입해오는 벡터에 대해 해당 Face의 표면을 타고 흐르게 하는 벡터이다. 해당 벡터의 수식을 기술하시오.

 

A7.

  1. 미끄러짐 벡터의 수식
    1. SlipVector = IncomingVector - Dot(incomingVector, SurFaceNoraml) * SurfaceNoramal

SUrFaceNoramal = 표면의 법선벡터


Q8. 이중 연결리스트는 이후 데이터와 이전 데이터로 양방향을 통해 이동할 수 있는 리스트이다. 해당 이중 연결 리스트의 구조를 서술하시오.

 

A8.

  1. 데이터의 양 끝단에 포인터 형태로 데이터 객체를 지정해주는 Back, Front Pointer를 생성한다.
  2. Back은 뒷 데이터를 지정하고, Front는 앞 데이터를 지정해준다.
  3. 앞 데이터를 참조하기 위해서는 Front->Data, 앞앞데이터는 Front->Front->Data 이렇게 참조하면 된다.

Q9. 힙(Heap)구조는 데이터의 정렬을 위해 사용되는 자료구조이다 힙 구조에 대해 서술하시오.

 

A9.

  1. 이진트리구조 를 띄나, map처럼 오름차순으로 데이터가 정렬되는 트리구조를 이야기한다.

Q10. 그래프 구조는 데이터의 탐색구조로 트리구조와는 다른 형태를 띄는 자료구조이다. 그래프에 대해 서술하시오.

 

A10.

  1. 그래프 구조는 트리와 다르게 시작점이 따로 존재하지 않으며, 노드와 노드끼리의 간선으로 구성된다
  2. 방향성을 가질수도 가지지 않을수도 있으며, 최단거리 탐색을 위해 사용한다.

Q11. Draw Call을 줄이기 위해 같은 모델을 모아 렌더링 하는 방식을 어떤 방식이라고 하는가?

 

A11.

  1. 인스턴싱

Q12. 씬 그래프란 무엇인가?

 

A12.

  1. 렌더링하고자 하는 오브젝트를 부모자식관계로 만든 트리이다.
  2. Loot에서 탐색하며, 노드의 기능과 충돌검사, 컬링을 수행하여 노드가 수행되지 않는다면 자식노드도 실행하지 않는 구조이다.

Q13. View와 Projection이 결합된 절두체 를 사용하여 컬링하는 방식은 무엇인가?

 

A13.

  1. 프러스텀 컬링( 절두체 컬링 )

Q14. 앞에 모델에 가려지는 모델을 그리지 않는 컬링 방식은 무엇인가?

 

A14.

  1. 오클루전 컬링

Q15. Dynamic Programming이란 무엇인가?

 

A15.

  1. 분할 정복과 유사하게 처리구역을 나누지만, 앞의 계산데이터를 사용해서 현재구역 데이터를 정렬하는것.

Q16. 오브젝트의 아이디나 대량의 데이터를 빠르게 검색하기 위해 임의의 알고리즘으로 키를 생성하는 방식은?

 

A16.

  1. 해싱

Q17. 여러개의 정렬 알고리즘은, 작은수와 큰수를 순서대로 정리하는것을 이야기 한다. 분할정복 알고리즘은 무엇인가?

 

A17.

  1. 정리할 때 데이터를 가능한 만큼 전부 쪼갠다음. 쪼갠 데이터를 각각 토너먼트 형태로 비교하여. 더 작은수를 먼저 놓아두는 방식으로 정리하는 방법.
  2. 시간복잡도는 O(log n)이다.

Q18. Object간 충돌할때 각 메시데이터를 통해 충돌검사를 하면 매우 비효율적이다. 이때. 충돌체를 임의로 생성해서 충돌검사를 진행하게 되는데. 사용가능한 충돌체를 3개 이상 서술하시오.

 

A18.

  1. 박스
  2. 구체
  3. 캡슐
  4. 사각형

Q19. 총알이나 포탄같은 발사체를 다루는 방식이 있다. 해당 기술의 명칭과 설명을 서술하시오.

 

A19.

  1. 프로젝타일
  2. 발사체 오브젝트를 따로 생성해서 해당 발사체를. 초기속도, 각도 중력, 공기저항, 위치, 속도갱신, 충돌감지, 충돌응답을 넣어 계산하는 방식이다.

Q20.   3D위치상에서 길을 찾는 방식을 네비게이션 메시 라고 한다. 이 네비게이션 메시가 무엇인지 서술하시오.

 

A20.

  1. 3D공간에서 실시간으로 길을 찾기위해 사용되는 기술이다.
  2. 3D공간을 2D로 펼쳤을 때, 이동할 수 있는 Face를 나타내는 지역을 말한다.
  3. Face는 Face끼리 연결되어있어 다각형 끼리의 연결을 확인할 수 있다.
  4. 각 Face는 노드로 간주되며, 노드간의 연결은 이동경로를 의미한다.
  5. Object는 해당 노드의 길을 이용해서 계획알고리즘을 통해 출발지와 목적지의 최소거리를 계산한다.

 

728x90