ZL31ARM: funkcje graficzne 3D
Aby przez cały czas wyświetlać obracającą się bryłę wraz z możliwością przełączania względem której osi dokonywać obrót należy wykonać poniższy kod:
while(1){
Delay(0xFFFF);
if(GPIO_ReadInputDataBit(JOY_PORT_OK, JOY_OK) == 0){
if(++modeSelect == 3) modeSelect = 0;
//Czekaj do odpuszczenia przycisku
while(GPIO_ReadInputDataBit(JOY_PORT_OK, JOY_OK) == 0);
}
switch(modeSelect){
case 0:{
x += 5;
break;
}
case 1:{
y += 5;
break;
}
case 2:{
z += 5;
break;
}
}
//Usun poprzedni szescian
drawCube(0, 0, xo, yo, zo, 0x0);
//Rysuj nowy szescian
drawCube(0, 0, x, y, z, 0xFFF);
//Zachowaj stare wartosci katow
xo = x; yo = y; zo = z;
}
Tetrahedron, dodekahedron…
Opierając się na przedstawionym dotychczas materiale wraz z opisaną metodą realizacji rysowania prostej bryły nic nie stoi na przeszkodzie wyświetlania innych brył. Dla przykładu można narysować tetrahedron, który ma 4 wierzchołki i 6 krawędzi. W tym celu wystarczy zdefiniować 2 tablicy (tak jak w przypadku sześcianu):
line3D rotatedTH[6], tetraHedron[6]={
{ 0, 0, 0, 0, 0,-30},
{ 0, 0, 0, 0, 30, 0},
{ 0, 0, 0, 30, 0, 0},
{ 30, 0, 0, 0, 0,-30},
{ 30, 0, 0, 0, 30, 0},
{ 0, 30, 0, 0, 0,-30}
};
oraz dodać dodatkową funkcję:
void drawTetraHedron(int x0, int y0, unsigned char x_angle, unsigned char y_angle,
unsigned char z_angle, unsigned int color){
unsigned char i;
//Obroc wszystkie 12 krawedzi szescianu
for (i=0; i < 6; i++)
rotateLine(tetraHedron[i], &(rotatedTH[i]), x_angle, y_angle, z_angle);
//Rysuj kolejne krawedzie szescianu
for(i=0; i < 6; i++)
drawLine(x0 + rotatedTH[i].x1, y0 + rotatedTH[i].y1, x0 +
rotatedTH[i].x2, y0 + rotatedTH[i].y2, color);
}
W podobny sposób można budować bardziej skomplikowane figury, poprzez podanie tylko tablicy z określonymi krawędziami oraz funkcji rysującej te krawędzie. Tutaj zostaje już tylko wyobraźnia użytkownika.
Lokalny układ współrzędnych
Czasem podczas animacji jakiegokolwiek obiektu pomocnym może okazać się widok na lokalny układ współrzędnych związany z danym obiektem i obracający się razem z nim. W tym celu należy dodać poniższą funkcję w pliku graphics.c:
void drawLocalXYZ(int x0, int y0, unsigned char x_angle, unsigned char y_angle,
unsigned char z_angle, unsigned char visible){
unsigned char i;
unsigned short colors[3]={RED,GREEN,BLUE};//Definicja kolorow wersorow
//Obroc wszystkie 3 wersowy lokalnego ukladu
for(i=0; i < 3; i++)
rotateLine(localXYZ[i], &(rotatedLocalXYZ[i]),x_angle,y_angle,z_angle);
switch(visible){
//Wyswietl wersowy lokalnego ukladu wspolrzednych
case 1:{
for(i=0; i < 3; i++)
drawLine(x0+rotatedLocalXYZ[i].x1, y0+rotatedLocalXYZ[i].y1,
x0+rotatedLocalXYZ[i].x2, y0+rotatedLocalXYZ[i].y2, colors[i]);
break;
}
//Ukryj wersowy lokalnego ukladu
default:{
for(i=0; i < 3; i++)
drawLine(x0+rotatedLocalXYZ[i].x1, y0+rotatedLocalXYZ[i].y1,
x0+rotatedLocalXYZ[i].x2, y0+rotatedLocalXYZ[i].y2, 0x0);
break;
}
}
}
oraz strukturę na początku:
line3D rotatedLocalXYZ[3], localXYZ[3]={
{ 0, 0, 0, 20, 0, 0},
{ 0, 0, 0, 0, 20, 0},
{ 0, 0, 0, 0, 0, 20}
};


PM-3133-CPS – inteligentny trójfazowy licznik energii z CANopen
Czujnik drgań STMicroelectronics z wbudowaną AI alternatywą dla czujników piezoelektrycznych do monitorowania urządzeń przemysłowych
Słabe ogniwa elektroniki: Dlaczego jakość wiązek kablowych i płytek PCB decyduje o Twoim zysku? 


![https://www.youtube.com/watch?v=gHcP8AajoN4 Szymon Robak oprowadza po katowickim Laboratorium Badań Kompatybilności Elektromagnetycznej w Sieć Badawcza Łukasiewicz - Instytucie Sztucznej Inteligencji i Cyberbezpieczeństwa. Zapraszamy na film! [materiał redakcyjny]](https://mikrokontroler.pl/wp-content/uploads/2026/06/Szymon-Robak-tytulowe.png)
![https://www.youtube.com/watch?v=BgxJVTwYJ-s Zapraszamy do obejrzenia filmu i wysłuchania krótkich wypowiedzi prelegentów Hardware Forum 2026 i organizatorów majowej konferencji dla inżynierów z branży elektronicznej: Konrad Bruliński z Lemontech, prof. Krzysztof Kulpa z Politechniki Warszawskiej, Zbigniew Huber z FLC, Ewa Załupska z firmy KROK, Jerzy Kozieł z MPTECH, Grzegorz Potyralski z VIGO Photonics, dr Krzysztof Czuba z Politechniki Warszawskiej, Anna Beata Kalisz Hedegaard z Quantum Security Defence, Adrian Cichosz z Elhurt Dystrybucja Anna Kamińska z Creotech Quantum, oraz Łukasz Jaeszke i Adam Jaeszke z TEK.day [materiał redakcyjny]](https://mikrokontroler.pl/wp-content/uploads/2026/05/tytulowe-film-1.png)

