Prijavi problem


Obeleži sve katergorije koje odgovaraju problemu

Jos detalja - opišite nam problem


Uspešno ste prijavili problem!
Status problema i sve dodatne informacije možete pratiti klikom na link
Na žalost nismo trenutno u mogućnosti da obradimo Vaš zahtev.
Molimo Vas da pokušate kasnije.

Programiranje grafike pomoću Pygame, priručnik za gimnaziju

Цртање кругова

Библиотека PyGame омогућава и једноставно цртање кругова, коришћењем функције pg.draw.circle. Погледајмо следећи пример.

Цртање кругова

Дакле, параметри функције су редом прозор на коме се црта, боја којом се црта, уређени пар којим се задају координате центра круга и полупречник круга. Након полупречника је могуће задати и дебљину круга у пикселима (у том случају се црта само кружна линија, као што је урађено у случају црвеног круга). Ако се тај параметар изостави, онда се црта круг који је испуњен бојом (као што је урађено у случају плавог круга).

Нагласимо да за разлику од функција за цртање линија и правоугаоника, функција за цртање кругова захтева да су координате центра круга и дужина полупречника цели бројеви. Зато ћемо често у задацима у којима цртамо кругове уместо реалног дељења (оператора /) користити целобројно дељење (оператор //) или ћемо користити заокруживање реалних бројева (функцијом round или функцијом int). Када видиш поруку TypeError: integer argument expected, got float, тада знај да је проблем у томе што је функцији за цртање круга уместо целог прослеђен неки реалан број и тај проблем можеш лако решити коришћењем неког облика заокруживања бројева.

Медведић

Напиши програм који исцртава главу играчкице медведића.

Облак

Круговима можемо нацртати и неке занимљиве облике. Нацртајмо сунце и облак на плавом небу.

Облак

Данас се мало наоблачило. На основу претходног програма дефинисаћемо функцију која исцртава облак на задатој позицији, задате величине, у задатој нијанси сиве боје, а затим ћемо је неколико пута позвати да бисмо нацртали неколико облака.

Круг дате површине

Напиши програм који исцртава круг у центру екрана чија је површина тачно три четвртине површине прозора.

Центар круга се налази у центру екрана (чије се координате лако израчунавају дељењем ширине и висине екрана са 2). Кључни део овог задатка је заправо чисто математички. На основу везе између две површине потребно је израчунати полупречник круга. Обележимо димензије прозора са \(s\) и \(v\). Површина прозора је тада \(P_p = s \cdot v\). Ако је полупречник круга \(r\), тада је његова површина \(P_k = r^2 \cdot \pi\). Из услова \(P_k = \frac{3}{4}P_p\) следи да је \(r^2 \cdot \pi = \frac{3}{4} \cdot s\cdot v\). Одатле је \(r = \sqrt{\frac{\frac{3}{4}\cdot s\cdot v}{\pi}}\). Подсетимо се да се квадратни корен може једноставно израчунати помоћу библиотечке функције math.sqrt.

Цвет

Напиши програм који исцртава цвет који се састоји од централног жутог круга пречника 100 пиксела, око којег се налази 6 правилно распоређених латица розе боје, свака у облику круга, такође пречника 100 пиксела (центри латица се налазе у теменима правилног шестоугла, чији је центар у центру цвета, а дужина странице је 100 пиксела).

За цртање круга потребно је знати координате центра и дужину полупречника круга. Пречник свих кругова је једнак, самим тим и полупречник \(r = \frac{a}{2}\). Нека је тачка О центар жутог, централног круга. Координате ове тачке означимо са \((c_x, c_y)\). Ова тачка се налази у центру прозора и њене координате једнаке су половини висине, односно ширине прозора. Дакле, (cx, cy) = (visina // 2, sirina // 2). Координате осталих центара кругова изразићемо такође преко координата \((c_x, c_y)\) . Координате тачке \(А_1\) означимо са \((x_1, y_1)\). Тачка \(А_1\) је за \(a\) померена (транслирана) од тачке О по оси \(x\), тако да је \(x_1\), прва координата ове тачке једнака \(x_1 = c_x + a\), а друга координата ове тачке \(y_1\) једнака је \(y\) координати тачке О, тј. \(y_1 = c_y\). Координате тачке \(А_2\) означимо са \((x_2, y_2)\). Ова тачка је у односу на тачку О померена (транслирана) за \(\frac{a}{2}\) по оси \(x\), односно за висину \(h = \frac{a \sqrt{3}}{2}\) једнакостраничног троугла \(\triangle OA_1A_2\) по оси y. На основу овога закључујемо да су координате тачке \(А_2\), \((x_2, y_2) = (c_x+\frac{a}{2}, c_y + h)\). Координате центра осталих кругова одређујемо на сличан начин.

../_images/roze_cvet.png

На основу претходне дискусије, допуни наредни програм.