マウス/スクリーン座標をアイソメ タイル インデックスに変換するのに苦労しています。ここまたはインターネットで見つけることができるすべての式を試しましたが、どれも機能していないように見えるか、何かが欠けています.
これが画像です。原点は左上隅にあり、1 つのタイルのサイズは 128x64px です。
助けていただければ幸いです、ありがとう。
マウス/スクリーン座標をアイソメ タイル インデックスに変換するのに苦労しています。ここまたはインターネットで見つけることができるすべての式を試しましたが、どれも機能していないように見えるか、何かが欠けています.
これが画像です。原点は左上隅にあり、1 つのタイルのサイズは 128x64px です。
助けていただければ幸いです、ありがとう。
acfrancis による解決策を試してみたところ、負のインデックスに関しては関数に限界があることがわかりました。他の誰かがこの問題に取り組む場合に備えて: 問題の理由: -0.1 などの負の値は、-1 ではなく 0 にキャストされます。配列の古典的な「ゼロは1つしかない」問題です。
それを解決するには: x2、y2 の値を int にキャストする前に: xr/diag < 0 かどうかを確認し、真の場合は結果 = 結果 - 1 (それぞれ y2 の場合: yr * -1 / diag < 0 の場合、結果 = 結果 -1) ) 次に、結果の値を以前のように int にキャストします。
それが役に立てば幸い。
追加: 128*5 による原点の変換は、特定のケースに固有のように思われるため、関数を一般化するためにこれを削除する必要があると思います。