モジュール構成 / Module Structure
RedRing は、責務分離と型安全性を重視したワークスペース設計に基づいて構成されています。以下は主要なクレート群の概要です。
幾何計算層
geo_foundation
統一トレイト基盤・Analysis Transform・Foundation パターン
- Foundation統一システム:
ExtensionFoundationによる統一インターフェース - Analysis Transform:
analysisクレート統合による高効率変換システムAnalysisTransform3D- Matrix4x4による座標変換(平行移動・回転・スケール)AnalysisTransformVector3D- 方向ベクトル専用変換- Analysis Vector3/Point3との効率的な型変換
- Collision & Intersection: Phase 3完了(2025年12月21日)
BasicCollision<T, Other>- 基本衝突検出PointDistance<T>- 点との距離計算LineSegmentCollision<T>- 線分との衝突判定
- 許容誤差管理:
ToleranceContextによる精度制御 - 型安全抽象化: Scalarトレイト境界による数値型統一
geo_commons
共通定義・ユーティリティ(✅ Foundation Pattern準拠)
- 共通定義: 幾何計算に必要な共通型定義
- Foundation準拠: Issue #222完了(2026年2月13日)
- 依存関係:
analysis,geo_foundationのみに依存 - 使用例:
LineSegment3DCollisionDetectionトレイト実装
geo_core
基本図形処理・ロバスト幾何判定
- 基本図形処理
- ロバスト幾何判定(orientation など)
geo_primitives
Foundation 統合済み幾何プリミティブ
- 基本要素:
Point,Vector,Direction(Core/Extensions 分離済み) - 幾何形状:
LineSegment,Circle,Ellipse,Arc(責務分離完了) - 2D/3D 両対応のジェネリック実装
- Foundation 統合アーキテクチャによる保守性向上
geo_algorithms
高レベル幾何アルゴリズム
- 交点計算
- 曲線・曲面操作
- 空間関係解析
- ブール演算(将来実装予定)
注:基本的な幾何変換は geo_foundation の Analysis Transform システムで提供
geo_nurbs
NURBS 曲線・曲面システム(✅ 実装完了)
- NurbsCurve2D/3D: メモリ最適化されたNURBS曲線実装
- NurbsSurface3D: 双方向パラメトリックNURBSサーフェス
- 基底関数計算: Cox-de Boorアルゴリズムによる高効率B-スプライン基底関数
- 変換操作: ノット挿入、次数上昇、曲線分割
- Foundation統合: ExtensionFoundation完全対応
- 型安全性: Scalarトレイト境界による数値型抽象化
- エラーハンドリング: 包括的NurbsErrorによる堅牢性
- CAD/CAM アプリケーションの核心機能を提供
analysis
数値解析・汎用数値計算
- 独立した汎用数値計算ライブラリ
Scalarトレイト、許容誤差管理- ドメイン非依存の数学的基盤
- 他のプロジェクトでも再利用可能
geo_io
ファイル I/O・境界層処理
- STL、OBJ、PLY 等のファイル形式との変換
- 例外的設計:
geo_foundationトレイトを経由せず、直接geo_primitivesにアクセス - ゼロコピー最適化によるパフォーマンス重視
- 外部データ形式との効率的な境界処理
geo_io の例外設計根拠
#![allow(unused)]
fn main() {
// 他のgeo_*クレートは geo_foundation 経由
use geo_foundation::{Point3D, Vector3D};
// geo_ioのみ直接アクセス(例外パターン)
use geo_primitives::{Point3D, TriangleMesh3D, Vector3D};
}
この例外は以下の理由で採用:
- パフォーマンス: ファイル形式との直接変換でゼロコピー最適化
- 責務明確化: I/O 境界層としての特化
- 実装複雑性回避: 抽象化オーバーヘッドの排除
cam_solver
CAM 演算・パス作成 / 編集・ポスト処理・切削シミュレーション
- CAM パス生成 / 編集(今後実装予定)
- 各 CNC コントローラー 対応ポスト処理(今後実装予定)
- 切削シミュレーション(今後実装予定)
data_exchange
データインポート/エクスポート(将来実装予定)
- STL インポート/エクスポート
- OBJ インポート/エクスポート
- STEP インポート/エクスポート
- IGES インポート/エクスポート
- DXF インポート/エクスポート
- DWG インポート/エクスポート
注記: 現在はgeo_ioで STL 形式のみ実装済み
レンダリング層
render
GPU 描画基盤
- wgpu + WGSL による GPU レンダリング
- シェーダ管理
- 頂点データ処理
stage
レンダリングステージ管理
RenderStageトレイト- レンダリングパイプライン管理
- シーン構成
viewmodel
ビュー操作・変換ロジック・MVVM アーキテクチャ
- カメラ制御(将来実装予定)
- ビュー変換
- ユーザーインタラクション(将来実装予定)
- MVVM 準拠: Model 層(
geo_*)と View 層(render)の架け橋 - STL 読み込み・GPU 変換機能(
stl_loader) - メッシュデータ変換(
mesh_converter)
redring
メインアプリケーション
- アプリケーションエントリポイント
- 全クレート統合
- ウィンドウ管理
構造設計の方針
- 型安全性:コンパイル時エラー検出を最大化
- 責務分離:各クレートが単一の責務を持つ
- モジュール性:
renderはmodelに依存しない設計 - 拡張性:将来的な NURBS や WebAssembly 対応を考慮
- 国際化:英語ベースの命名で国際的な貢献を促進
- MVVM アーキテクチャ:View → ViewModel → Model の層分離
- 例外設計許容:パフォーマンス要件に応じた適切な例外設計(I/O 層など)
アーキテクチャ依存関係
redring (View) → viewmodel → model (geo_*)
↘ stage → render
独立: analysis (汎用数値計算)
例外: geo_io (直接geo_primitives依存でゼロコピー最適化)