- CGファイル概説 目次のTiffファイルの項目が分かりやすい(分かってない)
- IFDという色々のパラメータを入れるテーブルがある
- 実際のデータはフィールドが
StripOffsets
となっているところを見てオフセットを調べて読み取る - https://symfo.web.fc2.com/blog/tiff_hex.htmlに説明付きの例がある。この例では画像が1つ入ったTiffファイルになっている。
- 中身はBMPらしい
- バイナリファイルの中身は16進数とASCII文字の変換表を見ながら考える
- pythonでは
chr(0x49)
、hex(ord('I'))
などとして相互に変換できる
- pythonでは
点の集合を包含する球
点の集合を包含する球のアルゴリズムを参照した。
続きを読む方向統計学で出てくる分布
球面上の分布をKL-divergenceで比較できないか調べ物をしていていくつか分布を見つけた。指数分布族であり、正規分布と似た表記になっている。画像検索で分布の雰囲気を調べていると、一峰性の分布の絵が出てくる。ガウス平滑化のような使い方が出来れば良いのかもしれない。
- Kent分布
- von Mises分布
- von Mises–Fisher分布
- Bingham分布
- Better robot vision | MIT News
- https://arxiv.org/pdf/1304.7399v1.pdf
- Bingham分布を物体検知に使っている。法線の分布を見ているらしい。
- Fisher-Bingham分布
- Directional Statistics カテゴリーの記事一覧 - ryamadaの遺伝学・遺伝統計学メモ
使うとしても結構先になりそうなので深入りするのは止めておく。
vim-lspとaleのインストール
YouCompleteMeをC++のためにインストールしていたが、Vim弱者のため設定が直せなくなってprabirshrestha/vim-lspとw0rp/aleに乗り換えた。vim-lspもaleもコードの解析にclangdを利用しており、compile_flags.txt
というファイルを置いておかないと、デフォルトの-Wall -std=c++14
が採用されC++17以降の機能を使うとエラーが出る。vim-lspについてはカレントディレクトリにcompile_flags.txt
を置いてやると自動で読み込んでくれるが、aleについてはその方法では解決しないため、g:ale_cpp_CXX_options
を設定してやる必要がある。また、vim-lspについてはvimのvirtualtextという機能を使ってエラー表示をインラインにしてくれるが、これもちょっとうるさいので出ないようにした。
空間分割アルゴリズム
三角形に分割された閉曲面(球面)と複数の半直線があったとき、それぞれが交差するかどうかの判定をしたい。レイトレーシングで使用されるようなアルゴリズムとしてはBVH、Quadtree、Octreeなどが見つかった。
BVH (Bounding Volume Hierarchies)は、領域を木構造に分割して、AABBという直方体との交差判定を行うことで、オブジェクトとの交差の判定回数を減らす方法である。この方法は、疎にオブジェクトが散らばっている場合、木構造が容易に定まり、光線の大半はオブジェクトと交差しないため特に有効だと思われる。
今回の状況を考えると、三角形は球面を全て埋め尽くしているため半直線は必ずいずれかの三角形と交差すること、頂点の座標は極座標で与えれば2次元であることが特徴的である。四分木を用いて三角形を含む「長方形」を事前に処理しておくのが良さそうである。
(とはいえ実装は出来れば回避したく、たぶん使わないのでこのページは開きすぎたタブの供養にあたる)
続きを読む三角メッシュ用のライブラリ書いた
GitHub - tak0kada/cnthd: Halfedge data structure for triangular mesh ハーフエッジデータ構造のC++ライブラリ。面の向き付けがバラバラなファイルに対応しようと思っていたがバグを出してしまって(しかもそれほど使わない機能)書き直す時間が惜しいのでまともなファイルが来るのが前提になっている。テストもいい加減で目視で確かめただけである。以下は使用例。
続きを読む