Overview
gmath는 Grap 엔진에서 사용되는 수학 연산 라이브러리이다.
이 라이브러리는 다음 기능을 제공한다.
- 스칼라 수학 연산
- 벡터 타입 및 벡터 연산
- 행렬 타입 및 변환 행렬
- 수치 계산 helper
- 기하 프리미티브 및 기하 쿼리
gmath는 다음 특징을 가진다.
- header-only 라이브러리
- 플랫폼 독립 구조
- 최소 의존성
- 컴파일 타임 타입 검증
- 연산 타입과 저장 타입 분리
라이브러리의 모든 API는 다음 umbrella header를 통해 접근할 수 있다.
#include <gmath/gmath.hpp>
Module Structure
gmath는 다음 모듈로 구성된다.
gmath
├─ config
├─ meta
├─ scalar
├─ vec
├─ mat
├─ numeric
└─ geom
각 모듈은 특정 수학 기능을 담당한다.
Module Responsibilities
config
컴파일 타임 설정 및 컴파일러 기능을 제공한다.
주요 역할
- 라이브러리 설정 정의
- 컴파일러 기능 abstraction 제공
meta
타입 trait 및 컴파일 타임 검증 기능을 제공한다.
주요 역할
- 수학 타입 trait
- 스칼라 타입 trait
- compile-time validation
scalar
스칼라 수학 연산을 제공한다.
주요 기능
- 수학 상수
- 기본 수치 연산
- 각도 변환
- 수치 비교
- 부동소수점 분류
vec
벡터 타입과 벡터 연산을 제공한다.
주요 기능
- arithmetic vector 타입
- packed vector 타입
- 벡터 연산
- 벡터 변환
mat
행렬 타입과 행렬 연산을 제공한다.
주요 기능
- Mat3
- Mat4
- 행렬 연산
- 변환 행렬 생성
numeric
수치 계산 helper를 제공한다.
주요 기능
- 수치 비교
- 벡터 기반 수치 계산
- 다항식 계산
geom
기하 프리미티브 및 기하 쿼리를 제공한다.
주요 기능
- 기하 타입
- 교차 검사
- 거리 계산
- barycentric 계산
Dependency Structure
gmath 모듈은 다음 의존 구조를 가진다.
config
▲
│
meta
▲
│
scalar
▲
│
vec
▲
│
mat
▲
│
numeric
▲
│
geom
의존 규칙
- 하위 모듈은 상위 모듈에 의존하지 않는다
- 순환 의존성은 허용되지 않는다
SRS
SRS 문서는 gmath 라이브러리의 기능 요구사항과 비기능 요구사항을 정의한다.
주요 내용
- 모듈 기능 요구사항
- 타입 시스템 요구사항
- 수학 연산 요구사항
- 라이브러리 제약사항
SRS 문서는 다음 항목으로 구성된다.
Subsystem Requirements
Non Functional Requirements
SDS
SDS 문서는 gmath 라이브러리의 구현 설계와 내부 구조를 정의한다.
주요 내용
- 모듈 설계
- 타입 구조
- 수학 연산 설계
- 헤더 구조
SDS 문서는 다음 항목으로 구성된다.
Overview
config
meta
scalar
vec
mat
numeric
geom
Architecture
Architecture 문서는 gmath의 모듈 구조와 의존 관계를 정의한다.
주요 내용
- 라이브러리 위치
- 모듈 구조
- 의존 관계
- 설계 원칙
API
API 문서는 gmath 라이브러리의 공개 인터페이스를 정의한다.
주요 내용
- 타입 정의
- 함수 인터페이스
- trait 정의
- 모듈별 API
API 문서는 다음 모듈 단위로 구성된다.
config
meta
scalar
vec
mat
numeric
geom