6.2. Цртање облика - многоуглови (каже се и полигони)¶
Троугао се може нацртати помоћу три појединачне дужи. На сличан начин можемо нацртати и било који други многоугао (полигон). Међутим, ако се многоуглови цртају на тај начин, они се не сматрају као целина и не могу, на пример, бити попуњени. Библиотека PyGame даје могућност и за директно цртање многоуглова.
Многоугао се црта функцијом pg.draw.polygon
чији су параметри
редом:
прозор на ком се црта,
боја,
листа уређених парова који представљају координате темена многоугла (она се обично наводи у облику
[(x1, y1), (x2, y2), ..., (xn, yn)]
).
Многоугао се састоји од дужи које спајају суседна темена (тачке) у наведеној листи. Подразумева се да је многоугао затворен, тј. да многоугао садржи и линију између последњег и првог темена. Као и до сада, ако се иза листе темена наведе дебљина, црта се само ивица многоугла, а ако се тај аргумент изостави или се наведе нула, онда се многоугао испуњава бојом.
Размотримо наредни пример.
Многоугао
Кућицу смо нацртали као црвени испуњен многоугао, а затим смо њен
оквир нацртали као црну многоугаону линију дебљине 3 пиксела. Да не
бисмо исту листу координата наводили два пута, увели смо променљиву
temena
.
Увежбај цртање многоуглова тако што ћеш решити наредних неколико задатака.
Срце¶
Напиши програм који исцртава црвено срце.
Срце можемо нацртати и помоћу једног квадрата и два круга.
Претпоставимо да се центар квадрата (тачка \(О\)) налази у центру прозора
(координате су јој \((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 пиксела.
Новогодишња јелка¶
Напиши програм који исцртава новогодишњу јелку. Потребне координате можеш да очиташ када покренеш пример и позиционираш миша на тачку која те интересује.
Споји тачке¶
У низу tacke
дата су темена многоугла. Нацртај тај многоугао на
позадини боје darkgreen
, попуњен бојом khaki
. Шта
представља многоугао који цртамо?
Најважније из ове лекције:¶
Функција за цртање многоугла,
pg.draw.polygon
узима као аргументе прозор на коме се црта, боју, листу координата темена многоугла, дебљину спољне линије.Функција за цртање многоугла у општем облику изгледа овако:
pg.draw.polygon(prozor, boja, [(teme1_x, teme1_y), (teme2_x, teme2y), (teme3_x, teme3_y)...], debljina)
.