SDS
1. Overview
본 문서는 gmath 라이브러리의 Software Design Specification (SDS) 를 정의한다.
gmath는 Grap 엔진에서 사용되는 수학 연산 라이브러리로서 벡터, 행렬, 수치 계산, 기하 계산을 위한 기본 타입과 연산을 제공한다.
라이브러리는 다음 설계 목표를 따른다.
- deterministic memory layout
- header-only 구조
- 최소 의존성
- arithmetic 타입과 storage 타입 분리
- free function 기반 연산
- compile-time 검증 활용
2. System Scope
gmath는 다음 수학 기능을 제공한다.
- 스칼라 수학 연산
- 벡터 타입 및 벡터 연산
- 행렬 타입 및 행렬 연산
- 수치 계산 보조 기능
- 기하 프리미티브
- 기하 쿼리 알고리즘
다음 기능은 gmath의 범위에 포함되지 않는다.
- Scene 시스템
- Transform component
- 렌더링 시스템
- 플랫폼 시스템
- ECS 시스템
gmath는 수학 타입과 수학 알고리즘만 제공하는 라이브러리이다.
3. Module Structure
gmath는 다음 모듈로 구성된다.
gmath
├─ config
├─ meta
├─ scalar
├─ vec
├─ mat
├─ numeric
└─ geom
각 모듈은 특정 수학 도메인을 담당하며 계층형 의존 구조를 따른다.
4. Layered Module Architecture
gmath 내부 모듈은 다음 계층 구조를 따른다.
config
▲
│
meta
▲
│
scalar
▲
│
vec
▲
│
mat
▲
│
numeric
▲
│
geom
각 모듈은 자신보다 하위 레이어 모듈에만 의존할 수 있다.
5. Public Interface
라이브러리는 다음 umbrella header를 통해 제공된다.
#include <gmath/gmath.hpp>
이 헤더는 다음 모듈을 포함한다.
config
meta
scalar
vec
mat
numeric
geom
사용자는 단일 헤더를 포함하여 전체 라이브러리를 사용할 수 있다.
6. Design Characteristics
gmath는 다음 설계 특성을 가진다.
- header-only library
- deterministic memory layout
- compile-time validation
- modular header architecture
- free function math operations
이러한 설계는 gmath를 엔진 전반에서 사용할 수 있는 기초 수학 라이브러리로 유지하기 위한 것이다.