0

数学の問題があります。あるワールド位置に (3 つまたは 4 つの頂点を持つ) 顔があるとします。顔が「上を向いて」中央(0、y、0)になるように、メッシュを移動/回転させたいと思います。これを実現するために必要な数式は何ですか?

元の位置の面 好きな位置に顔を向ける

GUI でこれを行うことができます (この例は単純に appx -90 度の x 回転でした) が、スクリプトを介してこれを行う必要があるため、これを数学的に行う方法を知る必要があります。

編集: これらのベクトルは、v1 が v2 の位置になるまで回転させたいメッシュの一部であることに注意してください (原点 (0,0,0))。

失敗している疑似コードは次のとおりです。

v1 = vector(0,10,0)
v2 = vector(0,-10,0)

v1 = normalize(v1)
v2 = normalize(v2)

cross = normalize( v2.cross(v1) )  // (0,0,0)
angle = acos( v2.dot(v1) )  // 180

quat  = quaternion(cross,angle) // {w:1,x:0,y:0,z:0}

四元数は {w:?,x:3.14159,y:0,z:0} または {w:?,x:0,y:0,z:3.14159} のようなものになると思いました

4

1 に答える 1