Садржај
1. Робот Карел - линијски програми и бројачка петља
2. Робот Карел - условна петља и гранање
3. Робот Карел - задаци за вежбање
4. Корњача графика - линијски програми и петље
5. Корњача графика - гранање, угнежђене петље, функције, торке и листе
6. Корњача графика - задаци за вежбање
9. Израчунавања - коришћење и дефинисање функција
10. Израчунавања - задаци за вежбање
13. Контрола тока - вежбање
17. Програмирање 2Д графике - Увод у Pygame

19.3. Кругови и многоуглови

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

Библиотека Пајгејм омогућава и једноставно цртање кругова коришћењем функције pg.draw.circle(prozor, boja, (centar_x, centar_y), poluprecnik, debljina_kruznice).

../_images/krug.png

Параметри функције су редом:

  • прозор на коме се црта,

  • боја којом се црта,

  • уређени пар (обавезно целих бројева) којим се задају координате центра круга,

  • полупречник круга (обавезно цео број).

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

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

Првим позивом функције pg.draw.circle нацртана је црвена кружница дебљине 2 пиксела, са центром у тачки \((50, 50)\), полупречника 30 пиксела, док је другим позивом нацртан плави круг са центром у тачки \((150, 150)\), полупречника 30 пиксела.

Три круга

Напиши програм који исцртава три круга чији је центар у центру прозора. Највећи треба да има полупречник 100 пиксела и да буде црвен, средњи полупречник 75 и да буде плав, а најмањи треба да полупречник 50 пиксела и да буде зелен.

У програм смо ставили наредбу за цртање црвеног круга, а твој задатак је да додаш наредбе за цртање плавог и зеленог круга.

Цртање многоуглова

Троугао се може нацртати помоћу три појединачне дужи. На сличан начин можемо нацртати и било који други многоугао. Међутим, ако се многоуглови цртају на тај начин, они се не посматрају као целина и не могу, на пример, бити попуњени. Библиотека Пајгејм даје могућност и за директно цртање многоуглова (каже се и полигона).

Многоугао се црта функцијом pg.draw.polygon чији су параметри редом:

  • прозор на ком се црта,

  • боја,

  • листа уређених парова који представљају координате темена многоугла (она се обично наводи у облику [(x1, y1), (x2, y2), ..., (xn, yn)]).

Многоугао се састоји од дужи које спајају суседна темена (тачке) у наведеној листи. Подразумева се да је многоугао затворен, тј. да многоугао садржи и линију између последњег и првог темена. Као и до сада, ако се иза листе темена наведе дебљина, црта се само ивица многоугла, а ако се тај аргумент изостави или се наведе нула, онда се многоугао испуњава бојом.

Размотримо наредни пример.

Многоугао

Кућицу смо нацртали као црвени испуњен многоугао, а затим смо њен оквир нацртали као црну многоугаону линију дебљине три пиксела. Да не бисмо исту листу координата наводили два пута, увели смо променљиву temena.

../_images/kuca.png

Увежбај цртање многоуглова тако што ћеш решити наредних неколико задатака.

Срце

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

Срце можемо нацртати и помоћу једног квадрата и два круга.

../_images/srce_koordinate1.png

Претпоставимо да се центар квадрата (тачка \(О\)) налази у центру прозора (координате су му \((100, 100)\)) и претпоставимо да су висина и ширина квадрата (заправо његове дијагонале) једнаке и износе 100 пиксела. На основу тога можеш једноставно израчунати положаје темена квадрата (нпр. тачка A има координате \((50, 100)\)). Пошто квадрат није постављен тако да му странице буду паралелне осама, не можемо га цртати помоћу pg.draw.rect, али можемо помоћу pg.draw.polygon. Центри кругова се налазе на средиштима страница квадрата. Координате средишта дужи су једнаке аритметичким срединама одговарајућих координата крајева (ово можете да докажете ако посматрате правоугли троугао коме је дата дуж хипотенуза, а катете су паралелне координатним осама). На основу реченог лако можемо одредити координате центара (на пример, координате тачке \(M\) су \((75, 75)\)). На крају остаје да се одреди полупречник круга. То можемо урадити експериментално (тако што испробавамо разне вредности све док не добијемо задовољавајућу слику). Међутим, много је боље применити знање из математике и израчунати полупречник. Означимо полупречник круга, страницу квадрата и дијагоналу квадрата редом са \(r, a, d\). Овде је \(r = {a \over 2}\), а, пошто је \(a = {d \over \sqrt{2}}\), следи да је \(r = \frac{d}{2 \sqrt{2}} = \frac{d}{4} \sqrt{2}~\). Дужина дијагонале је 100 пиксела, па је зато полупречник \(25 \sqrt{2}\), што је око 35 пиксела.

Новогодишња јелка

Напиши програм који исцртава новогодишњу јелку. Потребне координате можеш да очиташ када покренеш пример и позиционираш миша на тачку која те интересује.

Најважније из ове лекције

  • Функција за цртање круга, pg.draw.circle узима као аргументе прозор на коме се црта, боју, координате центра круга и полупречник круга.

  • Функција за цртање круга у општем облику изгледа овако pg.draw.circle(prozor, boja, (centar_x, centar_y), poluprecnik, debljina kruznice)

  • Функција за цртање многоугла, pg.draw.polygon узима као аргументе прозор на коме се црта, боју, листу координата темена многоугла, дебљину спољне линије

  • Функција за цртање многоугла у општем облику изгледа овако pg.draw.polygon(prozor, boja, [(teme1_x, teme1_y), (teme2_x, teme2y), (teme3_x, teme3_y)...], debljina)

(Created using Swinx, RunestoneComponents and PetljaDoc)
© 2022 Petlja
A- A+