トップページ > 過去ログ > 記事閲覧
平面方程式の正規化について
名前:トム 日時: 2012/05/06 01:25

DXライブラリ(Ver3.07f)のソースコードのDXMath.cppの 関数CreateNormalizePlaneで疑問に思ったので質問します。 正規化する際にfTempの計算でPlane->wも2乗してルートをとってますが、 xyzだけでいいのでは? よろしくお願いします。

Page: 1 |

Re: 平面方程式の正規化について ( No.1 )
名前:管理人 日時:2012/05/07 02:57

ご指摘ありがとうございます 処理をこんな感じに整理してみました // 平面上の点と平面の法線から正規化された平面パラメータを算出する extern void CreateNormalizePlane( FLOAT4 *Plane, VECTOR *Position, VECTOR *Normal ) { float fTemp ; fTemp = _SQRT( Normal->x * Normal->x + Normal->y * Normal->y + Normal->z * Normal->z ) ; Plane->x = Normal->x / fTemp ; Plane->y = Normal->y / fTemp ; Plane->z = Normal->z / fTemp ; Plane->w = -( Plane->x * Position->x + Plane->y * Position->y + Plane->z * Position->z ) ; }
Re: 平面方程式の正規化について ( No.2 )
名前:トム(解決) 日時:2012/05/08 18:39

>>処理をこんな感じに整理してみました 問題ないと思います (修正前の挙動が心配ですが・・・)
Re: 平面方程式の正規化について ( No.3 )
名前:管理人 日時:2012/05/13 04:08

3Dモデルのクリッピング判定に使用するパラメータの算出に使用しているのですが、実装当時のテストでは 修正前の式でもクリッピングの判定結果に問題はありませんでした 他の「正規化された平面のパラメータを使用する処理」があったら正常に動作していなかったかもしれませんが・・・

Page: 1 |