{"id":1078,"date":"2026-02-20T00:09:11","date_gmt":"2026-02-19T23:09:11","guid":{"rendered":"https:\/\/trzykody.pl\/?p=1078"},"modified":"2026-02-20T00:09:12","modified_gmt":"2026-02-19T23:09:12","slug":"jak-narysowac-zolwia-w-modelu-grafiki-zolwia-i-jakie-sa-formalne-podstawy-tego-podejscia","status":"publish","type":"post","link":"https:\/\/trzykody.pl\/index.php\/2026\/02\/20\/jak-narysowac-zolwia-w-modelu-grafiki-zolwia-i-jakie-sa-formalne-podstawy-tego-podejscia\/","title":{"rendered":"Jak narysowa\u0107 \u017c\u00f3\u0142wia w modelu grafiki \u017c\u00f3\u0142wia i jakie s\u0105 formalne podstawy tego podej\u015bcia"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Kr\u00f3tki wst\u0119p porz\u0105dkuj\u0105cy poj\u0119cia. Tematem jest <strong>jak narysowa\u0107 \u017c\u00f3\u0142wia<\/strong> rozumiane nie dos\u0142ownie jako rysunek zwierz\u0119cia, ale jako klasyczny problem z grafiki \u017c\u00f3\u0142wia znany z dydaktyki informatyki i matematyki dyskretnej. Chodzi o model \u201e\u017c\u00f3\u0142wia\u201d, kt\u00f3ry porusza si\u0119 po p\u0142aszczy\u017anie, zapami\u0119tuje sw\u00f3j stan (pozycja, kierunek, opuszczony lub podniesiony \u201ed\u0142ugopis\u201d) i na tej podstawie generuje rysunek.<\/p>\n\n\n\n<div class=\"wp-block-rank-math-toc-block\" id=\"rank-math-toc\"><h2>Spis Tre\u015bci<\/h2><nav><ol><li class=\"\"><a href=\"#jak-narysowac-zolwia-krok-po-kroku-stan-komendy-ruchu-obroty-i-generowanie-linii\">Jak narysowa\u0107 \u017c\u00f3\u0142wia krok po kroku: stan, komendy ruchu, obroty i generowanie linii<\/a><\/li><li class=\"\"><a href=\"#jak-narysowac-zolwia-jako-przyklad-algorytmiczny-wielokaty-spirale-i-fraktale\">Jak narysowa\u0107 \u017c\u00f3\u0142wia jako przyk\u0142ad algorytmiczny: wielok\u0105ty, spirale i fraktale<\/a><ol><li class=\"\"><a href=\"#przyklady-kodu-i-wzorow-zestawione-tabelarycznie\">Przyk\u0142ady kodu i wzor\u00f3w (zestawione tabelarycznie)<\/a><\/li><li class=\"\"><a href=\"#uwagi-praktyczne-i-typowe-pulapki\">Jak narysowa\u0107 \u017c\u00f3\u0142wia: Uwagi praktyczne i typowe pu\u0142apki<\/a><\/li><\/ol><\/li><\/ol><\/nav><\/div>\n\n\n\n<p class=\"wp-block-paragraph\">Grafika \u017c\u00f3\u0142wia to abstrakcyjny model rysowania oparty na poj\u0119ciu obiektu poruszaj\u0105cego si\u0119 w uk\u0142adzie wsp\u00f3\u0142rz\u0119dnych. Obiekt ma stan opisany trzema podstawowymi elementami:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>pozycja (x, y) w przestrzeni 2D,<\/li>\n\n\n\n<li>kierunek (k\u0105t wzgl\u0119dem osi, zwykle w stopniach lub radianach),<\/li>\n\n\n\n<li>stan narz\u0119dzia rysuj\u0105cego (rysuje lini\u0119 podczas ruchu albo nie rysuje).<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Ruch \u017c\u00f3\u0142wia jest inkrementalny: ka\u017cde polecenie modyfikuje aktualny stan i ewentualnie pozostawia \u015blad w postaci odcinka. W sensie matematycznym jest to iteracyjne generowanie ci\u0105gu punkt\u00f3w i odcink\u00f3w w \u211d\u00b2. Nie ma tu \u201erysowania figur\u201d jako gotowych obiekt\u00f3w \u2013 figury powstaj\u0105 jako wynik sekwencji operacji elementarnych: przesuni\u0119\u0107 i obrot\u00f3w.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ten model jest silnie powi\u0105zany z geometri\u0105 analityczn\u0105. Przesuni\u0119cie o d\u0142ugo\u015b\u0107 d w kierunku \u03b8 mo\u017cna zapisa\u0107 wzorami:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>x\u2099\u208a\u2081 = x\u2099 + d \u00b7 cos(\u03b8)<\/li>\n\n\n\n<li>y\u2099\u208a\u2081 = y\u2099 + d \u00b7 sin(\u03b8)<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Kierunek jest akumulowany, tzn. kolejne obroty sumuj\u0105 si\u0119. Dzi\u0119ki temu bardzo naturalnie opisuje si\u0119 krzywe \u0142amane, wielok\u0105ty foremne, spirale, a przy zastosowaniu rekurencji \u2013 fraktale. Model jest prosty implementacyjnie i jednocze\u015bnie dobrze pokazuje zale\u017cno\u015bci mi\u0119dzy geometri\u0105 a algorytmik\u0105.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"jak-narysowac-zolwia-krok-po-kroku-stan-komendy-ruchu-obroty-i-generowanie-linii\">Jak narysowa\u0107 \u017c\u00f3\u0142wia krok po kroku: stan, komendy ruchu, obroty i generowanie linii<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Podstawowy zestaw operacji mo\u017cna zredukowa\u0107 do kilku prymityw\u00f3w:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>przesuni\u0119cie do przodu o zadany dystans,<\/li>\n\n\n\n<li>obr\u00f3t w lewo lub w prawo o zadany k\u0105t,<\/li>\n\n\n\n<li>podniesienie i opuszczenie \u201epi\u00f3ra\u201d.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Ka\u017cda z tych operacji dzia\u0142a deterministycznie na aktualny stan. Sekwencja polece\u0144 jest w praktyce prostym programem, kt\u00f3ry generuje list\u0119 odcink\u00f3w. Ten spos\u00f3b my\u015blenia u\u0142atwia p\u00f3\u017aniejsze przej\u015bcie do bardziej z\u0142o\u017conych konstrukcji, np. generowania kszta\u0142t\u00f3w za pomoc\u0105 p\u0119tli lub rekurencji.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Wa\u017cny aspekt to uk\u0142ad wsp\u00f3\u0142rz\u0119dnych i jednostki. W implementacjach dydaktycznych cz\u0119sto przyjmuje si\u0119:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>pocz\u0105tek uk\u0142adu w \u015brodku ekranu,<\/li>\n\n\n\n<li>kierunek pocz\u0105tkowy skierowany w g\u00f3r\u0119 (90\u00b0) albo w prawo (0\u00b0),<\/li>\n\n\n\n<li>k\u0105ty w stopniach.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">To s\u0105 konwencje, kt\u00f3re trzeba ustali\u0107 na pocz\u0105tku, bo wp\u0142ywaj\u0105 na interpretacj\u0119 ka\u017cdego polecenia. W systemach produkcyjnych (biblioteki graficzne) dochodz\u0105 jeszcze kwestie orientacji osi Y (cz\u0119sto ro\u015bnie w d\u00f3\u0142 ekranu), co wymusza drobne korekty we wzorach.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dla dydaktyki wa\u017cne jest rozpisanie sekwencji polece\u0144 na \u201eruch \u2013 aktualizacja stanu \u2013 zapis linii\u201d. To pokazuje, \u017ce grafika \u017c\u00f3\u0142wia nie jest magi\u0105, tylko bardzo prost\u0105 symulacj\u0105 ruchu punktu w przestrzeni.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"jak-narysowac-zolwia-jako-przyklad-algorytmiczny-wielokaty-spirale-i-fraktale\">Jak narysowa\u0107 \u017c\u00f3\u0142wia jako przyk\u0142ad algorytmiczny: wielok\u0105ty, spirale i fraktale<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Najprostszy sensowny przyk\u0142ad to rysowanie wielok\u0105ta foremnego. Dla n bok\u00f3w k\u0105t obrotu po ka\u017cdym odcinku wynosi 360\u00b0 \/ n. W kodzie wygl\u0105da to jak p\u0119tla wykonuj\u0105ca n krok\u00f3w: przesuni\u0119cie i obr\u00f3t. To bezpo\u015brednie prze\u0142o\u017cenie definicji geometrycznej na algorytm iteracyjny.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Spirala powstaje przez stopniowe zwi\u0119kszanie d\u0142ugo\u015bci kroku przy zachowaniu sta\u0142ego k\u0105ta obrotu. W sensie matematycznym to dyskretny odpowiednik krzywej spiralnej, generowany iteracyjnie. Fraktale (np. krzywa Kocha) wymagaj\u0105 rekurencji: pojedynczy odcinek zast\u0119powany jest sekwencj\u0105 kr\u00f3tszych odcink\u00f3w o okre\u015blonych k\u0105tach. W tym miejscu grafika \u017c\u00f3\u0142wia dobrze \u0142\u0105czy algorytmy rekurencyjne z geometri\u0105.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Model ten by\u0142 szeroko popularyzowany w \u015brodowiskach edukacyjnych, m.in. w j\u0119zyku Logo oraz p\u00f3\u017aniej w modu\u0142ach typu turtle w Python. Nie chodzi tu o konkretne narz\u0119dzia, ale o spos\u00f3b my\u015blenia: \u201erysunek jako efekt sekwencji operacji\u201d.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"przyklady-kodu-i-wzorow-zestawione-tabelarycznie\">Przyk\u0142ady kodu i wzor\u00f3w (zestawione tabelarycznie)<\/h3>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Przyk\u0142ad<\/th><th>Opis<\/th><th>C<\/th><th>C++<\/th><th>Python<\/th><th>Wzory matematyczne<\/th><\/tr><\/thead><tbody><tr><td>Rysowanie kwadratu<\/td><td>4 boki, obr\u00f3t 90\u00b0<\/td><td><code>c\\n#include &lt;stdio.h&gt;\\n#include &lt;math.h&gt;\\n\\ndouble x = 0, y = 0;\\ndouble ang = 0;\\n\\nvoid forward(double d){\\n double nx = x + d * cos(ang);\\n double ny = y + d * sin(ang);\\n printf(\\\"(%f,%f) -&gt; (%f,%f)\\\\n\\\", x, y, nx, ny);\\n x = nx; y = ny;\\n}\\n\\nint main(){\\n for(int i=0;i&lt;4;i++){\\n forward(10);\\n ang += M_PI\/2;\\n }\\n return 0;\\n}\\n<\/code><\/td><td><code>cpp\\n#include &lt;iostream&gt;\\n#include &lt;cmath&gt;\\n\\ndouble x = 0, y = 0;\\ndouble ang = 0;\\n\\nvoid forward(double d){\\n double nx = x + d * cos(ang);\\n double ny = y + d * sin(ang);\\n std::cout &lt;&lt; \\\"(\\\" &lt;&lt; x &lt;&lt; \\\",\\\" &lt;&lt; y &lt;&lt; \\\") -&gt; (\\\" &lt;&lt; nx &lt;&lt; \\\",\\\" &lt;&lt; ny &lt;&lt; \\\")\\\\n\\\";\\n x = nx; y = ny;\\n}\\n\\nint main(){\\n for(int i=0;i&lt;4;i++){\\n forward(10);\\n ang += M_PI\/2;\\n }\\n}\\n<\/code><\/td><td><code>python\\nimport math\\n\\nx, y = 0.0, 0.0\\nang = 0.0\\n\\ndef forward(d):\\n global x, y\\n nx = x + d * math.cos(ang)\\n ny = y + d * math.sin(ang)\\n print((x, y), \\\"-&gt;\\\", (nx, ny))\\n x, y = nx, ny\\n\\nfor i in range(4):\\n forward(10)\\n ang += math.pi\/2\\n<\/code><\/td><td>x\u2099\u208a\u2081 = x\u2099 + d\u00b7cos(\u03b8)<\/td><\/tr><tr><td>y\u2099\u208a\u2081 = y\u2099 + d\u00b7sin(\u03b8)<\/td><td><\/td><td><\/td><td><\/td><td><\/td><td><\/td><\/tr><tr><td>Wielok\u0105t foremny n-boczny<\/td><td>Uog\u00f3lnienie kwadratu<\/td><td><code>c\\nfor(int i=0;i&lt;n;i++){\\n forward(a);\\n ang += 2*M_PI\/n;\\n}\\n<\/code><\/td><td><code>cpp\\nfor(int i=0;i&lt;n;i++){\\n forward(a);\\n ang += 2*M_PI\/n;\\n}\\n<\/code><\/td><td><code>python\\nfor i in range(n):\\n forward(a)\\n ang += 2*math.pi\/n\\n<\/code><\/td><td>k\u0105t = 2\u03c0 \/ n<\/td><\/tr><tr><td>Spirala<\/td><td>Zmienna d\u0142ugo\u015b\u0107 kroku<\/td><td><code>c\\nfor(int i=1;i&lt;=50;i++){\\n forward(i);\\n ang += M_PI\/6;\\n}\\n<\/code><\/td><td><code>cpp\\nfor(int i=1;i&lt;=50;i++){\\n forward(i);\\n ang += M_PI\/6;\\n}\\n<\/code><\/td><td><code>python\\nfor i in range(1, 51):\\n forward(i)\\n ang += math.pi\/6\\n<\/code><\/td><td>d\u2099 = n, \u03b8 = sta\u0142e<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"uwagi-praktyczne-i-typowe-pulapki\">Jak narysowa\u0107 \u017c\u00f3\u0142wia: Uwagi praktyczne i typowe pu\u0142apki<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Niejawna zmiana jednostek k\u0105towych (stopnie vs radiany) prowadzi do ca\u0142kowicie b\u0142\u0119dnych trajektorii. Warto od pocz\u0105tku trzyma\u0107 si\u0119 jednej konwencji.<\/li>\n\n\n\n<li>Orientacja osi Y w bibliotekach graficznych cz\u0119sto jest \u201eodwr\u00f3cona\u201d w por\u00f3wnaniu do matematyki szkolnej. Przy bezpo\u015brednim rysowaniu na ekranie trzeba uwzgl\u0119dni\u0107 znak przy sin(\u03b8).<\/li>\n\n\n\n<li>Akumulacja b\u0142\u0119d\u00f3w zmiennoprzecinkowych przy d\u0142ugich sekwencjach krok\u00f3w powoduje lekkie \u201erozje\u017cd\u017canie si\u0119\u201d figur zamkni\u0119tych. W zadaniach dydaktycznych zwykle si\u0119 to ignoruje, ale przy precyzyjnej grafice warto normalizowa\u0107 pozycj\u0119 lub k\u0105t.<\/li>\n\n\n\n<li>Przy rekurencyjnych fraktalach \u0142atwo doprowadzi\u0107 do bardzo g\u0142\u0119bokiej rekurencji i przepe\u0142nienia stosu. W praktyce ustala si\u0119 maksymaln\u0105 g\u0142\u0119boko\u015b\u0107 lub iteracyjn\u0105 wersj\u0119 algorytmu.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Na tym poziomie model grafiki \u017c\u00f3\u0142wia wystarcza do zrozumienia, jak z prostych operacji geometrycznych buduje si\u0119 z\u0142o\u017cone rysunki i jak naturalnie \u0142\u0105czy si\u0119 to z my\u015bleniem algorytmicznym.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Kr\u00f3tki wst\u0119p porz\u0105dkuj\u0105cy poj\u0119cia. Tematem jest jak narysowa\u0107 \u017c\u00f3\u0142wia rozumiane nie dos\u0142ownie jako rysunek zwierz\u0119cia, ale jako klasyczny problem z grafiki \u017c\u00f3\u0142wia znany z dydaktyki informatyki i matematyki dyskretnej. Chodzi o model \u201e\u017c\u00f3\u0142wia\u201d, kt\u00f3ry porusza si\u0119 po p\u0142aszczy\u017anie, zapami\u0119tuje sw\u00f3j stan (pozycja, kierunek, opuszczony lub podniesiony \u201ed\u0142ugopis\u201d) i na tej podstawie generuje rysunek. Grafika \u017c\u00f3\u0142wia to abstrakcyjny model rysowania oparty na poj\u0119ciu obiektu poruszaj\u0105cego si\u0119 w uk\u0142adzie wsp\u00f3\u0142rz\u0119dnych. Obiekt ma stan opisany trzema podstawowymi elementami: Ruch \u017c\u00f3\u0142wia jest inkrementalny: ka\u017cde polecenie modyfikuje aktualny stan i ewentualnie pozostawia \u015blad w postaci odcinka. W sensie matematycznym jest to iteracyjne generowanie ci\u0105gu punkt\u00f3w i odcink\u00f3w w \u211d\u00b2. Nie ma tu \u201erysowania figur\u201d jako gotowych obiekt\u00f3w \u2013 figury powstaj\u0105 jako wynik sekwencji operacji elementarnych: przesuni\u0119\u0107 i obrot\u00f3w. Ten model jest silnie powi\u0105zany z geometri\u0105 analityczn\u0105. Przesuni\u0119cie o d\u0142ugo\u015b\u0107 d w kierunku \u03b8 mo\u017cna zapisa\u0107 wzorami: Kierunek jest akumulowany, tzn. kolejne obroty sumuj\u0105 si\u0119. Dzi\u0119ki temu bardzo naturalnie opisuje si\u0119 krzywe \u0142amane, wielok\u0105ty foremne, spirale, a przy zastosowaniu rekurencji \u2013 fraktale. Model jest prosty implementacyjnie i jednocze\u015bnie dobrze pokazuje zale\u017cno\u015bci mi\u0119dzy geometri\u0105 a algorytmik\u0105. Jak narysowa\u0107 \u017c\u00f3\u0142wia krok po kroku: stan, komendy ruchu, obroty i generowanie linii Podstawowy zestaw operacji mo\u017cna zredukowa\u0107 do kilku prymityw\u00f3w: Ka\u017cda z tych operacji dzia\u0142a deterministycznie na aktualny stan. Sekwencja polece\u0144 jest w praktyce prostym programem, kt\u00f3ry generuje list\u0119 odcink\u00f3w. Ten spos\u00f3b my\u015blenia u\u0142atwia p\u00f3\u017aniejsze przej\u015bcie do bardziej z\u0142o\u017conych konstrukcji, np. generowania kszta\u0142t\u00f3w za pomoc\u0105 p\u0119tli lub rekurencji. Wa\u017cny aspekt to uk\u0142ad wsp\u00f3\u0142rz\u0119dnych i jednostki. W implementacjach dydaktycznych cz\u0119sto przyjmuje si\u0119: To s\u0105 konwencje, kt\u00f3re trzeba ustali\u0107 na pocz\u0105tku, bo wp\u0142ywaj\u0105 na interpretacj\u0119 ka\u017cdego polecenia. W systemach produkcyjnych (biblioteki graficzne) dochodz\u0105 jeszcze kwestie orientacji osi Y (cz\u0119sto ro\u015bnie w d\u00f3\u0142 ekranu), co wymusza drobne korekty we wzorach. Dla dydaktyki wa\u017cne jest rozpisanie sekwencji polece\u0144 na \u201eruch \u2013 aktualizacja stanu \u2013 zapis linii\u201d. To pokazuje, \u017ce grafika \u017c\u00f3\u0142wia nie jest magi\u0105, tylko bardzo prost\u0105 symulacj\u0105 ruchu punktu w przestrzeni. Jak narysowa\u0107 \u017c\u00f3\u0142wia jako przyk\u0142ad algorytmiczny: wielok\u0105ty, spirale i fraktale Najprostszy sensowny przyk\u0142ad to rysowanie wielok\u0105ta foremnego. Dla n bok\u00f3w k\u0105t obrotu po ka\u017cdym odcinku wynosi 360\u00b0 \/ n. W kodzie wygl\u0105da to jak p\u0119tla wykonuj\u0105ca n krok\u00f3w: przesuni\u0119cie i obr\u00f3t. To bezpo\u015brednie prze\u0142o\u017cenie definicji geometrycznej na algorytm iteracyjny. Spirala powstaje przez stopniowe zwi\u0119kszanie d\u0142ugo\u015bci kroku przy zachowaniu sta\u0142ego k\u0105ta obrotu. W sensie matematycznym to dyskretny odpowiednik krzywej spiralnej, generowany iteracyjnie. Fraktale (np. krzywa Kocha) wymagaj\u0105 rekurencji: pojedynczy odcinek zast\u0119powany jest sekwencj\u0105 kr\u00f3tszych odcink\u00f3w o okre\u015blonych k\u0105tach. W tym miejscu grafika \u017c\u00f3\u0142wia dobrze \u0142\u0105czy algorytmy rekurencyjne z geometri\u0105. Model ten by\u0142 szeroko popularyzowany w \u015brodowiskach edukacyjnych, m.in. w j\u0119zyku Logo oraz p\u00f3\u017aniej w modu\u0142ach typu turtle w Python. Nie chodzi tu o konkretne narz\u0119dzia, ale o spos\u00f3b my\u015blenia: \u201erysunek jako efekt sekwencji operacji\u201d. Przyk\u0142ady kodu i wzor\u00f3w (zestawione tabelarycznie) Przyk\u0142ad Opis C C++ Python Wzory matematyczne Rysowanie kwadratu 4 boki, obr\u00f3t 90\u00b0 c\\n#include &lt;stdio.h&gt;\\n#include &lt;math.h&gt;\\n\\ndouble x = 0, y = 0;\\ndouble ang = 0;\\n\\nvoid forward(double d){\\n double nx = x + d * cos(ang);\\n double ny = y + d * sin(ang);\\n printf(\\&#8221;(%f,%f) -&gt; (%f,%f)\\\\n\\&#8221;, x, y, nx, ny);\\n x = nx; y = ny;\\n}\\n\\nint main(){\\n for(int i=0;i&lt;4;i++){\\n forward(10);\\n ang += M_PI\/2;\\n }\\n return 0;\\n}\\n cpp\\n#include &lt;iostream&gt;\\n#include &lt;cmath&gt;\\n\\ndouble x = 0, y = 0;\\ndouble ang = 0;\\n\\nvoid forward(double d){\\n double nx = x + d * cos(ang);\\n double ny = y + d * sin(ang);\\n std::cout &lt;&lt; \\&#8221;(\\&#8221; &lt;&lt; x &lt;&lt; \\&#8221;,\\&#8221; &lt;&lt; y &lt;&lt; \\&#8221;) -&gt; (\\&#8221; &lt;&lt; nx &lt;&lt; \\&#8221;,\\&#8221; &lt;&lt; ny &lt;&lt; \\&#8221;)\\\\n\\&#8221;;\\n x = nx; y = ny;\\n}\\n\\nint main(){\\n for(int i=0;i&lt;4;i++){\\n forward(10);\\n ang += M_PI\/2;\\n }\\n}\\n python\\nimport math\\n\\nx, y = 0.0, 0.0\\nang = 0.0\\n\\ndef forward(d):\\n global x, y\\n nx = x + d * math.cos(ang)\\n ny = y + d * math.sin(ang)\\n print((x, y), \\&#8221;-&gt;\\&#8221;, (nx, ny))\\n x, y = nx, ny\\n\\nfor i in range(4):\\n forward(10)\\n ang += math.pi\/2\\n x\u2099\u208a\u2081 = x\u2099 + d\u00b7cos(\u03b8) y\u2099\u208a\u2081 = y\u2099 + d\u00b7sin(\u03b8) Wielok\u0105t foremny n-boczny Uog\u00f3lnienie kwadratu c\\nfor(int i=0;i&lt;n;i++){\\n forward(a);\\n ang += 2*M_PI\/n;\\n}\\n cpp\\nfor(int i=0;i&lt;n;i++){\\n forward(a);\\n ang += 2*M_PI\/n;\\n}\\n python\\nfor i in range(n):\\n forward(a)\\n ang += 2*math.pi\/n\\n k\u0105t = 2\u03c0 \/ n Spirala Zmienna d\u0142ugo\u015b\u0107 kroku c\\nfor(int i=1;i&lt;=50;i++){\\n forward(i);\\n ang += M_PI\/6;\\n}\\n cpp\\nfor(int i=1;i&lt;=50;i++){\\n forward(i);\\n ang += M_PI\/6;\\n}\\n python\\nfor i in range(1, 51):\\n forward(i)\\n ang += math.pi\/6\\n d\u2099 = n, \u03b8 = sta\u0142e Jak narysowa\u0107 \u017c\u00f3\u0142wia: Uwagi praktyczne i typowe pu\u0142apki Na tym poziomie model grafiki \u017c\u00f3\u0142wia wystarcza do zrozumienia, jak z prostych operacji geometrycznych buduje si\u0119 z\u0142o\u017cone rysunki i jak naturalnie \u0142\u0105czy si\u0119 to z my\u015bleniem algorytmicznym.<\/p>\n","protected":false},"author":1,"featured_media":1079,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[29],"tags":[],"class_list":["post-1078","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-grafika"],"_links":{"self":[{"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/posts\/1078","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/comments?post=1078"}],"version-history":[{"count":1,"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/posts\/1078\/revisions"}],"predecessor-version":[{"id":1080,"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/posts\/1078\/revisions\/1080"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/media\/1079"}],"wp:attachment":[{"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/media?parent=1078"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/categories?post=1078"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/trzykody.pl\/index.php\/wp-json\/wp\/v2\/tags?post=1078"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}