Udhëzime interesante të programimit për stilistin-Merrni fotografinë tuaj në punë (Pjesa e Parë): 16 hapa
Udhëzime interesante të programimit për stilistin-Merrni fotografinë tuaj në punë (Pjesa e Parë): 16 hapa

Video: Udhëzime interesante të programimit për stilistin-Merrni fotografinë tuaj në punë (Pjesa e Parë): 16 hapa

Video: Udhëzime interesante të programimit për stilistin-Merrni fotografinë tuaj në punë (Pjesa e Parë): 16 hapa
Video: CS50 2015 - Week 7 2025, Janar
Anonim

Vrapo! Vrapo! Vrapo!

Programimi nuk është aq i vështirë. Pika kryesore është të gjeni ritmin tuaj dhe ta bëni atë një nga një.

Para se të lexoni këtë kapitull, shpresoj se tashmë keni qenë të njohur me metodën bazë të vizatimit të funksioneve, ose do të ndiheni të trullosur dhe të hutuar nga dy funksione të mëdha të kokës: konfigurimi dhe vizatimi.

Meqenëse duam të bëjmë grafika lëvizëse, duhet të dimë se si prodhohet animacioni.

Fotografia e mësipërme duket mjaft tërheqëse dhe zbulon vizualisht parimin e zbatimit të animacionit.

Animacioni është magji. Magicshtë një magji në lidhje me mashtrimin vizual. Sidoqoftë, në këtë informacion shpërtheu, mosha e përmbytjes së videos, ne tashmë jemi mësuar me të. Pak njerëz do të habiten se është një gjë e mahnitshme të jesh në gjendje të shikosh animacionin.

I njëjti parim mund të zbatohet në vizatimin e animacionit me program. Ne duhet të marrim parasysh se si të vizatojmë grafika të ndryshme në secilën kornizë, dhe programi automatikisht do të kthejë faqe ndërsa ne plotësojmë një animacion të përfunduar në kokën tonë. Në kapitullin vijues, ne do të flasim se si të realizojmë lëvizjen grafike bazë. Para kësaj, ne duhet të dimë disa njohuri themelore në lidhje me ndryshoret.

Hapi 1: I ndryshueshëm

Variabli është ena për të dhënat. Mund të përdoret në mënyrë të përsëritur brenda një programi.

Për shembull:

[cceN_cpp theme = "agim"] madhësia (500, 500); elips (100, 250, 50, 50); elips (200, 250, 50, 50); elips (300, 250, 50, 50); elips (400, 250, 50, 50);

[/cceN_cpp]

Ky seksion i kodit nuk ka përdorur asnjë ndryshore. Ai tërheq katër rrathë në ekran. Ne mund të zbulojmë se ata kanë të njëjtën gjerësi dhe lartësi. Tani që është e njëjtë, për të minimizuar hyrjen e përsëritur të të dhënave, ne mund të përcaktojmë një shenjë që ta përfaqësojë atë. Kjo shenjë është e ndryshueshme.

Këtu është kodi pasi të shtoni një ndryshore:

[cceN_cpp theme = "agim"] madhësia (500, 500); int a = 50; elips (100, 250, a, a); elips (200, 250, a, a); elips (300, 250, a, a); elips (400, 250, a, a);

[/cceN_cpp]

Ne marrim një rezultat krejtësisht të njëjtë!

Meqenëse kemi përcaktuar ndryshoren a, ne mund të ndryshojmë me lehtësi parametrat. Nëse e ndryshojmë a = 50 në a = 100, atëherë të gjitha gjerësitë dhe lartësitë e rrathëve do të bëhen 100 në mënyrë të njëtrajtshme. Pra, nuk kemi pse të ndryshojmë parametrat një nga një. Variabli është vërtet një shpikje e mirë.

Hapi 2: Krijimi i ndryshores

