
2025/12/29 8:11
「球形の牛」
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
要約
「Spherical Cow」 は、MIT/Apache ライセンスのコンパクトな Rust ライブラリで、高ボリュームの球 packing を実現します。ビルド済みコードは約 49 KB、ソースコードは 764 行 ですが、完全なリポジトリは約 6 MB、SLoC は ≈114 K 程度です。Valera らの advancing fronts アルゴリズム(Computational Particle Mechanics 2, 161 (2015))をベースにしており、シンプルな API を公開しています。
spherical_cow::pack_spheres(boundary, &mut sizes);
この関数は半径 0.1–0.2 の球を半径 2 の包絡球内に packing します。ライブラリは docs.rs に完全にドキュメント化されており、リポジトリの
examples ディレクトリには実行可能なサンプルが含まれています。
もともとは将来の月・火星建設用インフレ式宇宙居住施設のレイアウト最適化を目的として考案されましたが、既に頭蓋モデルの packing(骨折研究)や切削工具の配置(荷重下での破壊点検出)など実世界の問題にも応用されています。ドキュメントには「真空中の球状牛」を議論する乳業者と理論物理学者の架空エピソードも収録されています。
依存関係は
float-cmp 0.8、itertools 0.10、nalgebra 0.24、rand 0.8、rand_distr 0.4、serde‑1(および関連クレート)です。開発用依存関係には criterion 0.3、kiss3d 0.29、obj、serde_json が含まれます。またプロジェクトは外部ライブラリとして wayland-protocols(MIT)と kiss3d をリンクしており、リポジトリ内のファイルの一つは Martin Gräßlin による LGPL‑2.1 ライセンスです。
将来のリリースではアルゴリズムの改善、機能拡張、および適用範囲の拡大が期待されます。これにより、宇宙建設プロジェクトやその他の高ボリューム packing アプリケーションの設計サイクルを加速できる可能性があります
本文
Spherical Cow – 高ボリューム比の球パッキングライブラリ
リリース履歴
- 0.1.4 – 2021年2月12日
- 0.1.3 – 2021年2月11日
- 0.1.2 – 2018年10月29日
- 0.1.1 – 2018年1月22日
- 0.1.0 – 2018年1月21日
プロジェクト情報
| #2554(アルゴリズム) | 月間ダウンロード数 |
|---|---|
で使用 | MIT / Apache |
- サイズ: 49 KB
- コード行数: 764
概要
Spherical Cow は Valera らが Computational Particle Mechanics vol. 2, 161 (2015) に記載した advancing‑fronts アルゴリズムを実装しています。
本ライブラリは、コンテナ球内部に効率的に球を詰めることができ、以下のような応用例があります。
- 頭蓋骨モデルを詰めて衝撃下での破裂パターンを解析する際に利用
- 切削工具を詰めて荷重下での失敗点を特定する際に利用
当初の動機は、月や火星用インフレ可能な宇宙棲息施設のレイアウト最適化でした。
使い方
use spherical_cow::shapes::Sphere; use rand::distributions::Uniform; use nalgebra::Point3; fn main() { let boundary = Sphere::new(Point3::origin(), 2.0).unwrap(); let mut sizes = Uniform::new(0.1, 0.2); let spheres = spherical_cow::pack_spheres(boundary, &mut sizes).unwrap(); println!("Number of spheres: {}", spheres.len()); }
より詳細な例は
examples ディレクトリにあります。実行するには:
cargo run --example show_in_cow
ライセンス
Apache License 2.0 または MIT license のいずれかを選択してご利用ください。
これらのファイルは、該当ライセンスに従わない限りコピー・変更・配布できません。
深く結びついた依存関係:
(MIT) –wayland-protocols
とkiss3d
が例示ディレクトリで使用。obj
は © 2015 Martin Gräßlin によるもので LGPL‑2.1 でライセンスされています。 https://www.gnu.org/licenses/lgpl-2.1.en.htmlmisc/server-decoration.xml
依存関係
float-cmp 0.8 itertools 0.10 nalgebra 0.24 rand 0.8 rand_distr 0.4 serde-1? serde
開発用依存関係
criterion 0.3 kiss3d 0.29 obj serde_json