Math & Core
수학 및 핵심 유틸리티 - 벡터, 행렬, 스레드 풀, 렌더 설정, 서브시스템
모듈 개요
ImEDA 엔진의 수학 라이브러리와 핵심 유틸리티 모듈입니다. 2D/3D 벡터 연산, 변환 행렬, 바운딩 박스부터 스레드 풀, 프로파일링, 프로젝트 관리까지 엔진의 기반 기능을 제공합니다.
Math Library Core Utilities Render Settings Subsystems
Math Library
CAD 엔진의 모든 좌표 연산, 도형 계산, 변환에 사용되는 수학 라이브러리입니다.
벡터 타입
| 타입 | 설명 | 용도 |
|---|---|---|
VECTOR2D | 2D 벡터 (double) | 렌더링 좌표, 실수 연산 |
VECTOR2I | 2D 벡터 (int) | CAD 좌표 (nanometer) |
VECTOR3 | 3D 벡터 | 3D 뷰어, 높이 정보 |
행렬 및 바운딩 박스
MATRIX3x3D
3x3 변환 행렬. Translate, Rotate, Scale 조합으로 좌표 변환에 사용.
transformBOX2I / BOX2D
축 정렬 바운딩 박스(AABB). 영역 계산, R-tree 인덱싱, 충돌 검출.
bounding box각도 / 거리 변환
엔진 각도 규칙
엔진 내부 각도는 CW(시계 방향). engineDeg = 360 - mathDeg, Y축 반전. GetEndAngleDegree()는 ea < sa일 수 있으므로 effectiveEa = ea < sa ? ea + 360 : ea로 처리.
| 유틸리티 | 설명 |
|---|---|
DEG2RAD(deg) | 도 → 라디안 변환 |
RAD2DEG(rad) | 라디안 → 도 변환 |
NormalizeAngle(deg) | 0~360 범위로 정규화 |
lgeo2d::intersect() | 도형 교차점 (Line < Circle < Arc 순서) |
Core Utilities
typeinfo.cxx
RTTI 및 타입 정보 관리. CAD 객체 런타임 타입 식별.
RTTIthread_pool.h
병렬 처리용 스레드 풀. 멀티스레드 렌더링, DRC 검사.
parallelutf8.h
UTF-8 문자열 처리. std::string + UTF-8 표준.
profile.h
성능 프로파일링. 렌더링/파싱 시간 측정.
perfbase64.h
Base64 인코딩/디코딩. 임베디드 데이터 처리.
encodingmultivector.h
다중 벡터 컨테이너. 타입별 아이템 컬렉션 관리.
containermap_helpers.h
맵 유틸리티. 안전한 키 검색, 기본값 반환.
utilityProject Subsystem
| 클래스 | 역할 |
|---|---|
c_project_file | 프로젝트 파일(.imprj) 읽기/쓰기, 파일 목록 관리 |
project_archiver | 프로젝트를 ZIP으로 아카이빙/복원 |
Settings - 렌더 설정
문서 유형별 렌더링 설정을 관리합니다.
기본 렌더 설정
회로도 전용
PCB 전용
| 설정 클래스 | 관리 항목 |
|---|---|
c_render_settings | 공통 색상, 배경색, 선 두께 기본값 |
c_sch_render_settings | 와이어 색상, 심볼 렌더링, 넷 라벨 스타일 |
c_pcb_render_settings | 레이어 색상(m_layerColors), 동박 투명도, 비아 표시 |
서브시스템
3D Viewer
PCB 3D 렌더링. STEP/WRL 모델 로드하여 부품 배치를 3D로 확인.
PCBCrossprobe
SCH ↔ PCB 크로스 프로빙. 한쪽 선택 시 다른 쪽 하이라이트.
SCH ↔ PCBBarcode
QR, Code128 등 바코드 생성. PCB 실크스크린 배치.
utilityFont
글리프 폰트 렌더링. TTF를 벡터 경로로 변환, 줌 독립적 텍스트.
renderingGerbview
Gerber 파일(.gbr) 뷰어. PCB 제조 데이터 레이어별 확인.
viewer