Para përdorimit të ndryshores, duhet të bëjmë një deklaratë dhe të përcaktojmë llojin e të dhënave të saj.

int i;

i 50;

Fjalia e parë e kodit ka bërë një deklaratë për një ndryshore i. int është një simbol i përdorur kryesisht për të deklaruar ndryshore. Kur deklaron, do të kursejë një dhomë në kujtesën e kompjuterit, e cila është ekuivalente për të gjeneruar një "kuti", e përdorur posaçërisht për të rivendosur të dhënat e plota. Fjalia e dytë qëndron për të bërë që detyra 50 të zbatohet nga ndryshorja i. Pas zbatimit të kësaj fjalie, të dhënat do të ruhen në ndryshore i qëndrueshme. Ose mund të jeni më dembelë për të kombinuar dy fjalitë e mësipërme në një dhe detyrë të plotë gjatë bërjes së deklaratës.

int i = 50;

Nameshtë relativisht e lirë të emërtosh një ndryshore. Por ndonjëherë ne duhet t'i kushtojmë vëmendje diçkaje.

Hapi 3: Emërtimi i Rregullores së Ndryshores

• Duhet të jetë kombinim i alfabetit dhe nënvizimit. Mund të jetë një simbol ose një fjalë.

• Të ndjeshëm ndaj rasteve. Emri dhe emri mund të qëndrojnë për ndryshore të ndryshme.

• Përpiquni ta emërtoni sa më lehtë që të jetë e mundur për t'ju lejuar të kuptoni në një shikim. Karakteri fillestar duhet të jetë një alfabet në vend të një numri ose një karakteri të veçantë.

• Asnjë fjalë kyçe si int, float

Më poshtë janë disa deklarata të gabuara.

int $ a;

int 89b;

Këtu janë deklaratat e sakta:

int r;

int super_24;

int openTheDoror;

Hapi 4: Lloji i ndryshueshëm

Me përjashtim të deklarimit të të dhënave të plota, ne mund të deklarojmë për të dhëna dhjetore (të quajtura edhe të dhëna të pikës lundruese) me fjalën kryesore float.

noton b = 0.5

Ne duhet të kemi parasysh se çfarë lloj të dhënash kemi përdorur për deklaratën tonë. Nëse kemi përdorur fjalën kyçe int, caktimi i fundit nuk mund të shkruajë i = 0.5 ose diçka të tillë, ose programi do të bëhet gabim. Por nëse shkruajmë kundër, gjithçka është në rregull. Për shembull, float i = 5 është gramatika e duhur, por programi do ta njohë atë si numër dhjetor.

Disa nga variablat tashmë janë përcaktuar sipas sistemit. Ne nuk duhet t'i deklarojmë ato vetë. Ashtu si "gjerësia, lartësia" e përmendur më parë, ajo automatikisht do të marrë gjerësinë dhe lartësinë e ekranit të kompjuterit. Një frekuencë kaq e lartë në përdorim saqë projektuesi e përcakton atë drejtpërdrejt si një ndryshore e paracaktuar për ta bërë më të përshtatshëm për ne që ta përdorim.

Hapi 5: Operatori

Më poshtë janë operatorët e përpunimit:

+ plus

- minus

* shumohen

ndaje

% Moduli i pjesës së mbetur

Duhet të jeni të njohur me të gjithë këta operatorë përveç %. Duket mjaft e çuditshme sepse rezultati i tij është i mbetur. 9%3 është 0. Ndërsa 9%5 është 4.

Operatorët mund të përdoren midis caktimeve dhe ndryshoreve.

[cceN_cpp theme = "agimi"] int a = 1; // shpall variablin e plotë a, caktimi është 1. int b = 2; // Shpall ndryshoren e plotë b, caktimi është 2. int c; // Shpall ndryshoren e plotë c. c = a + b; // Plus dy detyra dhe caktojeni rezultatin e saj c. shtyp (c); // Ndryshorja dalëse c.

