ロボティクスをやっていると複雑な座標変換を扱う必要がよく出てくる.こういうときによくやられるのが,座標系Aにある点p_aを座標系Bへ動かす変換をT_a_bと記述することにして,AからCへの変換を求めたいときはT_a_b * T_b_c = T_a_cという風に左右の項がチェインするように書けば混乱なく座標系変換を扱うことができる.
これはこれで実用上うまい方法ではあるが,あくまで変数名で変換の整合性を目視確認しているだけなので,うっかり間違いが起きる可能性はある.今回はこの変換の整合性の確認をコンパイラに静的やってもらおうと思って以下のようなコードを書いてみた.基本的にはboostなどの単位系の静的チェックと同じ要領で型システムで間違った変換をはじくようにしている.
続きを読む