2016-11-26 1 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», или просто получить конкретная строка/столбец/диагональ или что-то в этом роде.

Смежные вопросы