реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Поворот картинки (транспонирование матрицы), Как сделать через перестановки?
SasaTheProgramme...
сообщение Jun 21 2007, 01:05
Сообщение #16


Частый гость
**

Группа: Новичок
Сообщений: 129
Регистрация: 4-08-06
Пользователь №: 19 327



Вот какое-то решение из ФИДО (извините ребята, я сейчас анализировать/проверять не могу. И вообще ничего не могу).
=======
Alex Kocharin wrote:
> Комбинация транспонирования и отражения.
>
> Транспонирование:
> (x,y) -> (y,x)
> x*N+y -> y*M+x
>
> Отражение:
> (x,y) -> (x,M-y-1)
> x*M+y -> x*M+M-y-1
>
> Т.е.
> x*N+y -> y*M+M-x-1
>
> Отбратно: транспонирование:
> (x,y) -> (y,x)
> x*N+y -> y*M+x
>
> Отражение:
> (x,y) -> (N-x-1,y)
> x*N+y -> (M-x-1)*N+y
>
> Т.е.
> x*N+y -> (M-y-1)*N+x
>
> Программа (не оптимизированная):
>
> for(int i=0; i<M*N; i++) {
> int x1 = i/N, y1 = i-x1*N;
> int prev = (M-y1-1)*N+x1;
> if (prev < i) {
> int ires = y1*M+M-x1-1;
> int t = picture[ires];
> picture[ires] = picture[i];
> picture[i] = t;
> }
> }
>
> Сдаём заказчику:
>
> int i;i^=i;for(;i<M*N;){int x1=i/N,y1=i-x1*N,p=M*N-y1*N-N+x1;if(p<i){int
> r=y1*M+M-x1-1,t=p[r];p[r]=p[i];p[i++]=t;}}
>
> Проверяй. ;-)))
>
> Возможно, я где-то ошибся - там N вместо M или единичка где лишняя... По
> крайней мере, идея imho верная.
>
>
=======
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th August 2025 - 04:43
Рейтинг@Mail.ru


Страница сгенерированна за 0.01357 секунд с 7
ELECTRONIX ©2004-2016