0

これは 3D n00b の質問です。

Silverlight の PerspectiveTransform 機能の基本を実装する WPF コントロールに取り組んでおり、3 つの軸のいずれかで 2D 平面を回転させることができます。それはかなりうまくいきます。ただし、飛行機の背面が表示されているかどうかを判断するために必要な計算に少し固執しています。それを理解するための私の単純なコードは次のとおりです。

bool isBackShowing = Math.Abs(RotationX) > 90 && Math.Abs(RotationY) < 90;
if (!isBackShowing)
{
    isBackShowing = Math.Abs(RotationX) < 90 && Math.Abs(RotationY) > 90;
}

ただし、回転がいずれかの軸で +-270 から +-360 の間である場合、これは失敗します。

基礎となる変換では、Quaternion オブジェクトを使用して実際の回転を行います。これには Axis と Angle の優れたプロパティがあるため、方法がわかればそれを使用できると思います。

4

1 に答える 1

5

平面法線と視線方向の内積を行う必要があります。

それが正の場合、飛行機はあなたとは反対を向いています。

それが負の場合、飛行機はあなたの方を向いています。

ゼロの場合は、上の平面の端を見ています。

平面法線を見つけるには、平面上の任意の3点を取ります。それらをOAおよびBと呼びます。OからAおよびOからBのベクトルを取ります。これら2つのベクトルの外積をとると、法線が得られます。計算の順序が重要になるので注意してください。3Dジオメトリに関する優れた本/ウェブサイトは非常に役立ちます

ウィキペディア

于 2010-05-24T16:20:25.150 に答える