Войти
ПрограммированиеФорумОбщее

In-place transpose 2D bitmap (2 стр)

Страницы: 1 2
#15
14:17, 17 авг 2022

nes
Видимо ты не так понял условие, но получилось что то не то. Вот твой результат

original bitmap is
000, 001, 002, 
003, 004, 005, 
006, 007, 008, 
009, 010, 011, 

transposed image is 
000, 003, 006, 
001, 004, 007, 
002, 005, 008, 
000, 000, 000, 

а надо так

000, 003, 006, 
009, 001, 004, 
007, 010, 002, 
005, 008, 011, 

Super_inoy
этот способ известен :)

#16
15:02, 17 авг 2022

Андрей5000
Я опирался на транспонирование матриц (смена row-major на column-major или наоборот), а ты хочешь какие-то рандомные перестановки.
В чем физический смысл от перемещения элементов так, как ты показал?

#17
15:16, 17 авг 2022

nes
ты транспонировал кусок буфера и остаток заполнил нулями (уже потеря информации). При этом буфер остался той же исходной размерности NxM. А надо чтоб он стал MxN.

Если мой пример выше записать в другой размерности получится нагляднее:

000, 003, 006, 009, 
001, 004, 007, 010, 
002, 005, 008, 011, 
#18
15:21, 17 авг 2022

Андрей5000
Так это у тебя получится переворот картинки на 90 градусов, при чем тут транспонирование?

#19
18:12, 17 авг 2022

Андрей5000
> что то не фурычит такой простой подход: https://ideone.com/b7xY6u
Да, точняк, там же не взаимный своп элементов, а целая цепочка перестановок. Я этого сразу не заметил, и показалось что там всё просто.

#20
18:13, 17 авг 2022

nes
> Так это у тебя получится переворот картинки на 90 градусов, при чем тут
> транспонирование?
Гугл: транспонирование матриц

#21
18:25, 17 авг 2022

MrShoor
>Транспонирование — в линейной алгебре это операция над матрицами в результате которой матрица поворачивается относительно своей главной диагонали.
Ты хотел указать на "поворот" относительно главной диагонали?

#22
18:38, 17 авг 2022

nes
> Ты хотел указать на "поворот" относительно главной диагонали?
Ну ТС вроде как именно это и надо

Страницы: 1 2
ПрограммированиеФорумОбщее

Тема в архиве.