[/cceN_cpp]

Hapi 6: Rezultati i operacionit:

Rezultati i daljes nuk do të shfaqet në dritare, por në tastierë në fund.

Metoda e shkrimit të rreshtit të katërt duket mjaft e çuditshme. Por është një format i zakonshëm që përdoret shpesh gjatë caktimit të kompjuterit. Ana e majtë e simbolit të barabartë duhet të jetë ndryshorja e caktuar përfundimtare, ndërsa ana e djathtë duhet të jetë procesi i funksionimit.

Funksioni i printimit në rreshtin e pestë mund të printojë variabla në tastierë, e cila shpesh përdoret për të testuar gjendjen e daljes së të dhënave.

Hapi 7: Rregullorja e funksionimit

Një pikë shqetësuese në Përpunimin është që ne duhet të sqarojmë llojin e ndryshores. Ne duhet t'i kushtojmë vëmendje të veçantë procesit të numrit të pikës lundruese dhe llojit të plotë.

printoni (6/5); // rezultati 1

Operacioni midis numrave të plotë do të ketë një numër të plotë të ri. 6 pjesëtuar me 5 është 1.2. Por rezultati i daljes së programit është 1. Kjo është në kundërshtim me intuitën tonë. Programi nuk do të merret me raundin por do të fshijë numrin pas pikës dhjetore.

print (6.0 / 5.0); // rezultati 1.2

Operacioni midis pikave lundruese do të rezultojë në një numër të ri të pikave lundruese. Nëse rezultati aktual është 1.2, rezultati i daljes së programit do të jetë i njëjtë.

print (6 / 5.0); // rezultati 1.2

print (6.0 / 5); // rezultati 1.2

Më në fund është përzierja e numrit të plotë dhe të pikës lundruese. Rezultati përfundimtar i prodhimit do të jetë 1.2.

• Në fakt, duhet të keni parasysh se qëllimi i këtij modeli të rregullores është të mos humbasë saktësinë e të dhënave. Pra, nëse një element është një numër i pikave lundruese, rezultati do të jetë edhe numri i pikës lundruese.

Hapi 8: Funksioni i konfigurimit dhe funksioni i vizatimit

Më parë ne kemi folur për një grumbull njohurish të bazuara. Tani, më në fund vijmë të luajmë diçka interesante. Konfigurimi dhe tërheqja e funksioneve janë ekuivalente me funksionet kryesore të përpunimit. Këto dy funksione janë shumë të veçanta. Mund të kontrollojë procedurën e programit. Programi krahasimisht i komplikuar do të përfshijë këto dy funksione sepse ato janë korniza bazë për programin. Formati:

void setup () {

}

tërheqje e pavlefshme () {

}

Përdorimi i veçantë e bën formatin e thirrjes së tyre të ndryshëm nga funksionet e tjera. Duhet të shtojmë "void" para emrit të funksionit, i cili qëndron për asnjë "vlerë të kthyer". Pas emrit të funksionit, duhet të shtojmë kllapa dhe kllapa.

[cceN_cpp theme = "agim"] void setup () {print (1); } void barazim () {print (2); } [/cceN_cpp]

Le të hedhim një vështrim në një shembull:

Kur shtypni butonin e funksionimit, tastiera së pari do të dalë "1" dhe më pas do të dalë vazhdimisht "2" derisa të shtypni butonin ndalues ose të mbyllni dritaren.

Kodi brenda kllapave në funksionin e konfigurimit do të zbatohet vetëm një herë. Ndërsa kodi brenda tërheqjes së funksionit do të vazhdojë të qarkullojë (zbatimi i parazgjedhur 60 herë/sekondë).

Për shkak të këtij karakteri, konfigurimi zakonisht përdoret për të inicializuar vetinë e mjedisit, të tilla si gjerësia dhe lartësia e ekranit, ngjyra e sfondit dhe caktimi i të gjitha llojeve të ndryshoreve. Ndërsa ne shpesh i vendosim funksionet e vizatimit në tërheqjen e funksioneve në mënyrë që të gjenerojmë grafikë të ndryshuar vazhdimisht.

