Index: [Article Count Order] [Thread]

Date:  Thu, 13 Mar 2003 10:08:44 +0900
From:  Kenji Hiranabe <hiranabe@....jp>
Subject:  [XP-jp:04211] Re: 浮動小数点演算や幾何演算のテスト
To:  extremeprogramming-jp@....jp
Message-Id:  <20030313100844F.hiranabe@....jp>
In-Reply-To:  Your message of "Wed, 12 Mar 2003 20:16:37 +0900"	<20030312194340.047C.TERADA@....jp>
References:  <20030312194340.047C.TERADA@....jp>
X-Mail-Count: 04211

寺田さん,樋口さん,
平鍋です.

On Wed, 12 Mar 2003 20:16:37 +0900,
"Y.Terada" <terada@....jp> said:

 > 「近傍」の概念で同一判定をすると,同値関係の推移則が成立しなくなってしま
 > います.結局,浮動小数点は実数を模擬しているだけで,実数そのものではない
 > のです.従って,浮動小数点演算は数学とは良く似ていても実は異なるものだと
 > 考えなくてはならないようです.
 > この辺りの,どうしても形状処理に紛れ込んでしまう「泥臭さ」が,オブジェク
 > ト指向や契約主導設計,ユニットテストといった技術の導入を阻んでいるような
 > 気がしてなりません.
 > なんとかしたいという気持ちは強く持っているのですが・・・.

はい.御意です.

>> また便乗質問になってしまいますが,そういえば,以前,こういう 
>> double と epsilon を使った形状処理ではなく,ディスクリートな
>> 同一判定と多倍長数を使った形状処理の論文(本?)を読んだことが
>> ありますが,失念しました.寺田さんご存知ないでしょうか? これ
>> を使った形状処理アプリケーションは,世の中にないのでしょうか
>> ね?

 > 私が読んだのは,「4次元理論による図形・形状処理工学,山口富士夫」です.
 > この本では,「諸悪の根源は除算である」と主張しています.そして,幾何演算
 > を全て同次座標系で行うことにより,ベクトルや行列に対する除算を完全に取り
 > 除くことを提案しています.除算を排除すると,加算/減算/掛算 だけになりま
 > すから,すべて(多倍精度の)整数演算で行うことが可能になります.

了解です.この本は読んでいましたが,「すべて(多倍精度の)整
数演算」という部分は覚えていませんでした.同次座標はいいとし
て,そうかー,除算を全く無くすることが可能なんですねー.
p1 と p2 の同一点判定も割算なしで,

  w2*(x1, y1, z1) == w1*(x2, y2, z2)

てな具合ですか.溢れの扱いさえうまくやればいいと.
私が想定していた本は,樋口さんも紹介されている,

 > なお,他にも「計算幾何工学,杉原厚吉」にも幾何演算を頑健に行うための工夫
 > が解説されています.こちらはもうちょっと気軽に使える手法ですので,実用に
 > もなっていると思います.この本で紹介されているのは,
 > ・整数帰着法 ・・・ 全部整数演算に置き換えてしまえ!
 > ・記号摂動法 ・・・ 記号的な摂動により,面倒な特殊処理を減らそう!
 > ・位相優先法 ・・・ 幾何データよりも位相データを信じろ!
 > です.

ですね.ちっと検索してみると,著者のこんなページを発見しました.
キャッチがおもしろいですね.

「幾何計算のソフトウェアを作ったはずなのに,
うまく動かなくて落ち込んでいる方へ.」
http://www.simplex.t.u-tokyo.ac.jp/~sugihara/kakekomi/softmess.html

以上