我正試圖建立一個矩形網格,可以在邊緣環繞。任何玩視頻遊戲的人都可能會熟悉這個概念:在世界地圖上朝一個方向走得足夠遠,並且最終會返回到開始的位置。但是,這會在設置視口時造成一些困難,因爲邊緣可以滾動到負座標區域。是否有一個簡單的「點矩陣」算法的環繞地圖?
這是很容易採取負座標和確定其實際價值:
function GetRealCoords(value: TPoint): TPoint;
begin
result := ModPoints(AddPoints(value, MAP_SIZE), MAP_SIZE);
end;
其中AddPoints和ModPoints簡單地套用+
和mod
運營商,分別給每個的兩個輸入座標以產生輸出值。
問題在於顛倒這一操作。給定一個點,其中兩個座標都是正數,並且一個TRect中的頂部和左側值可以是正數或負數(並且底部或右側可能超出地圖的邊界),並且在全局範圍內聲明MAP_SIZE,是有什麼辦法可以確定點是否落在矩形所在的區域內,而不必在四個不同的時間運行相同的計算?
哎喲!我試圖在總體原則上低估這一點,只是對**和**聲明加倍。使閱讀變得更加困難。 :( – 2009-07-12 03:31:52