Hapi 9: Rrethi në Lëvizjen Horizontale

Me tërheqjen e funksioneve, ne mund të fillojmë të krijojmë animacionet tona. Metoda e shkrimit të efektit të animacionit nga Përpunimi është mjaft "e vështirë". Nuk ka asnjë komandë ekzistuese. Për shembull, caktoni një formë të caktuar për të bërë lakore.

Ne duhet t'i përcaktojmë këto detaje vetë. Ju duhet t'i tregoni programit se çfarë lloj grafike ka nevojë për çdo kornizë patjetër.

Shkruani kodin e mëposhtëm në të (Tani le të fillojmë ta bëjmë atë me dorë):

[cceN_cpp theme = "agimi"] int x; int y; void setup () {madhësia (300, 300); x = 0; y = lartësia/2; } barazim barazim () {sfond (234, 113, 107); noStroke (); elips (x, y, 50, 50); x = x+1; }

[/cceN_cpp]

Ky seksion i kodit shfaq një rreth lëvizës. Ndryshorja e deklaruar më parë x, y përdoren për të ruajtur pozicionin e koordinatës. Caktimet e tij funksionojnë në konfigurimin e funksioneve. Kodi kryesor është ai i mëposhtëm brenda vizatimit të funksionit:

x = x + 1

Mos e shikoni si ekuacion matematikor, përndryshe do të jetë shumë e çuditshme. Këtu, "" është një simbol për caktimin. Ai përfaqëson vendosjen e numrave të djathtë në ndryshoren e majtë. Supozoni se x është 50, sapo kodi të funksionojë, ana e djathtë e "" është e barabartë me 50+1, pra 51. Rezultati përfundimtar do të caktohet në ndryshoren x. Pra vlera e x bëhet 51.

Ndiqni procedurën e programit, sa herë që vizatimi i funksioneve funksionon një herë, vlera e x do të rritet 1. Pra, çdo herë kur vizatojmë, rrethi do të lëvizë një drejtim piksel horizontalisht në të djathtë, në krahasim me kornizën e mëparshme. Prandaj, grafika bëhet lëvizëse.

• Në mënyrë që kodi të ketë një lexueshmëri më të mirë, ne duhet të kursejmë një dhomë të caktuar para çdo rreshti të kodit brenda mbajtëseve. Dhe do të jetë sa më e përafruar. Shtypni TAB ose disa hapësira bosh, mund të tërhiqet.

• Simboli i hapësirës bosh dhe ndërprerja e vijës në program nuk do të ndikojë në program. Pra, është mirë nëse shtypim një më shumë ose më pak.

Këtu keni një mënyrë tjetër më të thjeshtë për ta shprehur atë. Për ta bërë rrethin e ndryshueshëm të rritet 1 automatikisht, ne duhet ta shkruajmë atë në formatin e mëposhtëm.

rreth = rreth +1

Mjaft e papërshtatshme! Nëse emri i ndryshores është më i gjatë, atëherë duhet të shtypim më shumë fjalë. Pra, paraardhësit tanë dembelë mendojnë një ide të tillë.

rreth ++

A nuk është shumë e thjeshtë? Do të thotë të rrisësh 1 automatikisht. Ngjashëm me të, ekziston - -, që do të thotë ulje 1 automatikisht.

Por nëse shpresojmë se sasia e rritjes automatike është numër tjetër si 2, duhet të provojmë një shprehje tjetër.

rreth += 2

Kjo është e barabartë me

rreth = rreth + 2

Në mënyrë të ngjashme, ekziston - =, /=, *=.

Hapi 10: Drejtimi i lëvizjes

