프로젝트 목록
충돌·공간 분할 프로젝트 · 2025 봄 · CS350

Geometry & Spatial Partition

기본 도형의 교차 판정, 동적 AABB 트리, BSP와 GJK를 구현한 C++ 기하·공간 분할 과제입니다.

C++GeometryDynamic AABB TreeBSPGJK
OVERVIEW

프로젝트 소개

점·선·면과 볼록 도형의 관계를 계산하고, 많은 오브젝트 중 검사할 대상을 좁히는 공간 자료구조를 구현했습니다. 개별 도형의 교차 판정에서 트리 기반 쿼리까지 다룹니다.

수업의 시각화 프레임워크에 기하 연산과 자료구조를 연결하며 충돌 계산에 필요한 수학과 탐색 과정을 C++ 코드로 옮겼습니다.

MY CONTRIBUTION

담당한 구현

01

기본 도형의 교차와 경계 볼륨

Point, Ray, Plane, Sphere, Triangle, AABB와 Frustum 조합의 교차 판정, barycentric 좌표와 경계 볼륨 계산을 구현했습니다. centroid·Ritter 방식의 sphere와 AABB 연산을 다뤘습니다.

02

움직이는 오브젝트를 위한 AABB 트리

노드 삽입·삭제·위치 갱신과 상위 경계 갱신을 연결했습니다. Ray·Frustum 쿼리와 SelfQuery를 통해 트리에서 후보를 찾아 검사하도록 구현했습니다.

03

BSP와 GJK

삼각형 분할과 BSP 구성, raycast·clipping·CSG를 구현했습니다. GJK에서는 support point와 simplex의 Voronoi 영역을 계산하는 흐름을 다뤘습니다.

DELIVERED WORK

구현 결과

  • 기본 도형 교차와 경계 볼륨 계산
  • Dynamic AABB Tree의 갱신·쿼리
  • BSP 분할·CSG와 GJK simplex 연산

수업 제공 코드 위에 구현한 기하 연산과 자료구조입니다. 설명한 교차 판정·AABB 트리·BSP·GJK를 중심으로 소개합니다.

다음 프로젝트C++ Debugging Tools