このチュートリアルを使用して、アイソメタイルの座標系に頭を巻き付けようとしています。不必要なクリックを避けるために以下にコピーしている最後のスニペットを除いて、ほとんど理解できています=)
/**
* Intersect two line segments defined by A->B and C->D
*
* Returns the time of intersection along A->B
*/
public function RayIntersect(A : Vector2, B : Vector2, C : Vector2, D : Vector2) : Number
{
// turn C->D into a plane...
const n : Vector2 = D.Sub(C).m_Perp;
// ...and do the regular plane vs ray maths
const numerator : Number = C.Sub(A).Dot(n);
const denom : Number = B.Sub(A).Dot(n);
return numerator / denom;
}
これがどの言語で書かれているのか(Java?ActionScript?)はよくわかりませんが、画面の座標を取得してマップスペースに投影するという考え方です。次の図は、実行されていることの概要を示しています。
点が与えられた場合、軸と軸P
に沿った交点を見つけたいと思います。残念ながら、私の行列代数は(非常に)錆びているので、コードで何が行われているのかを推測するのに苦労しています。Pythonの翻訳は、私がこれを理解するのに大いに役立ちます。up
right
重要なポイントの1つは、マップを表すために2D numpy配列を使用しているため、行列変換はnumpyを介して処理するのが理想的です。
事前にどうもありがとうございました!