Садржај
1. Програмирање у пајтону - Увод у Pygame
15. Цртање уз помоћ петљи - обнављање
16. Завршни квиз

8.2. Скалирање (повећавање и смањивање)

Скалирање и центрирање једног објеката

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

Погледајмо наредне примере да сазнамо како то да постигнемо.

Круг

Нацртај круг полупречника 30 пиксела у средини прозора. Мењајући полупречник, скалирај круг према упутству.

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

Испробај ово на следећем цртежу тако што ћеш повећати полупречник круга са 30 на 60 пиксела.

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

Квадрат

Нацртај црвени квадрат ширине 100 и висине 100 пиксела у средини прозора. Скалирај квадрат према упутству.

Ако желимо да нацртамо двоструко већи квадрат, потребно је навести двоструко већу ширину и висину. Такође, ако желимо двоструко мањи квадрат навешћемо двоструко мању ширину и висину.

Испробај ово на следећем цртежу тако што ћеш смањити ширину и висину сa 100 на 50 пиксела.

Као што видиш, квадрат се смањио, али више није у центру прозора (није центриран)! То је због тога што је горње лево теме остало на истом месту на координати (100, 100).

Да би квадрат (исто важи и за правоугаоник и елипсу) при скалирању остао на истом месту (у овом случају у центру прозора) морамо прерачунати и координате његовог горњег левог темена!

Прорачун нових координата левог горњег темена (центрирање) за нову ширину и висину квадрата од 50 пиксела је следећи:

Нови квадрат је ширине 50, што значи да преосталих 50 пиксела (био је широк 100) треба поделити на два дела и по 25 пиксела додати испред и иза квадрата. Слично, квадрат је сада висине 50, а преосталих 50 пиксела (био је висок 100) треба поделити на два и додати по 25 пиксела изнад и испод квадрата. То значи да су нове координате горњег левог темена (125, 125). Испробај овај прорачун у претходном примеру.

Дуж

Скалирање дужи (али и многоуглова) је мало теже, јер се у њима не користе димензије, већ само координате тачака.

Хајде да заједно покушамо да скалирамо дуж пратећи следеће кораке! После сваког корака покрени програм да видиш да ли си успео/успела:

  1. Нацртај плаву дуж дужине 200 пиксела па је прво скрати на пола;

  2. После тога покушај да средину нове (скраћене) дужи подесиш да буде у средини прозора (центрирај као што је била пре скраћивања);

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

Скалирање и центрирање цртежа са више објеката

Круг уписан у квадрат

Нацртајмо квадрат на средини прозора и у њему уписан круг:

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

Испробај ово на претходном цртежу тако што ћеш смањити димензије на 50, а полупречник круга на 25.

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

Дакле, да бисмо смањили или повећали цртеж од више елемената, није довољно само повећати или смањити његове објекте. Потребно је да мењамо и координате које одређују положај објеката.

Испробај на претходном цртежу шта би се десило када би сваки од бројева који се користе приликом цртања био помножен или подељен истим бројем.

Приметимо да објекти мењају место али остају центрирани - то је због тога што смо адекватно мењали координате!

    Q-47: Сви бројеви који се односе на координате и на величине у једном цртежу су подељени са 2. Како ће тиме да се промени цртеж?

  • Цртеж ће се дупло смањити и помериће се ка горњем левом углу прозора.
  • Тачно
  • Цртеж ће се дупло смањити и остаће на истом месту.
  • Покушај поново
  • Цртеж ће остати исте величине и помериће се ка доњем десном углу прозора.
  • Покушај поново
  • Цртеж ће се дупло повећати и помериће се ка горњем левом углу прозора.
  • Покушај поново

Множењем свих аргумената функција истим бројем, дакле, успешно скалирамо цртеж, међутим, цртеж уједно бива померен, што је понекад непожељно. Скалирање цртежа уз задржавање положаја генерално није једноставно учинити. Међутим, у наставку ћемо видети како да цртеже направимо тако да их лако можемо и померати и скалирати.

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