2016-11-26 98 views
0

所以我需要能夠在保留原始數組的同時獲得旋轉數組的特定部分。虛擬陣列旋轉

我有什麼不能如何應用,我不知道是因爲旋轉還是其他原因。

什麼我對旋轉(在僞代碼):

get(x, y, rot%4): 
    rot == 1 then arr[height - 1 - y, x] 
    rot == 2 then arr[width - 1 - x, height - 1- y] 
    rot == 3 then (rot 2, rot 1) 
    else arr[x, y] 

我99%肯定旋轉180度(2)按預期工作,但我敢肯定,我搞亂向上90度,延長270度。

回答

0

最終我想出了一些正確的東西。除了這個,我的系統的每個部分都在工作,這基本上是最簡單的部分。

get(x, y, rot%4): 
    rot == 2 || rot == 3 then 
    y = height - 1 - y 
    x = width - 1 - x 
    rot == 1 || rot == 3 then 
    tmp = y 
    y = x 
    x = height - 1 - tmp 
    return arr[x, y] 

主要優勢,這樣在轉動整個數組是,如果你只需要從陣列中,如用2D「viewportals」的旋轉版本搶值的微小的量,或剛剛開始一個特定的行/列/對角線,或者那種類型的東西。