Math & Core

수학 및 핵심 유틸리티 - 벡터, 행렬, 스레드 풀, 렌더 설정, 서브시스템

모듈 개요

ImEDA 엔진의 수학 라이브러리와 핵심 유틸리티 모듈입니다. 2D/3D 벡터 연산, 변환 행렬, 바운딩 박스부터 스레드 풀, 프로파일링, 프로젝트 관리까지 엔진의 기반 기능을 제공합니다.

Math Library Core Utilities Render Settings Subsystems

Math Library

CAD 엔진의 모든 좌표 연산, 도형 계산, 변환에 사용되는 수학 라이브러리입니다.

벡터 타입

타입설명용도
VECTOR2D2D 벡터 (double)렌더링 좌표, 실수 연산
VECTOR2I2D 벡터 (int)CAD 좌표 (nanometer)
VECTOR33D 벡터3D 뷰어, 높이 정보

행렬 및 바운딩 박스

MATRIX3x3D

3x3 변환 행렬. Translate, Rotate, Scale 조합으로 좌표 변환에 사용.

transform

BOX2I / BOX2D

축 정렬 바운딩 박스(AABB). 영역 계산, R-tree 인덱싱, 충돌 검출.

bounding box

각도 / 거리 변환

엔진 각도 규칙

엔진 내부 각도는 CW(시계 방향). engineDeg = 360 - mathDeg, Y축 반전. GetEndAngleDegree()ea < sa일 수 있으므로 effectiveEa = ea < sa ? ea + 360 : ea로 처리.

// 각도 변환 double engineDeg = 360.0 - mathDeg; // Arc 생성: SetArc3p 사용 필수 (SetArcCSE 금지) arc->SetArc3p(startPt, midPt, endPt); // 끝각도 보정 double ea = arc->GetEndAngleDegree(); double sa = arc->GetStartAngleDegree(); double effectiveEa = (ea < sa) ? ea + 360.0 : ea;
유틸리티설명
DEG2RAD(deg)도 → 라디안 변환
RAD2DEG(rad)라디안 → 도 변환
NormalizeAngle(deg)0~360 범위로 정규화
lgeo2d::intersect()도형 교차점 (Line < Circle < Arc 순서)

Core Utilities

typeinfo.cxx

RTTI 및 타입 정보 관리. CAD 객체 런타임 타입 식별.

RTTI

thread_pool.h

병렬 처리용 스레드 풀. 멀티스레드 렌더링, DRC 검사.

parallel

utf8.h

UTF-8 문자열 처리. std::string + UTF-8 표준.

string

profile.h

성능 프로파일링. 렌더링/파싱 시간 측정.

perf

base64.h

Base64 인코딩/디코딩. 임베디드 데이터 처리.

encoding

multivector.h

다중 벡터 컨테이너. 타입별 아이템 컬렉션 관리.

container

map_helpers.h

맵 유틸리티. 안전한 키 검색, 기본값 반환.

utility

Project Subsystem

클래스역할
c_project_file프로젝트 파일(.imprj) 읽기/쓰기, 파일 목록 관리
project_archiver프로젝트를 ZIP으로 아카이빙/복원

Settings - 렌더 설정

문서 유형별 렌더링 설정을 관리합니다.

렌더 설정 상속 구조
c_render_settings
기본 렌더 설정
c_sch_render_settings
회로도 전용
c_pcb_render_settings
PCB 전용
설정 클래스관리 항목
c_render_settings공통 색상, 배경색, 선 두께 기본값
c_sch_render_settings와이어 색상, 심볼 렌더링, 넷 라벨 스타일
c_pcb_render_settings레이어 색상(m_layerColors), 동박 투명도, 비아 표시

서브시스템

🎲

3D Viewer

PCB 3D 렌더링. STEP/WRL 모델 로드하여 부품 배치를 3D로 확인.

PCB
🔗

Crossprobe

SCH ↔ PCB 크로스 프로빙. 한쪽 선택 시 다른 쪽 하이라이트.

SCH ↔ PCB

Barcode

QR, Code128 등 바코드 생성. PCB 실크스크린 배치.

utility

Font

글리프 폰트 렌더링. TTF를 벡터 경로로 변환, 줌 독립적 텍스트.

rendering
📈

Gerbview

Gerber 파일(.gbr) 뷰어. PCB 제조 데이터 레이어별 확인.

viewer

주요 디렉토리 구조

imengine/src/ math/ # VECTOR2D, VECTOR2I, MATRIX3x3D, BOX2I core/ # typeinfo, thread_pool, utf8, profile, base64 project/ # c_project_file, project_archiver settings/ # c_render_settings, c_*_render_settings 3d-viewer/ # PCB 3D 렌더링 crossprobe/ # SCH ↔ PCB 연동 barcode/ # 바코드 생성 font/ # 글리프 폰트 엔진 gerbview/ # Gerber 파일 뷰어