Skip to main content

Architecture

1. Layer Position

  • gmath는 Grap 엔진에서 수학 연산을 담당하는 라이브러리 레이어이다
  • 상위 엔진 모듈은 gmath에 의존할 수 있다
  • gmath는 엔진 로직이나 시스템 모듈에 의존하지 않는다
Application


ginter


ghost


gcore


gmath

2. Internal Modules

gmath는 다음 수학 서브시스템으로 구성된다.

gmath
├─ config
├─ meta
├─ scalar
├─ vec
├─ mat
├─ numeric
└─ geom

config

  • 컴파일 타임 설정 제공
  • 컴파일러 관련 설정 제공

meta

  • 타입 trait 제공
  • 컴파일 타임 검증 제공

scalar

  • 스칼라 수학 유틸리티 제공
  • 상수 및 비교 함수 제공

vec

  • 벡터 타입 정의
  • 벡터 연산 제공
  • packed vector 타입 제공

mat

  • 행렬 타입 정의
  • 행렬 연산 제공
  • 행렬 생성 함수 제공

numeric

  • 수치 계산 보조 기능 제공
  • 수치 비교 기능 제공
  • 다항식 계산 유틸리티 제공

geom

  • 기하 프리미티브 제공
  • 기하 쿼리 알고리즘 제공

3. Dependency Structure

gmath 내부 모듈은 다음 의존 구조를 따른다.

config


meta


scalar


vec


mat


numeric


geom

의존 규칙

  • config는 최하위 레이어
  • metaconfig에 의존 가능
  • scalarconfigmeta에 의존 가능
  • vecscalar에 의존 가능
  • matvec에 의존 가능
  • numericscalarvec에 의존 가능
  • geomvec, mat, numeric에 의존 가능
  • 순환 의존성 금지

4. Header Architecture

  • gmath는 header-only 라이브러리이다
  • 모든 기능은 <gmath/...> 형태로 접근한다
  • umbrella header gmath.hpp를 제공한다

5. Directory Layout

gmath/
├─ gmath.hpp
├─ config/
├─ meta/
├─ scalar/
├─ vec/
├─ mat/
├─ numeric/
└─ geom/

6. Design Principles

  • arithmetic 타입과 storage 타입 분리
  • deterministic memory layout 유지
  • header-only 구조 유지
  • 최소 의존성 유지
  • free function 기반 연산 구조
  • compile-time 검증 활용
  • 모듈 간 순환 의존성 방지