球面上に分布する不連続な値を球面調和関数展開するコードを書いた。
実装に恐らく誤りがあり、参考にしないほうが良いと思われる
以前書いた球面調和関数とその可視化 - tak0kadaの何でもノートと連続な関数f(θ, φ)の球面調和関数展開 - tak0kadaの何でもノートの離散版。他の人の書いたコードの上で実装していて、Mesh、Quaternion、Vector、Face、Vertexクラスがいい感じに定義されているものに組み込めるように書いた。オブジェクトの方には副作用がないようにして、1関数にまとめてあるので今後このコードをいじるのにも影響しにくいはず。ドキュメントはShapeMove/document.pdf at master · statgenetJimu/ShapeMove · GitHubに置いた。
頂点ごとに対応する面積があるはずだが、重心ベースにするかは考慮の余地がある。
今回書いたもの
- 実数の球面調和関数:
- 球面調和関数の展開と復元の関数: SH_expandとSH_restoreData
- その他細かい関数:
- テスト:
Catch使いやすくてよかった。