樋口です。
今、力学シミュレータを作っているのですが、
何せ、「そもそもリアルタイムで動作する上に、
結果が数値的にどうなるのかわからない」:-)
という状態なので、もっぱら目視判定になっちゃってます。
うーん、よくないですねぇ。
浮動小数点演算の等値判定は、
いわゆる epsilon で単純判定するのが手っ取り早いわけですが、
あえて、誤差は当然発生するものとして、
精度情報を持たせたまま計算するというアプローチもあります。
1.0、1.00、1.000
どれもそのまま 64bit の double に代入すると
1.00000000000000 (くらいかな)として表現されてしまうわけですが、
これを
1.0±0.1、1.00±0.01、1.000±0.001 という誤差をつけたり
あるいは[0.9, 1.1], [0.99, 1.01], [0.999, 1.001] という区間にしたりします。
[0.9, 1.1] * [0.9, 1.1] = [0.81, 1.21] とするわけです。
精度保証付き計算とか区間演算と呼ばれています。
これは結構メジャーなので
(といっても、知ってるのは一部の研究者くらいのようですが)
検索すれば適当な資料が見つかるかと思います。
あと、幾何的な構造から、幾何情報を崩さないようにするアプローチもあります。
この本に詳しく書いてあります。(まだ、完全に読みきってませんが…)
培風館「計算幾何工学」杉原厚吉著
ISBN4-563-03642-0
こっちはかなりマイナーなようです。
// bugbear@....nu
// 樋口 勝也