私は頭がおかしくないという問題があります。ベクター(OpenGL ES)で回転する
私は球を使用します。ユーザーが球のどこかに触れると、すべてOpenGL座標で3Dベクトル(x、y、z)の形でポイントを取得します。
私はまた球の上に定義された点を始め、3Dベクトルも持っています。例えば
:
実VのX:-0.2881811、Y:0.25460157、Z:0.9231087
"本当のVは" で始まるように定義点です。 (球は1.0のreadiusを持っています)
gl.glRotatefを使って球を回転させた後、私はOpenGL座標 "real V"で新しい点をピンアウトしたいと思います。これにより
は、私はこのようなものを使用します。
「getRotationX及びYは、(私は正しいことを知っていること)球の総回転でreal.rotate(-model.getRotationX(), 1f, 0f, 0);
real.rotate(-model.getRotationY(), 0f, 1f, 0);
と実際のがを回転させます。
これを実行し、spehereのorigin-vectorを追加することでベクトル "real(V)"を変換すると、次のようになります。 "本当の(V)"ベクトル私は、例えば、私はフラグや似たような設定することができるspehereに正しい新しいポイントを得るだろうと思うだろう。
問題は、ベクトル回転の直後に何かが得られないということです。
私は球を回転させないので、ベクトルを回転させないと、すべてが私が望む方法になります。しかし、私がそれを回転させると、より多くの回転が正しいポイントから来るようになります。続い
がLogCatからの概要である:
実VのX:-0.2881811、Y:0.25460157、Z:0.9231087
は、V xを回転:0.10823092、Y:0.79800075を、Z:0.5928582
はV Xを添加することができますように0.8235738
:0.10823092、Y:0.79800075、Z:0.5928583
backRotated V X:-0.5257477、Y:0.21287462、Z -3.4071417
は、V xを減算:0.10823092、Y:Z 0.79800075、セ、バックロス時それは何らかの理由でオリジナルと同じではありません。
Vector3 real = Result.getRealVector(location);
Log.d(TAG, "real V "+ real.toString());
real.rotate(-model.getRotationX(), 1f, 0f, 0);
real.rotate(-model.getRotationY(), 0f, 1f, 0);
Log.d(TAG, "rotated V " + real.toString());
real.add(model);
Log.d(TAG, "added V " + real.toString());
real.sub(model);
Log.d(TAG, "subtracted V " + real.toString());
real.rotate(model.getRotationX(), 1f, 0f, 0f);
real.rotate(model.getRotationY(), 0f, 1f, 0f);
Log.d(TAG, "backRotated V " + real.toString());
それは私がそれを説明するのはやや難しい、私の問題を理解するのは難しいかもしれ知っているこれまでの、ポイントはsomwhereそれがあるべき場所の近くに、常にではないのですが、それでも...
。 私が望んでいるのは、明らかな問題を見ている人です。
あなたは私の友人がちょうど最後の5時間私のために欲求不満の原因となった問題を解決しました、今は、その場で動作します。ありがとう! – Henrik
私は助けることができてうれしいです。 – kappamaki