2

私が解決しようとしている問題は、三角形と立方体の交点に対して AABB を生成することです。2D では、必要なボリュームは次の緑色の四角形です。 ここに画像の説明を入力

入力ポイントと出力境界は IEEE float です。

浮動小数点を使用する現在の方法は、三角形をボクセルの各面にクリップし、結果のポリゴンをバインドすることです。ただし、浮動小数点を使用すると交点が正確ではないため、結果の AABB が交点領域を完全に境界付けない場合があります。保守的な境界が必要です。

クリッピングに区間演算を使用することを検討しましたが、2 つの潜在的な問題があります。

  • 一連の操作の間隔が大きくなる可能性があります
  • 条件が間隔に依存する分岐は混乱します。結果が不確実になる可能性があるため、両方の可能性を計算する必要があります。例えば。もし (線が平面と交差する)

これを行うためのよりきちんとした方法はありますか?最終結果をオフセットするために必要なイプシロンを計算する方法はありますか? double で計算し、最終的な浮動小数点数の結果を 1ULP オフセットするためだけにテンピングします。これは、double 演算が 28 ビットを超えるエラーを蓄積しないことを期待しています。証明できれば良いのですが。

有理演算も別の選択肢かもしれませんが、入力が浮動小数点範囲全体に及ぶ場合に十分なビット数を保証する方法がわかりません。

助言がありますか?前もって感謝します。

4

0 に答える 0