Discrete Differential-Geometry Operators for Triangulated 2-Manifolds | SpringerLinkを実装した。
「はじめての数理論理学」を読んだ
命題を(形式的に)正しく書き下せないと数学専門の人と会話にすら出来ないのではじめての数理論理学 証明を作りながら学ぶ記号論理の考え方 | 森北出版株式会社を読んだ。以下駄文。
続きを読む楕円体のアラインメント
楕円体を回転させて綺麗に並べる。
続きを読むプログラムのコメントスタイル
javadocスタイルでやっていくことにした(完)
FFTのお気持ち理解
DFTを速くやってくれるやつ。繰り返しになる部分を良い感じに処理してくれるのでO(n2)の計算がO(nlogn)が出来てしまう。多倍長乗算に応用されている。
- 離散フーリエ変換の計算法(pdf): 周期間引きというのは周期領域で行の入れ替えをすること
- 離散フーリエ変換を用いた多倍長乗算の話: 多倍長乗算への応用。FFT→
内積要素ごとの積→IFFTの順に計算する。 - 任意要素数の高速フーリエ変換 - Qiita: 実装
「やる夫で学ぶディジタル信号処理」
やる夫で学ぶディジタル信号処理の11章まで読んだ。以下はpdf中の図をフーリエ変換などについてまとめたもの。畳み込みetcは分からなくなったらまた記事を参照する。
続きを読むお蔵入りしたmeshlabのフィルターたち
meshlabはメッシュデータの可視化と色々の定型的な処理をしてくれる汎用性の高い便利ソフトウェアである。簡単なので色々試してみて、ある程度動作したけれど結局小回りが効かずにお蔵入りしそうなスクリプトを以下に貼っておく。
続きを読む球面上の分布間の距離
分布$X, X': S^{2} \to \mathrm{R}$があったとき、2つの分布の距離を例えば$d(X, X') := \int_{S^{2}} (X - X')^{2} d\theta d\phi$と定義すると球面調和関数$Y_{l,m}$を用いて$X = \sum_{l,m} c_{lm}Y_{lm}$と書けるので、$\int_{S^{2}} Y_{lm}Y_{jk} d\theta d\phi = \delta_{lj}\delta_{mk}$より、 $$ \begin{aligned} d(X, X') &= &\int_{S^{2}} (\sum_{l, m} c_{lm}Y_{lm} -\sum_{j, k} c'_{jk}Y_{jk})^{2} d\theta d\phi \\ &= &\sum_{l, m} \int_{S^{2}} (c_{lm} - c'_{lm})^{2}Y_{lm}^{2} d\theta d\phi \\ &= &\sum_{l, m} (c_{lm} - c'_{lm})^{2} \end{aligned} $$ 結局$(l+1)^{2}$次元の点の距離を計算するだけで良いことが分かる。この距離の定義だと近似するために置いた点の配置は無関係である。
ボクセルデータからのメッシュ生成
- 結論: GitHub - mkazhdan/IsoSurfaceExtraction: Isosurface extraction from regular voxel gridsで十分
(3D numpy array).flatten().tofile()
と(1D numpy array).tofile()
の出力は異なるので注意(python上での演算では区別が付かないがメモリのレイアウトが違うと思われる)
- 実装(python): GitHub - BorisTheBrave/mc-dc: Demonstration code for Marching Cubes and Dual Contouring
- Marching Cubes
- Dual Contouring
- 解説: Dual Contouring Tutorial – BorisTheBrave.Com
- 論文: https://people.eecs.berkeley.edu/~jrs/meshpapers/SchaeferWarren2.pdf
- 上記の実装(python): GitHub - BorisTheBrave/mc-dc: Demonstration code for Marching Cubes and Dual Contouring
- GitHub - emilk/Dual-Contouring: Dual Contoruing implemented in C++: C++の比較的シンプルな実装