otoceni pole o 90

Wiring, C++, C, Java, ...
Pravidla fóra
Toto subfórum slouží k řešení obecných otázek kolem programování (konstrukce, knihovny, alokace paměti, ...)
Odpovědět
rainbof
Příspěvky: 1
Registrován: 17 dub 2020, 16:52
Reputation: 0

otoceni pole o 90

Příspěvek od rainbof » 18 dub 2020, 17:03

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.

KamilV
Příspěvky: 479
Registrován: 03 dub 2018, 15:27
Reputation: 0
Bydliště: Olomouc

Re: otoceni pole o 90

Příspěvek od KamilV » 18 dub 2020, 19:53

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?

PetrB
Příspěvky: 141
Registrován: 20 čer 2018, 13:39
Reputation: 0

Re: otoceni pole o 90

Příspěvek od PetrB » 19 dub 2020, 00:23

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

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 13 hostů