わかりました。まず最初に、同様の質問が Web のいたるところにあることを知っています。数え切れないほど調べました。現在、ほぼ 3 週間にわたってそれを理解しようとしています (常にではなく、オンとオフだけです)。 、洞察の火花を期待しています)。
最後に、私が取得したいのは、回転したい量を渡す関数です (現在、私はラジアンで作業していますが、度またはラジアンに行くことができます)。私が持っていた翻訳。
2Dデカルト平面で「Z」軸を中心に回転する式は次のとおりです。
[cos(radians) -sin(radians) 0]
[sin(radians) cos(radians) 0]
[0 0 1]
行列演算 (加算、減算、乗算、行列式/逆行列) はかなりよく理解していますが、理解していないのは、回転に使用できる行列を段階的に作成し、変換を維持する方法です (スケールのようなその他のもの) があります。
他の例から集めたものから、現在のマトリックス (それが何であれ、今は単位マトリックスを使用しましょう) を次のようなマトリックスで乗算します。
[cos(radians) - sin(radians)]
[sin(radians) + cos(radians)]
[1]
しかし、元のマトリックスは 3x3 ではなく 3x1 マトリックスになってしまいますね。何が欠けているのかわかりませんが、何かが正しくないように思えます。誰かが私のために書いてくれるコードを必ずしも探しているわけではありません。これを適切に行う方法を理解し、自分で書くことができるようにするためです。(他の人のコードを見ないというわけではありません:))
(誰にとっても重要かどうかはわかりませんが、念のため、Windows 7 64ビット、Visual Studio 2010 Ultimateを使用しており、OpenGLを信じています。これはUni用です)
私たちがそれに取り組んでいる間、誰かが私のためにこれを再確認できますか? それが正しいように見えることを確認するだけです。
翻訳マトリックス (ここでも Identity を使用します) は次のようなものです。
[1, 0, X translation element]
[0, 1, Y translation element]
[0, 0, 1]