affn — 強型座標系のアフィン幾何プリミティブ

Library

概要

affnは「強い型付け」を前提にしたアフィン幾何の基本プリミティブを提供するRustクレートです。参照中心(例:heliocentric, geocentric, topocentric)や参照フレーム(例:ICRS, Ecliptic, Equatorial)といった概念を明確に分離し、位置(アフィン点)、方向(単位ベクトル)、変位・速度(自由ベクトル)といったカルテシアン型を扱えるように設計されています。科学計算や天文学、シミュレーションなどで、座標系のミスをコンパイル時に防ぎたい場面に適しています。

GitHub

リポジトリの統計情報

  • スター数: 2
  • フォーク数: 0
  • ウォッチャー数: 2
  • コミット数: 2
  • ファイル数: 6
  • メインの言語: Rust

主な特徴

  • 参照中心(Reference Centers)と参照フレーム(Reference Frames)を明確にモデル化
  • 位置(point)、方向(unit vector)、変位/速度(free vector)を型で区別
  • 科学計算や天文学での誤用を防ぐ設計(型安全性)
  • 小規模・試験的な実装で拡張や統合が容易

技術的なポイント

affnはアフィン幾何の概念をRustの型システムで表現することで、ランタイムエラーを減らし、安全な座標操作を目指しています。設計上は「起点(Reference Center)」と「軸・向き(Reference Frame)」を分離しているため、同じ数値ベクトルでも意味的に異なるもの(例:地心座標の位置 vs 観測者基準の向き)を区別できます。位置はアフィン点として扱い、方向はノルムを保つ単位ベクトル型、変位や速度はその場で移動可能な自由ベクトルとして区別されます。これにより、位置と変位の足し算や、方向の正規化など数学的に意味のある操作のみを型レベルで許容し、不正な操作(例えば単位ベクトルと位置の不適切な混用)をコンパイル時に検出できます。また、Rustのジェネリクスとトレイトを利用して実装されている想定で、異なる参照フレーム間の変換や座標系依存の演算はトレイト境界で安全に定義でき、最適化されたコード生成(zero-cost abstraction)により実行時オーバーヘッドが小さい点も期待できます。本リポジトリはファイル数・コミット数ともに非常に小さく、開発初期段階のプロトタイプとして位置付けられ、拡張や他の天文・地理系ライブラリとの統合が見込まれます。

プロジェクトの構成

主要なファイルとディレクトリ:

  • .gitignore: file
  • Cargo.lock: file
  • Cargo.toml: file
  • LICENSE: file
  • README.md: file

…他 1 ファイル

まとめ

型安全な座標操作に注力した小規模な基盤ライブラリ、拡張性あり。

リポジトリ情報:

READMEの抜粋:

affn

Affine geometry primitives for strongly-typed coordinate systems.

affn provides the mathematical foundation for working with coordinate systems in scientific computing:

  • Reference Centers: Origin points for coordinate systems (e.g., Heliocentric, Geocentric, Topocentric)
  • Reference Frames: Orientation of coordinate axes (e.g., ICRS, Ecliptic, Equatorial)
  • Cartesian Types: Position (affine points), Direction (unit vectors), Displacement/Velocity (free vectors)
  • **S…