2017-12-21 27 views
0

次の問題があります。 3Dでは、平面の中心から原点までのベクトルがあります。この平面はこの中心の周りに任意の座標を持ち、その法線ベクトルは必ずしも言及されたベクトルではありません。したがって、私は、この固定された中心の周りで平面を回転させて、言及したベクトルが平面の法線ベクトルになるようにしなければなりません。回転する平面にある法線ベクトルがあるように

私の最初のアイデアは、ベクトルと法線ベクトルの間の角度を計算することでしたが、問題は平面の回転方法です。

アイデア?

+0

を、あなただけの2つの事業に分割する必要があります:xの角度を計算し、zの周りを回転させ、次にyの角度を計算し、xの周りを回転させます。 – user2328447

+0

これまでに何を試しましたか?この問題を解決するために私たち自身の努力を示していない限り、誰もあなたに普通のコードやアルゴリズムを与えません。 – Fureeish

+0

私はコードを提供する人を探していませんでした。 –

答えて

0

面は、次式を満たす数学的実体ある:

nが正常で、かつ aは上記平面上の任意の点(ここでは中心点である

enter image description here

)。この方程式を「回転」するのは意味がありません。平面を特定の方向に向けるには、法線をその方向(つまり、「言及された」ベクトル)に等しくするだけです。

「平面」がOpenGLクワッドであるというコメントの後で、Quaternionsを使用して回転を計算することができます。

This Stackoverflow postは、現在の法線ベクトルから "記載された"ベクトルへの回転四元数の計算方法を説明しています。 This siteは、四元数を回転行列(次元が3x3)に変換する方法を説明します。

はの中心点がq呼ばれるとしましょう、とあなたが求める回転行列は、次の形式を持っていること:

enter image description here

これはのみ起源についてのジオメトリを回転させることができます。一般的なポイントの周りの回転は、以下のように構築することができ4×4マトリックス(OpenGLは使用するもの)が必要です:私はあなたの最初の考えは正しいと思い

enter image description here

関連する問題