Skip to main content

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