2017-04-02 1 views
0

ベクトル位置が2つ、カメラ位置が1つ、ターゲット位置が2つあるとします。私はまたカメラの各側から2つのベクトルV1、V2を持っています。私はどちらが右にいるのかわかりませんが、どちらか一方は確かに正しいです。2点のうちのどれが右にあるのかを調べる

それは上から以下のようになります。V1は、右または左にある場合

enter image description here

にはどうすれば知ることができますか?

カメラを右に動かすための機能が組み込まれているので、距離を確認して元の位置に戻すと思っていましたが、それは醜い解決策です。

また、{target - camera}と{V1 - camera}ベクトルの間にドットプロダクトを使用すると考えられ、それが正の場合は右に、負の場合は左に表示されますそのように動作しませんので、例えば:

{0,1,0}.{1,1,0} = {0,1,0}.{-1,1,0} = 1

それを行う方法上の任意の他のアイデア?

+0

申し訳ありませんが、私は 'atan2'が助けになると思います。 –

+0

Arctan 2? 2とは何ですか?それは何を受け取る? three.jsにそれがあるかどうかはわかりません。 @AhmedFasih – shinzou

+0

3D空間で用語「右」を定義するには、1つのベクトル(カメラターゲット)を取得するだけでは不十分です。選択した方向がもう1つ必要です。たとえば、カメラを右に動かすために回転軸の方向'。 – MBo

答えて

0

コメントのおかげで、答えは{cam, target, cam + up}にまたがる飛行機の法線をとり、v1でドットプロダクトを実行することです。

すなわち:{{cam + up} - {cam} x {target - cam}} . {v1 - cam}

すべての3つの減算は線形独立であるので、det({cam + up} - {cam} | {target - cam} | {v1 - cam})と同じです。

関連する問題