Në cilin drejtim lëviz grafiku varet nga mënyra se si e ndryshoni koordinatën tuaj. Nëse ndryshohet në y = y + 1, rrethi do të lëvizë poshtë. Nëse dhex dhe y rriten 1, rrethi do të lëvizë poshtë në fund të djathtë. Nëse e shkruajmë ai të jetë një simbol minus, ai do të lëvizë në drejtim të kundërt.

[cceN_cpp theme = "agimi"] int x, y; // Mund të deklarojë ndryshore të shumta në të njëjtën kohë, përdorni presje për t'u ndarë. void setup () {madhësia (300, 300); x = 0; y = 0; } barazim barazim () {sfond (234, 113, 107); noStroke (); elips (x, y, 50, 50); x ++; y ++; }

[/cceN_cpp]

Shkalla e Lëvizjes

Mos harroni të paracaktuar 60 korniza për sekondë brenda tërheqjes së funksionit? Sipas kësaj norme, rrethi i mësipërm do të lëvizë 60 piksele për sekondë në të djathtë.

Nëse duam të ndryshojmë shkallën e lëvizjes grafike, ka dy metoda: njëra është të rrisim vlerën x çdo herë që kur ajo do të ndryshohet.

x = x + 10

Ka përmirësuar shpejtësinë për 10 herë në krahasim me atë origjinal!

Metoda tjetër është të ndryshoni frekuencën e rifreskimit të kanavacës. frameRate ()

Ky funksion mund të ndryshojë frekuencën e transmetimit të kanavacës. Shkruani frameRate (10) në konfigurimin e funksionit, ai do të ndryshojë 60 kornizat origjinale në sekondë në 10 korniza për sekondë. Shpejtësia ngadalësohet 6 herë më parë.

Hapi 11: Sfondi i anashkaluar

Të gjithë shembujt e mëparshëm shkruajnë sfondin në funksion të vizatimit. A keni menduar ndonjëherë ta shkruani atë në konfigurimin e funksionit? A do të ketë ndonjë ndryshim? Tani, le të azhurnojmë shembullin e lëvizjes horizontale.

[cceN_cpp theme = "agimi"] int x, y; void setup () {madhësia (300, 300); sfond (234, 113, 107); x = 0; y = lartësia/2; } void draw () {noStroke (); elips (x, y, 50, 50); x += 1; } [/cceN_cpp]

Cfare ndodhi? Ndoshta nuk mund ta kuptojë arsyen e prodhimit të problemit siç duhet. Fshini funksionin noStroke, shtoni përsëri goditje dhe shihni rrugën e lëvizjes së rrethit.

Oh, kjo është për shkak të rrethit të krijuar më parë nuk është fshirë! Për shkak se konfigurimi i funksionit funksionon vetëm një herë, nëse shkruajmë sfond mbi të, ai do të mbushë sfondin vetëm për një herë dhe kjo e fundit nuk do të ketë më efekt. Sfondi i funksionit është si mjeti i kovës së bojës. Pasi të përdoret, do të mbulojë të gjithë përmbajtjen në kanavacë në vend që të vendosë vetëm një ngjyrë sfondi. Ne e shkruajmë atë para vizatimit të funksionit në mënyrë që korniza e mëparshme të mbulohet sa herë që krijojmë një model të ri. Prandaj, rrethi mund të funksionojë siç e prisnim. Përveç kujtimit të përdorimeve të secilit funksion, ne duhet të mendojmë për pozicionin e kodit. Shumë kohë, një linjë lart ose poshtë për koden dhe për ta shkruar atë brenda ose jashtë një kllapi, do të krijojë efekte krejt të ndryshme. Drejtimi i kodit është dy-dimensional. Nëse shfaqet një gabim, ne duhet të kalibrojmë në këtë dy dimension.

• Kjo metodë e përsëritur e vizatimit mund të krijojë një efekt shumë të veçantë nëse përdoret siç duhet. Mund të kopjoni kodin e mëposhtëm dhe të provoni.

