21.2. Домаћи задатак¶
Иако цртеже које цртамо у односу на сидро обично креирамо имајући ово од почетка у виду, постоји систематичан поступак којим од цртежа који је задат у апсолутним координатама можемо доћи до цртежа који је нацртан у односу на сидро (можемо усидрити цртеж). Покушајмо да резимирамо како можемо да уведемо сидро, тј. како да од цртежа у ком се јављају апсолутне координате уведемо релативне координате (чиме стичемо погодности које пружа добро изабрано сидро са којима смо се упознали раније), за сада без промене величине цртежа.
Када се црта круг помоћу pg.draw.circle(prozor, boja, (cx, cy), r)
,
тада га можемо усидрити у тачку (x, y)
тиме што позив заменимо са
pg.draw.circle(prozor, boja, (x + (cx - x), y + (cy - y)), r)
.
На пример, ако круг нацртан помоћу pg.draw.circle(prozor, boja, (100, 50), r)
желимо да усидримо у тачку (x, y) = (50, 100)
, тада ћемо га цртати
помоћу
pg.draw.circle(prozor, boja, (x + 50, y - 50), r)
.
МЕСТО ЗА СКИЦУ ПРЕМА НАРЕДБАМА НАВЕДЕНИМ У ПРИМЕРУ
Слично можемо урадити и у случају осталих облика.
Провери да ли ово разумеш тако што ћеш одговорити на наредних неколико питања.
- pg.draw.circle(prozor, pg.Color("red"), (x, y), 50, 1)
- Тачно
- pg.draw.line(prozor, pg.Color("red"), (x-50, x-50), (150, 150))
- Покушај поново
- pg.draw.line(prozor, pg.Color("red"), (x+50, y-50), (x-50, y+50))
- Тачно
- pg.draw.rect(prozor, pg.Color("red"), (x-50, y-50, x, y))
- Покушај поново
Q-130: Желимо да прилагодимо цртеж који се састоји од наредних облика, тако да се све црта у односу на сидро са координатама x=100, y=100.
pg.draw.circle(prozor, pg.Color("red"), (100, 100), 50, 1)
pg.draw.line(prozor, pg.Color("red"), (50, 50), (150, 150))
pg.draw.line(prozor, pg.Color("red"), (150, 50), (50, 150))
pg.draw.rect(prozor, pg.Color("red"), (50, 50, 100, 100))
Које наредбе ће бити део прилагођеног цртежа?
- pg.draw.circle(prozor, pg.Color("red"), (x, y), 60)
- Покушај поново
- pg.draw.circle(prozor, pg.Color("red"), (180, 80), 60)
- Покушај поново
- pg.draw.circle(prozor, pg.Color("red"), (100, 100), 60)
- Покушај поново
- pg.draw.circle(prozor, pg.Color("red"), (x + 80, y - 20), 60)
- Тачно
- pg.draw.circle(prozor, pg.Color("red"), (x + 180 , y + 80), 60)
- Покушај поново
Q-131: Круг нацртан наредбом pg.draw.circle(prozor, boja, (180, 80), 60) део је цртежа који желимо да прилагодимо тако да му главна тачка (сидро) буде одређена променљивама x=100 и y=100. Која наредба ће бити део тако прилагођеног цртежа?
Покрени сада наредни програм и видећеш лице човечуљка. Прилагоди цртеж тако да се црта релативно у односу на сидро \((x, y)\), које се налази у центру плавог круга (у почетку је то тачка \((100, 100)\)). Покретањем програма провери да ли ти је решење добро. Ако је све урађено како треба, цртеж ће се исправно померати док се миш помера.
Размотримо сада како да поред цртања у односу на неки положај (сидро) направимо наше цртеже скалабилним, тј. да се цртају у односу на задату димензију. Присети се како смо све односе у задатку „Цвет“ изразили у односу на полупречник круга \(a\). Мењајући вредност те варијабле, могли смо лако да повећавамо и смањујемо цео цртеж, зато што су све остале величине биле изражене у односу према том полупречнику.
Ако желимо да цртеж учинимо потпуно скалабилним, потребно је све висине, ширине и полупречнике изразити као умножак дате димензије. Помаке по хоризонтали и вертикали у односу на сидро \((x, y)\) такође треба изразити као умножак дате димензије. На следећем питању провери да ли ово разумеш.
- pg.draw.circle(prozor, pg.Color("red"), (x, y), 12*a)
- Покушај поново
- pg.draw.circle(prozor, pg.Color("red"), (x - 36*a, x - 48*a), 12*a)
- Покушај поново
- pg.draw.circle(prozor, pg.Color("red"), (x + 16*a, y - 4*a), 12*a)
- Тачно
- pg.draw.circle(prozor, pg.Color("red"), (20*a, 20*a), 60)
- Покушај поново
- pg.draw.circle(prozor, pg.Color("red"), (x + 16*a , y - 4*a), 60)
- Покушај поново
Q-132: Круг нацртан наредбом pg.draw.circle(prozor, boja, (180, 80), 60) део је цртежа који желимо да прилагодимо тако да му главна тачка (сидро) буде одређена променљивама x = 100 и y = 100, и да му основна величина буде a=5. Која наредба ће бити део тако прилагођеног цртежа?
Прилагоди сада додатно програм тако да се све црта релативно и у односу на јединичну величину (нека у почетку то буде \(5\)). Ако је све урађено како треба, величина ће му се мењати кликом на лево, односно десно дугме миша.