Stránka 1 z 1

otoceni pole o 90

Napsal: 18 dub 2020, 17:03
od rainbof
mam takovyhle 160x80 a potreboval bych ho na esp32 nejak rychle otacet abych mohl vyuzivat funkce ktere kresli do framebufferu spatne to navic potrebuju udelat vicekrat. Tj jednou otocit aktualni buffer, pak ho nechat spatne "pokreslit" a pak ho otocit k vykresleni ve spravne orientaci.

tohle je ta moje matice..

const int LCD_X = 80;
const int LCD_Y = 160;

unsigned short vb[LCD_X*LCD_Y]; // video buffer


zkousel jsem to vnorenym for cyklem ale trva to moc dlouho.

Re: otoceni pole o 90

Napsal: 18 dub 2020, 19:53
od KamilV
A nestačilo by mít krom:
unsigned short vb[LCD_X*LCD_Y];

ještě i:
unsigned short vb_rotated[LCD_X*LCD_Y];

a v něm mít hodnoty přeindexované (otočené) a podle potřeby jen používat původní nebo otočené pole?
Je nutné to furt otáčet fyzicky v paměti?

Re: otoceni pole o 90

Napsal: 19 dub 2020, 00:23
od PetrB
Ahoj,
pokud máš velké pole dat jako matici. Tak bych její otáčení řešil tím, že bych neotáčel matici, ale "čtenáře".
Při nule to čteš zleva doprava, a shora dolu.
Při devadesát zdola nahoru a zleva doprava.
Při stoosmdesáti zprava doleva a zdola nahoru
Při dvěstěsedmdesáti shora dolů a zprava doleva

Třeba.

1 2
3 4

čteš jako 1234
potom 3142
dále 4321
na konec 2413

Pb