スポンサーサイト

  • --/--/--(--) --:--:--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Bullet移植中……(副題:εってどのくらい?)

  • 2010/07/05(月) 02:44:26

物理エンジンのBulletを移植中……

現在必要分の移植は終わったのですが……
まぁ、バグってちゃんと動かないのでデバッグ中……
土日デバッグしてもつぶしきれない程度のバグ……

時間も体力もあまりかけてられないので
ソースほとんどコピペでいけるような移植方法を採用したので
写間違いは無いんだけど……

単純に移すだけでは上手くいかない箇所が何個かあるので、そこはちゃんと実装した……はずなんだけどねぇ……
その辺りでバグが出てるっぽい

理論的に間違ってる系のバグは厄介だなぁ……
おかげで土日潰してもバグがつぶしきれない

今潰したバグの中で一番ウザ買ったのがε(イプシロン)です。
浮動小数点演算にはよく「ある程度以下のズレは無しとする」として±εの範囲で判定することが多いのですが……
Bulletで使ってるεはfloat.hのFLT_EPSILONなのですが、これ、C#のfloat.Epsilonとぜんぜん違う値なんですよ……
float.hのFLT_EPSILONは1.19e-7ぐらいの値で、C#のfloat.Epsilonは1.4013e-045fです。
実はこれ、εの意味が違うんですよ。
float.hのεは計算上1+ε!=1となる非負の最小値として定義されるのに対して
float.Epsilonはε!=0となる非負の最小値が定義というズレが……

なんじゃそりゃあああああああああああぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁぁ

スポンサーサイト

この記事に対するトラックバック

この記事のトラックバックURL

この記事にトラックバックする(FC2ブログユーザー)

この記事に対するコメント

コメント投稿

管理者にだけ表示を許可する

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。