[cceN_cpp theme = "agim"] konfigurim i pavlefshëm () {madhësia (400, 400); } void draw () {elips (gjerësia/2-mouseX, lartësia/2-mouseX, mouseY, mouseY); elips (gjerësia/2-mouseX, lartësia/2+mouseX, mouseY, mouseY); elips (gjerësia/2+mouseX, lartësia/2-mouseX, mouseY, mouseY); elips (gjerësia/2+mouseX, lartësia/2+mouseX, mouseY, mouseY); } [/cceN_cpp]

Këtu kemi përdorur ndryshoren magjike mouseX dhe mouseY. Më vonë do të flasim për të në detaje.

Hapi 12: Shkundja e Rrethit

Po sikur të bëj që drejtimi i lëvizjes së rrethit të bëhet i parregullt? Me funksion të rastit me zgjuarsi, ju gjithashtu mund ta kuptoni këtë efekt. Random është një funksion i përdorur shpesh. Mund të përdoret për të gjeneruar funksione të rastësishme. Likeshtë si një shpirt pa gjurmë. Pasi lidhet me variablat, nuk mund ta imagjinoni se çfarë do të bëhet më pas.

Formati i thirrjes:

i rastësishëm (i lartë)

Lartë përfaqëson kufirin e sipërm të rastit, dhe kufiri i poshtëm i paracaktuar është 0. Për shembull, rastësor (10). Do të prodhojë një numër nga 0 në 10 rastësisht (0 është përfshirë por 10 nuk është përfshirë).

i rastësishëm (i ulët, i lartë)

Nëse vendosim dy parametra, atëherë do të kthehet në vlerën e rastësishme midis tyre. Për shembull, rastësore (5, 10). Do të prodhojë një numër nga 5 në 10 rastësisht (5 përfshihen, por 10 nuk përfshihen).

Shembull:

[cceN_cpp theme = "agim"] noton x;

x = rastësor (50, 100);

print (x); [/cceN_cpp]

Sa herë që drejtojmë programin, tastiera do të nxjerrë vlera të ndryshme.

• Shënim: Vlerat e krijuara nga funksioni i rastësishëm i përkasin llojit të pikës lundruese (lloji i numrave dhjetorë). Nëse duam t'i caktojmë një vlerë ndryshores së plotë, duhet ta transformojmë atë përmes funksionit int (). Transformimi nuk i përmbahet raundit, por fshini drejtpërdrejt pjesën dhjetore. Kështu dalja e int (e rastësishme (5)), ka vetëm 5 mundësi: 0, 1, 2, 3, 4.

Pasi të njihemi me përdorimin e funksionit të rastësishëm, mund të hyjmë drejtpërdrejt në rastin më poshtë.

[cceN_cpp theme = "agimi"] int x, y; void setup () {madhësia (300, 300); x = gjerësia/2; y = lartësia/2; } barazim barazim () {sfond (234, 113, 107); noStroke (); x += int (rastësore (-5, 5)); y += int (rastësore (-5, 5)); elips (x, y, 50, 50); }

[/cceN_cpp]

Vlerat e mëparshme të koordinatave të shtuara janë fikse. Vetëm nëse rrisim një vlerë të rastësishme, rrethi do të lëvizë në një drejtim të pacaktuar. Me gamën më të madhe të rastësishme, dridhet më shpesh. Meqenëse ndryshimi i vlerës midis kornizave kthehet, lëvizja nuk do të jetë më e qetë. Ndërsa korniza e mëparshme është në (150, 150), korniza e fundit do të zhvendoset në pozicionin e (170, 170) brenda një shikimi të shkurtër.

Hapi 13: Rrethi i Migrimit

Rrethi Migrues

A do të krijojë lëvizje të qetë? Zhurma e funksionit mund të na ndihmojë. Ka ritëm më të mirë sesa rastësia standarde. Dhe numrat e rastësishëm të gjeneruar rastësisht janë vazhdimisht.

