Vizatimi nga referenca

Sapo kemi mësuar se si të vizatojmë disa forma themelore në mjedisin PyGame duke përdorur funksionet e vizatimit. Siç u përmend më parë, të gjitha imazhet e tilla përbëhen nga piksele. Këto janë të ashtuquajturat imazhe raster, ose bitmap. Ne kemi parë që, për të vizatuar forma themelore, duhet të dimë koordinatat e pikselave që përcaktojnë secilën formë të tillë. Sidoqoftë, në një situatë më realiste këto koordinata nuk jepen direkt dhe ne duhet t’i përcaktojmë vetë ato.

Nëse duam të gjenerojmë me programe një imazh duke përdorur një bitmap ekzistues si referencë, mund të përcaktojmë koordinatat e pikave nga imazhi i dhënë. Ne mund ta zmadhojmë figurën në një nga programet e shikimit të imazhit për të marrë çdo piksel të duket si një katror. Kjo mund të duket si kjo:

../_images/ladder_grid.png

Ne mund të shohim që kjo imazh u krijua duke vizatuar 4 linja horizontale dhe 2 vertikale, gjithashtu që të gjitha 6 linjat janë të zeza dhe të gjera 1 pixel. Meqenëse e dimë se koordinata x llogaritet nga e majta në të djathtë dhe y nga lart poshtë, si dhe që numërimi fillon nga zero, mund të përcaktojmë koordinatat e pikave fillestare dhe fundore të të gjashtë rreshtave thjesht duke numëruar .

Shkallë

Lexoni koordinatat nga imazhi i zmadhuar më lart dhe shkruani një program që vizaton shkallët si ato.

Ndihmë: duke numëruar (nga zero) mund të zbulojmë se koordinatat e pikave fundore të vijës vertikale të majtë janë (5, 3) dhe (5, 36). Koordinatat e pikave përfundimtare të 5 linjave të tjera do të përcaktohen në të njëjtën mënyrë.

Imazhi i madhësisë reale është shumë i vogël, vetëm 20 pixel i gjerë dhe 40 pixel i lartë. Ne gjithashtu mund të përcaktonim koordinatat e pikave për imazhe më të mëdha duke numëruar, por kjo do të ishte e lodhshme dhe e prirur ndaj gabimeve (kjo është arsyeja pse ne zgjodhëm një imazh kaq të vogël në këtë shembull). Lajmi i mirë është që programet e shikimit dhe redaktimit të figurave zakonisht tregojnë koordinatat e pikselit në të cilin aktualisht është kursori i mouse. Koordinatat e kursorit zakonisht shkruhen diku në shiritin e statusit në fund të dritares në të cilën po zhvillon programi, shpesh në këndin e poshtëm të majtë.

Për shembull, në programin e vizatimit Paint, kur një imazh zmadhohet 8 herë dhe shfaqet rrjeti që thekson piksele individuale, ne mund të pozicionojmë lehtësisht kursorin në çdo piksel dhe të lexojmë koordinatat e tij. Në këtë foto, kursori i mouse ishte në pikselin e kuq, i cili, siç thamë edhe më herët, ka koordinatat (5, 36).

../_images/read_xy.png

Në detyrat e mëposhtme ju duhet të shkruani një program që vizaton një vizatim sa më të ngjashëm të jetë e mundur me atë të dhënë. Ju mund të shihni vizatimet që duhet të vizatoni kur klikoni në butonin “Luaj lojën”.

Për t’ju ndihmuar të përcaktoni koordinatat e pikave të rëndësishme në një vizatim, programi që ju filloni duke klikuar butonin “Luaj lojën” do, krahas vizatimit, të tregojë koordinatat e pikës ku është kursori i mouse. Për ta bërë leximin më të lehtë, në të gjithë shembujt koordinatat e të gjitha pikave të rëndësishme janë të rrumbullakosura në 5 piksele (koordinatat përfundojnë me zero ose pesë).

Nëse doni të zgjidhni këto detyra jashtë shfletuesit të internetit, në mjedisin tuaj të programimit, mund të shkarkoni imazhet që programet tuaja duhet të vizatojnë, t’i hapni ato në një shikues imazhi dhe të lexoni koordinatat e pikave të rëndësishme atje.

../_images/drawing_grid_antenna.png ../_images/drawing_grid_balance.png ../_images/drawing_grid_house.png ../_images/drawing_grid_smiley.png ../_images/drawing_grid_trees.png

Antena

Para televizionit kabllor, sinjalet televizive merreshin nga antenat që zakonisht vendoseshin në çatitë e shtëpive dhe ndërtesave të njerëzve. Në këtë detyrë duhet të tërhiqet një antenë e tillë.

Siç mund ta shihni kur drejtoni shembullin, vizatimi përbëhet nga shtatë rreshta. Gjerësia e vijës vertikale është 4 piksele, dy kryesorët horizontale 1, dy të mesmet 2 dhe dy fundorët 3 piksele. Ngjyra e sfondit është “blueblue”.

