2015-03-29 2 views
-2

Есть ли алгоритм для поворота (предположительно квадратного) изображения на 90 градусов (или cww) с единственной доступной операцией, которая зеркально отображает (вертикальную, горизонтальную или обе) произвольную прямоугольную секцию изображения? Алгоритм должен быть оптимальным по количеству выполненных операций.Вращение 90 градусов, используя только отражения?

+0

Что вы можете сделать с двумя такими зеркальными операциями? Что с четырьмя? Один? – greybeard

+0

Две зеркальные операции (одна горизонтальная и одна вертикальная) поворачивают изображение на 180 градусов. Однако, не удача на 90 градусов. Я думаю, что даже если такое решение существует, оно должно почти наверняка проходить через тонкие сегменты изображения, перемещая пиксели несколько раз -> slooow. –

ответ

1

Нет, это невозможно. Если у вас есть прямоугольник высотой 2 единицы и 1 единица ширины, он будет таким же образом вверх после горизонтального или вертикального отражения.

Вы можете поворачивать прямоугольник на 90 градусов, используя 2 отражения, но зеркальная линия для одного из них должна быть диагональной.

AB 
DC 

Шаг 1: Reflect в диагональной линии через A:

AD 
BC 

Шаг 2: Reflect по вертикали:

DA 
CB 

оригинальный прямоугольник был повернут на 90 градусов по часовой стрелке.

+0

«Заполнение» изображения как идеального квадрата и использование недавно добавленной (действительно несуществующей) части в отражении (после этого прекращение при завершении) считается действительным решением. Открывает ли это какие-либо возможности для решения? –

+1

Нет, потому что, если вы только когда-либо отражаете горизонтально или вертикально, нет способа получить изображение на его стороне. –

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