Formati i thirrjes:

zhurmë (t

Zhurma e funksionit nuk mund të përcaktojë gamën e prodhimit të saj. Programi përcakton se ai mund të gjenerojë vetëm numra të pikave lundruese nga 0 në 1 dhe hyrja fikse mund të ketë vetëm dalje fikse.

[cceN_cpp theme = "agim"] noton x = zhurmë (5); noton y = zhurmë (5); print (x, y); [/cceN_cpp]

Për shkak se parametrat e mësipërm të hyrjes janë 5, kështu që rezultatet e daljes janë të njëjta. Atëherë si ta ndryshoni rezultatin? Përgjigja është të ndryshoni parametrat e hyrjes në mënyrë dinamike. Në fakt ne mund ta konsiderojmë zhurmën si një zë të pakufizuar zëri, parametrat e hyrjes janë njësoj si "koha e tanishme". Nëse hyrja e parametrit është e vazhdueshme, dalja do të jetë gjithashtu e vazhdueshme.

[cceN_cpp theme = "agimi"] noton x, y; void setup () {madhësia (700, 100); x = 0; sfond (0); } barazim barazim () {x += 1; y = zhurmë (frameCount/100.0)*100; noStroke (); elips (x, y, 2, 2); }

[/cceN_cpp]

Në këtë rast, ne vizatojmë rrugën e ndryshimit të Y në mënyrë që të kuptojmë më mirë zhurmën e funksionit.

• Midis tij, frameCount e ndryshueshme do të marrë kornizën aktuale. Ndryshe nga gjerësia, lartësia në të mëparshmen, është e qëndrueshme pa asnjë ndryshim. Për më tepër, fillon të rritet nga 0. Nëse e kuptojmë me grafikun tonë të animuar të shfaqjes fillestare, ai tregon faqen në të cilën jemi kthyer (përkundrazi me konceptimin e kohës në program).

• frameCount është variabël i plotë. I ndarë me një ndryshore tjetër të plotë, programi do të parazgjedhë të përpunojë rezultatin si një numër i plotë. Për të përmirësuar saktësinë e rezultatit, ne duhet të ndryshojmë 100 në 100.0. Të ndarë me një numër të pikave lundruese, do të marrim edhe një numër të pikave lundruese.

• Për të ndryshuar boshtin Y nga 0 në 100, duhet të shumëzojmë rezultatin e zhurmës me 100. Kështu ne mund të kontrollojmë gamën e vlerës së rastësishme.

Disa prej jush të mirë në të menduarit mund të pyesin "pse duhet ta ndajmë frameCountby 100? A nuk është mirë të shkruajmë frameCount drejtpërdrejt?" Natyrisht ju mund të! Por këtu, për të shfaqur më mirë karakteristikat e zhurmës së funksionit, ne ngadalësojmë "shkallën e transmetimit". Shembulli i mëposhtëm tregon ndryshimin e vlerës së prodhimit nën norma të ndryshme ndryshimi.

[cceN_cpp theme = "agimi"] noton x, y1, y2, y3, y4, y5; void setup () {madhësia (700, 500); x = 0; sfond (0); } barazim barazim () {x += 1; y1 = zhurmë (frameCount)*100; y2 = zhurmë (frameCount/10.0)*100; y3 = zhurmë (frameCount/100.0)*100; y4 = zhurmë (frameCount/1000.0)*100; y5 = zhurmë (frameCount/10000.0)*100; noStroke (); elips (x, y1, 2, 2); elips (x, y2+100, 2, 2); elips (x, y3+200, 2, 2); elips (x, y4+300, 2, 2); elips (x, y5+400, 2, 2); goditje (80); vija (0, 100, gjerësia, 100); vija (0, 200, gjerësia, 200); vija (0, 300, gjerësia, 300); vija (0, 400, gjerësia, 400); }

[/cceN_cpp]

Ju mund t'i konsideroni ndryshimet e parametrave brenda zhurmës së funksionit si një shirit përparimi. Ndryshimi i parametrit është sikur të lëvizim shiritin e përparimit. Pra, kur shtrirja në ndryshim e kësaj "pista zanore" është më e madhe, karakteristikat e përparme dhe të pasme të vazhdueshme të vlerës së daljes do të jenë më të dobëta. (Ne mund të imagjinojmë se çfarë do të ndodhë nëse transmetojmë një pjesë muzikore ose një video me shpejtësi 2 herë, 5 herë shpejtësi, 20 herë shpejtësi). Kur shtrirja është më e madhe se një vlerë e caktuar, atëherë nuk ka ndonjë ndryshim të madh për të funksionuar rastësisht në gjenerimin e vlerës.

Nëse mund t'i kuptoni të gjithë shembujt e mësipërm, atëherë do të ndjeni se asgjë nuk mund të jetë më e lehtë për të vizatuar një rreth migrues. Ju gjithashtu mund të kuptoni parimet e brendshme.

[cceN_cpp theme = "agimi"] noton x, y; void setup () {madhësia (300, 300); x = 0; } barazim barazim () {sfond (234, 113, 107); x = zhurmë (frameCount/100.0 + 100)*300; y = zhurmë (frameCount/100.0)*300; noStroke (); elips (x, y, 50, 50); }

[/cceN_cpp]

Tani, lëvizja është më interesante ashtu si një xhiro rrotulluese.

• Arsyeja pse variabli x brenda zhurmës së funksionit duhet të jetë plus 100 është sepse për t'i ndarë ato për një distancë. Nëse parametrat e xy brenda zhurmës së funksionit janë të njëjtë ose mjaft të afërt, ndryshimi i koordinatës x, y do të mbyllet me të njëjtin. Kjo është për të bërë që lëvizja të bëhet shumë më rastësisht.

Hapi 14: Rrethi i lëvizur nga miu

Më tej, më në fund arrijmë te dy variabla që më pëlqejnë më shumë: mouseX dhe mouseY. Në shikimin e parë të dy koncepteve, sytë e mi po shkëlqyen me dritë. Sepse është mënyra më e drejtpërdrejtë për të bashkëvepruar me grafikën. Ne mund të krijojmë shumë programe interesante me të.

Rasti është mjaft i thjeshtë:

[cceN_cpp theme = "agimi"] int x, y; void setup () {madhësia (300, 300); x = 0; y = 0; } barazim barazim () {sfond (234, 113, 107); noStroke (); x = miuX; y = miuY; elips (x, y, 50, 50); }

[/cceN_cpp]

mouseX mund të marrë koordinatën x të miut, ndërsa mouseY mund të marrë koordinatën y.

• Le të përpiqemi të ndryshojmë simbolin pozitiv dhe negativ, ose të shkëmbejmë mouseX dhe mouseY.

Hapi 15: Fundi

Nga këto komanda të njohura, mund të jeni në gjendje të kryeni lëvizjen e grafikës. Me përmbajtjen e kapitullit të fundit, përdorni imagjinatën tuaj siç duhet, mund të krijoni shumë efekte interesante të animuara.

Në kapitullin tonë të ardhshëm, ne mund të shohim shembuj më të bollshëm. Në të njëjtën kohë, ne do të përdorim funksione matematikore dhe do ta kombinojmë atë me lëvizjen grafike.

Ky artikull vjen nga stilisti Wenzy.

Hapi 16: Leximet relative:

Udhëzime interesante të programimit për projektuesin-përpunimi i prekjes fillestare

Udhëzime interesante të programimit për projektuesin-Krijoni programin tuaj të parë të përpunimit

Ky artikull është nga:

Nëse keni nevojë për ndihmë, mund të kontaktoni: [email protected].