Programi e plote mund ta provoni dhe këtu.

Balance scale

Ky vizatim përbëhet nga një rresht (gjerësia e të cilit është 2) dhe tre trekëndësha. Trekëndëshi i mesëm, i cili paraqet mbështetjen e ekuilibrit, është i mbushur me ngjyra, kështu që kur vizatoni atë duhet të lihet parametri i gjerësisë, ndërsa për dy trekëndëshat e tjerë duhet të përcaktohet gjerësia 2.

Smiley

Në këtë detyrë, puna që duhet të bëhet është pak më e ndërlikuar. Meqenëse vizatimi është i përbërë nga rrathë dhe elips, nuk mund të lexojmë me saktësi të gjitha koordinatat dhe matjet që na duhen drejtpërdrejt. Ajo që mund të bëjmë është të lexojmë për secilën elips: math: x të koordinatës së pikës së saj të majtë dhe të djathtë (( :math:` X_L` dhe \(X_R\)), si dhe \(y\) dhe: matematikë: Y_B) Pas kësaj, gjerësia dhe lartësia e elipsit mund të llogariten si diferencat e përkatëse :math:` x` ( për gjerësi), dhe \(y\) koordinatat (për lartësi).

Sa i përket rrethit, ne kemi mundësi të ndryshme:

  • ne mund të vizatojmë rrethin si një elipse të gdhendur në një katror (duke përdorur funksionin pg. pull.ellipse)

  • ne mund të përafrojmë koordinatat e qendrës së rrethit

  • nëse duam të përcaktojmë koordinatat e qendrës së rrethit sa më saktë, duhet fillimisht të gjejmë pikat \(X_L\), \(X_R\), \(Y_T\), and \(Y_B\) siç bëmë pçr elipsin, dhe pastaj llogarit koordinatat e qendrës me formulat \(X_c = {{X_R + X_L} \over 2}\) dhe \(Y_c = {{Y_T + Y_B} \over 2}\)

Shtëpi

Vizatimi i një shtëpie përbëhet nga një drejtkëndësh kafe dhe një trekëndësh i kuq. Mund ta vizatojmë trekëndëshin si shumëkëndësh me tre vertikale. Dielli përshkruhet si një rreth portokalli dhe bari si një drejtkëndësh i gjelbër. Kini parasysh rendin e vizatimit për barin dhe diellin.

Është e mjaftueshme për të lexuar koordinatat e qendrës së rrethit që përfaqësojnë Diellin përafërsisht. Për ata që duan një sfidë të vogël matematikore, vini re se koordinatat e qendrës mund të përcaktohen më saktë të ngjashme me detyrën e mëparshme, megjithëse pika më e ulët nuk është e dukshme dhe koordinata \(Y_B\) nuk mund të lexohet.

Nëse doni të shihni se si mund të përcaktoni koordinatat e qendrës me lexim dhe llogaritje më të saktë, klikoni në butonin “Përcaktimi i qendrës”.

Si në detyrën e mëparshme, lër \(X_L\) dhe \(X_R\) tregon koordinatat \(x\) në pikën më të majtë dhe më të djathte të rrethit që përfaqëson Diellin dhe kooridnatat \(Y_T\), \(Y_B\) \(y\) më të larta dhe më të ulëta të atij rrethi.

Ne mund të pëcakrojmë koordinatat e qendrës \(x\) siç bëmë në shembullin më përpara \(X_C = {{X_R + X_L} \over 2}\).

Meqë pika më e ulët e rrethit nuk është e dukshme, ne nuk e lexojme dot vlerën \(Y_B\),por mund të përcaktojmë rrezen \(r\) duke përdorur \(r = X_C - X_L\) ose \(r = X_R - X_C\). Tani koordinata \(y\) gjendet lehtesisht \(Y_C = Y_T + r\), kështu nuk kemi nevojë për \(Y_B\).

Pemë

Tri pemë të njëjta duhen vizatuar, në mënyrë që secila pemë pasuese të merret duke lëvizur një të mëparshme në të djathtë. Natyrisht, kjo detyrë mund të ishte dhënë duke përshkruar thjesht pemën e parë dhe duke specifikuar distancën midis dy pemëve ngjitur. Programi që vizaton imazhin jepet megjithatë, sepse përdorimi i një imazhi për të specifikuar një detyrë është më i qartë dhe më i thjeshtë.

Për ta bërë detyrën pak më shumë si një situatë reale (në të cilën nuk ka imazh), në këtë shembull duke lexuar: matematikë: x koordinata është me aftësi të kufizuara qëllimisht për anën e djathtë të figurës. Të gjitha koordinatat e kërkuara që nuk mund t’i lexoni mund të llogariten.