1

基本的な sin と cos を使用して 2D マップを操作し、3D 視点を与えることに成功しています。

私が抱えている問題は、ビューポートに表示されているものを見つけようとして立ち往生していることです。逆に変換を効果的に行うと、出力は [0,0] と [幅、高さ] になり、マップ上のこれらのポイントがどこにあるかを知りたいと思います。

私はそれを逆にしようとするところまで来ました:

display_x = (source_x * cos(z)) + (source_y * sin(z))
display_y = (source_y * cos(z)) - (source_x * sin(z))

display_xおよびdisplay_yおよびが未知数source_xであることがわかっている場合source_y、未知数が何であるかをどのように解決できますか? 私の連立方程式の知識は少し錆びています。

4

2 に答える 2

5

効果的に 2 次元回転行列を使用しています (display_y の定義で source_x を source_y に置き換えたタイプミスがあると確信しています)。

http://en.wikipedia.org/wiki/Rotation_matrix

[ cos(z), sin(z) ] [ source_x ] = [ display_x ]
[-sin(z), cos(z) ] [ source_y ]   [ display_y ]

この行列を反転するために必要なのは、直交であることが保証されているため、転置 (対角線上で反転) を見つけることだけです。

したがって、次のようになります。

display_x = (source_x * cos(z)) - (source_y * sin(z)) 
display_y = (source_x * sin(z)) + (source_y * cos(z))
于 2012-12-07T00:43:47.103 に答える
2

変換は角度 z による回転であるため、角度 -z だけ回転して逆にする必要があります。これにより、次の結果が得られます。

source_x = (display_x * cos(z)) - (display_y * sin(z))
source_y = (display_x * cos(z)) + (display_y * sin(z))

これはそれを使用します:

cos(z) == cos(-z)
sin(-z) == -sin(z)
于 2012-12-07T00:42:22.310 に答える