等角投影で最初に表示されるタイルを決定するにはどうすればよいですか?


7

ひし形のアイソメトリックマップの表示部分をレンダリングしようとしています。「ワールド」座標系は2Dデカルト系であり、座標は軸に沿って(ビュー座標系に関して)対角線上に増加します。「ビュー」座標は、単にビューの左上隅を基準にしたマウスオフセットです。

ここに画像の説明を入力してください

私のレンダリングアルゴリズムは、ビューの右上隅から始まり、右下に斜めに移動して斜めのスパンを描画し、ビューの右端に到達すると次の行に進みます。レンダリングループが左下隅に到達すると停止します。

ポイントをビュー座標から世界座標に変換してから、座標をマップする関数があります。

タイル0、0からレンダリングする場合はすべてが機能しますが、ビューがスクロールするにつれて、レンダリングは別のタイルから開始する必要があります。どのタイルが右上隅に最も近いかを判断する方法がわかりません。

現時点では、右上隅の座標をマップ座標に単純に変換しています。これは、ビューの原点(右上隅)が世界の内側にある限り機能しますが、マップの端に近づくと、開始タイルの座標が明らかに無効になります。

これは、「ワールドX軸とビューX軸の間の交点をどのようにして見つけることができるのですか?」


問題の絵による表現を与えることは本当に価値があります...あなたはそのplsを行うことができますか?
Ayyappa

wikiの等角投影法の数式で解決しようとしましたか?
user712092 2011年

@ user712092:はい、4x4マトリックスを使用してビュー空間とワールド空間を変換しています。これは機能しますが、問題は、ビューの右上端に最も近いタイルのX、Y座標を計算する方法です。
alekop、2011年

@Man With Steel Nerves:私はスクリーンショットを投稿しますが、評判が低いため許可されません。しかし、小さな四角形の中にクリップされた大きなダイヤモンドを想像してください。
alekop、2011年

a)画像ホスティングサイトに画像をアップロードし、そのURLをそこに挿入します。b)1つのペーストビンURLに複数の画像URLを含めることができます。c)テキストリンク「テキストは、接尾辞Lxzygtv9が付いたペーストビンにあります」を挿入します。その画像は後でできます。または、今すぐ画像を追加できる他の人ができます(画像を編集および挿入する権限があるようです)。
user712092 2011年

回答:


1

しかし、マップの端に近づくと、開始タイルの座標は明らかに無効になります。

実際には、スポットのデータがない場合がありますが、同じ数式を使用しても問題はありません。

潜在的な問題を克服する方法についての提案が必要な場合は、適切なコードを提示してください。

編集:
わかりやすくするために、0〜99のインデックスが付けられた100x100のタイルマップがあるとします。レンダリングの場合は、次のようにします。

//Loop structure that iterate through tiles
    if(tileX<=99 && tileX>=0 && tileY<=99 && tileY>=0){
        //Draw the tile
    }
    else{
        //Do nothing
    }
//End of loop

それは良いアイデアです。continue現在のタイルがマップとビューの内側になるまで、単純にレンダリングループを作成できます。時間があったらすぐにやってみます!:)
alekop '13年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.