Բովանդակություն:

Programրագրավորման հետաքրքիր ուղեցույց դիզայների համար. Գործարկեք ձեր պատկերը (մաս երկրորդ) `8 քայլ
Programրագրավորման հետաքրքիր ուղեցույց դիզայների համար. Գործարկեք ձեր պատկերը (մաս երկրորդ) `8 քայլ

Video: Programրագրավորման հետաքրքիր ուղեցույց դիզայների համար. Գործարկեք ձեր պատկերը (մաս երկրորդ) `8 քայլ

Video: Programրագրավորման հետաքրքիր ուղեցույց դիզայների համար. Գործարկեք ձեր պատկերը (մաս երկրորդ) `8 քայլ
Video: Угрюм-река (1969) (1 серия) фильм 2024, Սեպտեմբեր
Anonim
Programրագրավորման հետաքրքիր ուղեցույց դիզայների համար-Գործարկեք ձեր պատկերը (մաս երկրորդ)
Programրագրավորման հետաքրքիր ուղեցույց դիզայների համար-Գործարկեք ձեր պատկերը (մաս երկրորդ)

Ձեզանից շատերի համար մաթեմատիկան անօգուտ է թվում: Մեր առօրյա կյանքում ամենից հաճախ օգտագործվողը պարզապես գումարել, հանել, բազմապատկել և բաժանելն է: Այնուամենայնիվ, ամեն ինչ այլ է, եթե կարողանաք ստեղծել ծրագրով: Որքան շատ բան իմանաք, այնքան ավելի հիանալի արդյունք կստանաք:

Քայլ 1: Շարժում և գործառույթ

Թույլ տվեք ցույց տալ մի քանի անհայտ նկար ՝ ձեր ճաշակը խթանելու համար:

Ինչ է սա? Այժմ պարզապես պահեք այս հարցը նախ և վերջ, դուք կիմանաք և կօգտագործեք այն:

Վերջին գլխում մենք սովորեցինք գործառույթի կարգավորում և ֆունկցիայի նկարչություն, ինչը կարող է ստիպել ստատիկ գրաֆիկան դինամիկ դառնալ: Այնուամենայնիվ, շարժման այս ձևաչափը չափազանց պարզ է: Մենք պատրաստվում ենք օգտագործել նախկինում յուրացրած գործառական գիտելիքները `մեր գրաֆիկան իրենց բնույթով գործարկելու համար:

Քանի՞ գործառույթ կարող եք ճանաչել վերը նշված նկարներից: Ինչպիսի՞ հարաբերություններ ունեն նրանք շարժման հետ: Հիմա եկեք դրանից վերցնենք քառակուսի գործառույթ, պատահականորեն ավելացնենք որոշ պարամետրեր և տեսնենք, թե ինչ կլինի: Օրինակ ՝ y = x² / 100:

Ահա թե ինչպիսին է գործառույթի պատկերը: Պատճենեք ներքևի ծածկագիրը:

[cceN_cpp theme = "լուսաբաց"] բոց x, y; void setup () {չափը (300, 300); ֆոն (0); x = 0; } void draw () {stroke (255); կաթված Քաշ (2); y = ուժ (x, 2) / 100.0; // POW գործառույթը կվերադառնա նշանակման թվի n -րդ հզորությանը: (x, 2) ներկայացնում է x- ի քառակուսին: Առաջին պարամետրը բազային թիվն է, իսկ երկրորդը `ինդեքսը: կետ (x, y); x ++; } [/cceN_cpp]

Վազքի էֆեկտ

Հաջորդը, ընտրեք գործառույթի մեղքը: Բանաձև ՝ y = 150 + մեղք (x):

Պատճենեք հետևյալ ծածկագիրը:

[cceN_cpp theme = "լուսաբաց"] բոց x, y; void setup () {չափը (300, 300); ֆոն (0); x = 0; } դատարկ վիճակահանություն () {y = բարձրություն/2 + մեղք (ռադիաններ (x)) * 150; // radառագայթային ֆունկցիան x- ը վերածում է անկյունի: x ++; կաթված (255); հարված Քաշ (2); կետ (x, y); } [/cceN_cpp]

Վազքի էֆեկտ

Սա այն գրաֆիկական պատկերն է, որը մենք ստանում ենք ծածկագիրը գործարկելուց հետո: Եվ դա նրանց շարժման հետքերն են: Նախկինի համեմատ արդյունքն ակնհայտ է: Ֆունկցիայի պատկերը իրականում համապատասխանում է շարժման ուղուն: Դա բավականին պարզ է: Պարզապես պետք է x, y արժեքը փոխարինել կոորդինատով: Մեր գծած նախկին հետքը համարժեք է y = x² / 100 ֆունկցիայի գրաֆիկին: Մինչդեռ վերջին ուղին հավասար է y = 150 + sin (x) ֆունկցիայի գրաֆիկին: Բայց ծրագրում y առանցքի ուղղությունը հակառակն է: Այսպիսով, օրիգինալ գրաֆիկայի համեմատ, հետքը անկարգ կլինի: Այժմ, ենթադրում եմ, որ դուք պետք է այնպիսի զգացողություն ունենաք, որ երկար ժամանակ ձեր գլխին հետապնդող մի քանի դժվար հարցեր անմիջապես լուծվում են: Amazingարմանալի է, որ նախկինում սովորած այս ֆանտաստիկ գործառույթները կարող են օգտագործվել գրաֆիկական շարժումը վերահսկելու համար:

Քայլ 2: Ֆունկցիա գրելու համար

Ստորև թվարկել եմ մի քանի հաճախակի օգտագործվող գործառույթներ: Հուսով եմ, որ դրանք կարող են օգնել մեզ գործառույթները թարգմանել համակարգչով ճանաչելի կոդի:

Հետևաբար, ծրագրում ստորև բերված բանաձևը պետք է գրվի այսպես.

y = x² → y = ուժ (x, 2) կամ y = քառակուսի (x)

y = x³ → y = ուժ (x, 3)

y = xⁿ → y = ուժ (x, n)

y = 4ⁿ → y = ուժ (4, n)

y = logₑ² → y = տեղեկամատյան (2)

y = e² → y = exp (2)

y = √5 → y = sqrt (5)

Կարող եք նաև պատահաբար մի գործառույթ գրել ծրագրում և տեսնել, թե ինչպիսին կլինի դրա շարժման ուղին: Հիշեք, որ հաշվի առնեք արժեքի դաշտի և սահմանման տիրույթի տիրույթը, հակառակ դեպքում ձեր գրաֆիկը կսպառվի ձեր էկրանից:

Եռանկյունաչափական գործառույթ

Այժմ, եկեք ավելի առաջ գնանք ՝ իմանալու եռանկյունաչափական գործառույթների որոշ գրություններ:

Պետք է ուշադրություն դարձնել, որ ծրագրում գործառույթի պարամետրի մուտքը անկյունի նկատմամբ ընդունում է ռադիանը: Այսպիսով, sin90 ° –ը պետք է գրվի մեղքի մեջ (PI / 2): Եթե ձեզ ծանոթ չէ այս մեթոդը, կարող եք օգտագործել randians գործառույթը ՝ անկյունը նախապես ռադիոնի վերածելու համար, այնուհետև գրել sin (radians (90)):

Ֆունկցիայի աստիճանների օգտագործումը համեմատաբար հակառակն է: Այն կարող է ռադիանը վերածել անկյունի: Մուտքագրեք տպագիր (աստիճաններ (PI/2)) անմիջապես խմբագրման տարածքում և տեսեք, թե ինչ կստանաք:

Քայլ 3. Վերահսկեք գրաֆիկական շարժումը եռանկյունաչափական գործառույթով

Ահա ձեզ համար մի դեպք ՝ տեսնելու գրաֆիկական շարժման իրական ազդեցությունը:

[cceN_cpp theme = "լուսաբաց"] բոց x, y; void setup () {չափը (700, 300); } void draw () {background (234, 113, 107); y = մեղք (ռադիաններ (x)) * 150 + 150; x ++; noStroke (); էլիպս (x, y, 50, 50); } [/cceN_cpp]

Ֆունկցիայի մեղքը պարբերական գործառույթ է: Դրա նվազագույն արժեքը -1 է, իսկ առավելագույնը `1. Էկրանի բարձրությունը 300 է: Հղում է y = sin (ռադիաններ (x)) * 150 + 150, հետևաբար y արժեքի փոփոխման տիրույթը լավ վերահսկելի կլինի 0 -ի սահմաններում: մինչև 300:

Պտտվող շրջան

Դե, մենք վերջապես եկանք այս գլխի ամենակարևոր մասի մեջ: Ինչպե՞ս ծրագրում գծել շրջանաձև ուղի: Ինչպե՞ս օգտագործել գործառույթները այն ցուցադրելու համար: Թույլ տվեք ձեզ նորից ցույց տալ երկու նկար, որոնք տեսանք այս հոդվածի սկզբում:

Իրականում նրանք տեսողականորեն մերկացրել են շրջագիծի կոորդինատի և եռանկյունաչափական ֆունկցիայի միջև կապը: Վերոնշյալ նկարներում շարժումը պայմանավորված է անընդհատ աճող անկախ փոփոխական θ- ով: Ձախը sin և cos գործառույթի պատկերն է, իսկ աջը քարտեզագրվելուց հետո շրջանաձև շարժումներ կատարող կետ է: Շատ խելացի չէ՞ Այլևս առեղծվածային չէ: Այն իրականացնելու համար կարող եք օգտագործել ծածկագիրը:

Պարզ օրինակ.

[cceN_cpp theme = "լուսաբաց"] բոց x, y, r, R, անկյուն; void setup () {չափը (300, 300); r = 20; // Շրջանի տրամագիծը R = 100; // Շարժման շառավիղ x = 0; անկյուն = 0; y = բարձրություն/2; } void draw () {background (234, 113, 107); թարգմանել (լայնություն/2, բարձրություն/2); // Տեղափոխեք սկզբնական կետը էկրանի կենտրոն: noStroke (); x = R * cos (անկյուն); y = R * մեղք (անկյուն); էլիպս (x, y, r, r); անկյուն += 0,05; } [/cceN_cpp]

Նայել! Պտտվող շրջան է հայտնվում: Այստեղ անկախ փոփոխականն այլևս անընդհատ աճող բիթ դառնում է անկյուն (հավասար է θ -ին նկարում): Այն կանգնած է անկյունի համար: Դրա մեջ xy- ն համեմատաբար բազմապատկել է R գործակիցը, ինչը հանգեցնում է շրջանագծի շարժման շառավիղի երկարացման (R- ը շառավիղի համար է): Եթե այն չի բազմապատկում R- ը, ապա նրա շարժման ուղին կսահմանափակվի -1 -ից 1 -ի սահմաններում:

Ինչու՞ չօգտագործել աճող x- ը: Ըստ բուն ֆունկցիայի հատկության, ցանկացած x սահմանման տիրույթում ունի միակ y- ն, որը կհամապատասխանի դրան: Այսպիսով, հարթ ուղղանկյուն չափի կոորդինատային համակարգում դուք չեք կարող պարզել շրջանագծի ուղղակի նկարման «պարզ գործառույթ»: Այսինքն ՝ մենք այլևս չենք կարող օգտագործել այս ձևաչափը:

y = (x- ի անհայտ արտահայտությունը?);

x ++;

Այսպիսով, մենք պետք է փոխենք մեր գաղափարը: Ընտրեք մեկ այլ անկյուն ՝ որպես անկախ փոփոխական, այնուհետև օգտագործեք sin և cos գործառույթը ՝ այն հորիզոնական և ուղղահայաց կոորդինատների վերածելու համար:

x = R * cos (անկյուն);

y = R * մեղք (անկյուն);

անկյուն += 0,05;

Ձեզանից ոմանք կարող են զարմանալ, թե ինչու է այն կարող ցուցադրել շրջանագծի շարժման ուղին: Եռանկյունաչափական ֆունկցիայի սահմանման համաձայն, մենք հեշտությամբ կարող ենք պատճառաբանել, որ այդ գործառույթը մեղադրում է հակառակ կողմի հարաբերակցությունը հիպոթենուսին. ֆունկցիան cos- ը հիպոթենուսին կից հարաբերակցությունն է: Անկախ նրանից, թե որտեղ է գտնվում շրջանագծի կետը, r (շառավիղը) կմնա անփոփոխ: Հետևաբար, մենք կարող ենք եզրափակել x կոորդինատի և y կոորդինատի արտահայտությունը:

Քանի որ սա մաթեմատիկական ուղեցույց չէ, այստեղ ես պատրաստվում եմ դադարեցնել ձեզ եռանկյունաչափական ֆունկցիայի մասին ավելի շատ գիտելիքներ ցուցադրելը: Եթե ցանկանում եք իմանալ այն կամ պարզապես մոռացել եք այն, կարող եք կրկին վերանայել այն ինքներդ:

Իհարկե, ամեն ինչ կարգին է, եթե չես կարողանում դա ամբողջությամբ հասկանալ: Դուք միայն պետք է իմանաք, թե ինչպես օգտագործել այն շրջան նկարելու համար: Սա նույնպես մի տեսակ «ծրագրավորման գաղափար» է: Հետագայում մենք հաճախ կանչելու ենք գոյություն ունեցող մոդուլներից մի քանիսը, որոնք պատրաստվել են ուրիշների կողմից `որոշակի գործառույթ իրականացնելու համար: Պարզապես մի դրդեք ինքներդ ձեզ մանրամասն իմանալ:

Այնուամենայնիվ, sin և cos գործառույթը ընդհանուր է: Եթե ցանկանում եք ավելի բարձր մակարդակի ստեղծագործություն կատարել, ավելի լավ է փորձեք դա մանրակրկիտ իմանալ: Եթե այս հարցն ինքնին կարող է մեզ մղել ավելի շատ մաթեմատիկական գիտելիքներ սովորելու, ապա ավելի հետաքրքիր բաներ են սպասում, որ դրանք կքանդես:

Սրանք նկարներ են ՝ եռանկյունաչափական ֆունկցիայի հետ սերտ հարաբերական:

Քայլ 4: Շարժման համակարգման համակարգ

Նախորդ էֆեկտները բոլորը վերաբերում են գրաֆիկական կոորդինատների փոփոխություններին: Կոորդինատային համակարգն ինքնին ստատիկ է: Իրականում մենք կարող ենք կատարել կոորդինատային շարժում շարժական էֆեկտի իրականացման համար: Սա ճիշտ այնպես, ինչպես լողափում գտնվող մարդիկ են դիտում նավակում գտնվող մյուս մարդկանց: Նավի վրա գտնվող մարդկանց համար նավակը ստատիկ է: Բայց ինչ կլինի, եթե նավակն ինքն է շարժվում, ապա նավակի մեջ գտնվող մարդիկ շարժվում են դրա հետ: Նախկին դեպքերը վերաբերում են «նավակով վազող մարդկանց»: Իրականում նավակը չի շարժվում: Ստորև բերված են կոորդինատային համակարգի փոփոխման որոշ ընդհանուր գործառույթներ:

Ֆունկցիայի թարգմանություն

Ֆունկցիայի թարգմանությունը, որի մասին մենք նախկինում խոսել էինք, օգտագործվում է գրաֆիկայի կոորդինատային համակարգը հորիզոնական տեղափոխելու համար:

Հրավիրման ձևաչափ.

թարգմանել (ա, բ)

Առաջին պարամետրը նշանակում է անցնել x առանցքի պիքսելների դրական ուղղությամբ: Երկրորդ պարամետրը նշանակում է b պիքսելների համար y առանցքի դրական ուղղությամբ շարժվել:

Համեմատեք երկու ծածկագիրը և փորձեք գտնել որևէ տարբերություն: (Կոդի պարզեցման համար մենք կարող ենք ջնջել գործառույթի չափը, էկրանի լայնությունը և բարձրությունը կանխադրված են 100):

Օգտագործելուց առաջ.

էլիպս (0, 0, 20, 20);

Օգտագործելուց հետո.

թարգմանել (50, 50);

էլիպս (0, 0, 20, 20);

Ֆունկցիան պտտել

Հրավիրման ձևաչափ.

պտտել (ա)

Այն օգտագործվում է կոորդինատային համակարգը պտտելու համար: Երբ պարամետրը դրական է, այն կընտրի սկզբնական կետը որպես կենտրոնական կետ և կշրջվի ժամացույցի սլաքի ուղղությամբ: Ռադիանը օգտագործելու համար պարամետրի մուտքը նույնն է եռանկյունաչափական ֆունկցիայի հետ:

Օգտագործելուց առաջ.

էլիպս (50, 50, 20, 20);

Օգտագործումից հետո.

պտտել (ռադիաններ (30));

էլիպս (50, 50, 20, 20);

Programրագրի ազդեցությունն այն է, որ շրջանը ստիպի շրջել կոորդինատային կենտրոնական կետի շուրջը ՝ ժամացույցի սլաքի ուղղությամբ 30 աստիճանով:

Ֆունկցիայի սանդղակ

Հրավիրման ձևաչափ.

սանդղակ (ա)

Այս գործառույթը կարող է փոքրացնել կոորդինատային համակարգը: Արժեքը մասշտաբավորման համար է: Երբ պարամետրը 1 -ից դուրս է, ապա մեծացրեք; եթե այն 1 -ից ցածր է, ապա մեծացրեք:

Օգտագործելուց առաջ.

էլիպս (0, 0, 20, 20);

Օգտագործումից հետո.

սանդղակ (4);

էլիպս (0, 0, 20, 20);

Վերոնշյալ նկարի շրջանակն ընդլայնվում է սկզբնական չափի չորս անգամ: Բացի այդ, դուք կարող եք օգտագործել երկու պարամետր ՝ x առանցքի և y առանցքի ուղղությունները առանձին մեծացնելու համար:

սանդղակ (4, 2);

էլիպս (0, 0, 20, 20);

Փոխակերպման գործառույթի գերակայություն

Այստեղ սուպերպոզիցիան վերաբերում է ներկայիս կոորդինատային համակարգին վերաբերող փոփոխություններին: Այլ կերպ ասած, էֆեկտները կարող են զուգորդվել:

թարգմանել (40, 10);

թարգմանել (10, 40);

էլիպս (0, 0, 20, 20);

Դրա վերջնական ազդեցությունը հավասար կլինի

թարգմանել (50, 50);

էլիպս (0, 0, 20, 20);

Նույնը ՝ գործառույթը պտտելու համար

պտտել (ռադիաններ (10));

պտտել (ռադիաններ (20));

էլիպս (50, 50, 20, 20);

Հավասար է

պտտել (ռադիաններ (30));

էլիպս (50, 50, 20, 20);

Երկուսն էլ ֆունկցիայի սանդղակը և կենտրոնի պտտումը սկզբնական կետի վրա `մասշտաբի և պտտվելու համար: Եթե մենք ցանկանում ենք ստանալ պտտման էֆեկտը կենտրոնական դիրքով (50, 50), մենք պետք է մտածենք հակառակ ձևով: Նախ տեղափոխեք սկզբնական կետը (50, 50) դիրքի, այնուհետև ավելացրեք պտտվող փոխակերպման գործառույթը: Վերջապես, ձեր գրաֆիկը նկարեք սկզբնական կետի վրա:

Օգտագործելուց առաջ.

էլիպս (50, 50, 50, 20);

Օգտագործումից հետո.

թարգմանել (50, 50);

պտտել (ռադիաններ (45));

էլիպս (0, 0, 50, 20); // Պտտվող անկյունի փոփոխությունը տեսնելու համար մենք պատրաստել ենք օվալ:

Դա կարող է թվալ պտտվող: Պարզապես պետք է ավելի շատ զբաղվել, հետո կհասկանաք դա: (Կարող եք նաև փորձել փոխել գործառույթի թարգմանության և պտտման հաջորդականությունը `տարբերությունը տեսնելու համար):

Հորիզոնական շարժում և շրջանաձև շարժում

Ստորև բերված դեպքերում մենք մտադիր ենք շարժունակ ազդեցություն ունենալ կոորդինատային համակարգի փոփոխության միջոցով: Միևնույն ժամանակ, ես կցանկանայի խնդրել ձեզ անդրադառնալ նախկին գլխի օրինակին: Ofամանակի մեծ մասը դուք կգտնեք որոշակի տեսակի էֆեկտ իրականացնելու համար, կարող եք օգտագործել բոլորովին այլ մեթոդ:

Քայլ 5: Հորիզոնական շարժում

[cceN_cpp theme = "լուսաբաց"]

int x, y; void setup () {չափը (300, 300); x = 0; y = բարձրություն/2; } void draw () {background (234, 113, 107); noStroke (); թարգմանել (x, y); էլիպս (0, 0, 50, 50); x ++; } [/cceN_cpp]

Շրջանակի կոորդինատը չի փոխվում, բայց փոխվում է նրա կոորդինատային համակարգը:

Պտտել շարժումը

[cceN_cpp theme = "լուսաբաց"] բոց r, R, անկյուն; void setup () {չափը (300, 300); r = 20; // Շրջանակի չափս R = 100; // Շարժման ուղու շառավիղ} դատարկ վիճակահանություն () {ֆոն (234, 113, 107); թարգմանել (լայնություն/2, բարձրություն/2); // Տեղադրեք սկզբնական կետը էկրանի կենտրոն: պտտել (անկյուն); noStroke (); էլիպս (0, R, r, r); անկյուն += 0,05; } [/cceN_cpp]

Արդյո՞ք դա շատ ավելի պարզ և պարզ չէ, քան եռանկյունաչափական գործառույթը: Դուք կարող եք այստեղ հարց ունենալ. Որպես օրինակ վերցրեք պտտվող ծածկագիրը: Ակնհայտ է, որ վերը նշված տրանսֆորմացիայի ֆունկցիան հարաբերական է և թույլ է տալիս սերտաճում: Եթե մենք գրում ենք translate (width/2, height/2) ֆունկցիայի վիճակահանության, դա չի նշանակում, որ ամեն անգամ ֆունկցիայի խաղարկությունը գործում է մեկ անգամ, կոորդինատային համակարգը կտեղափոխի հեռավորություն սկզբնական հիմքից ներքևի աջ ուղղությամբ: Խելամիտ է, որ այն հավերժ չի մնա էկրանի կենտրոնում:

Դուք կարող եք հասկանալ այս կերպ. Երբ գործառույթի գծագրման կոդը ավարտում է գործողությունը մինչև ներքև, երկրորդ գործողության ժամանակ կոորդինատային համակարգը կվերադառնա սկզբնական կարգավիճակին: Կոորդինատային համակարգի սկզբնական կետը կանխադրված կլինի վերադառնալ ձախ վերին անկյուն: Այսպիսով, եթե մենք ուզում ենք այնպես անել, որ կոորդինատային համակարգը անընդհատ փոխվի, ֆունկցիայի պտույտի անկյունային պարամետրերը պետք է անընդհատ բարձրացնեն դրա արժեքը:

Մուտք գործեք կոորդինատների կարգավիճակ

Երբեմն, մենք չենք ցանկանում, որ կոորդինատային համակարգի կարգավիճակը հիմնված լինի նախորդի վրա: Այս պահին մենք պետք է օգտագործենք pushMatrix և popMatrix գործառույթները: Երկու գործառույթները սովորաբար հայտնվում են զույգի մեջ: PushMatrix գործառույթը popMatrix- ից առաջ է: Նրանք չեն կարող օգտագործվել բացառապես, հակառակ դեպքում դա սխալ կլինի:

Օրինակ:

[cceN_cpp theme = "լուսաբաց"] pushMatrix (); // Պահել կոորդինատային համակարգի կարգավիճակի թարգմանություն (50, 50); էլիպս (0, 0, 20, 20); popMatrix (); // Կարդալ կոորդինատների համակարգի կարգավիճակը rect (0, 0, 20, 20); [/cceN_cpp]

Այս օրինակում, նախքան translate (50, 50) օգտագործելը, մենք օգտագործում ենք pushMatrix գործառույթը: կոորդինատային համակարգի ընթացիկ վիճակը պահելու համար: Սա, միևնույն ժամանակ, սկզբնական կարգավիճակն է: Շրջանակ նկարելուց, այնուհետև popMatrix- ի ներդրումից հետո այն կվերադառնա այս կարգավիճակին: Այս պահին իրականացրեք գործառույթը rect, դուք կգտնեք, որ այն չի տուժել գործառույթի թարգմանության ազդեցությունից, փոխարենը այն գծում է քառակուսի սկզբնական կետի ձախ վերին անկյունում:

Բացի այդ, pushMatrix և popMatrix գործառույթները թույլ են տալիս բնադրվել:

Օրինակ

pushMatrix ();

pushMatrix ();

popMatrix ();

popMatrix ();

Իր հարաբերությունները ինտուիտիվ կերպով ցույց տալու համար մենք ընտրում ենք խտացված ձևաչափ:

Համակցված շարժո՞ւմ, թե՞ շարժում շարժման մեջ:

Այժմ սկսվում է կարևոր մասի երկրորդ ալիքը: Պարզապես փորձեք առաջ մղել: Նախկինում մենք օգտագործել էինք նավակի և մարդկանց փոխաբերությունը: Երբևէ մտածե՞լ եք այն մասին, թե եթե մենք ստիպենք մարդկանց և նավակին շարժվել, ինչպիսի՞ զգացում կունենան լողափում գտնվող մարդիկ:

Ինչպես համատեղել հորիզոնական շարժումը կոորդինատային համակարգի պտտվող շարժման հետ: Այստեղ իմաստն իրականում միայն մի ուղղությամբ շարժվելն է:

[cceN_cpp theme = "լուսաբաց"] int x, y; լողացող անկյուն; void setup () {չափը (300, 300); ֆոն (234, 113, 107); noStroke (); x = 0; // Երբ x- ի սկզբնական արժեքը 0 է, մենք կարող ենք անտեսել ծածկագրի այս նախադասությունը: Փոփոխական հայտարարելիս լռելյայն արժեքը 0. y = 0 է; // Նույնը վերը նշվածին: անկյուն = 0; // Նույնը վերը նշվածին: } դատարկ վիճակահանություն () {անկյուն += 0.25; y--; թարգմանել (լայնություն/2, բարձրություն/2); pushMatrix (); պտտել (անկյուն); էլիպս (x, y, 5, 5); popMatrix (); } [/cceN_cpp]

Եվ կան շրջանաձև շարժումներ և համակարգման համակարգերի մասշտաբավորում:

[cceN_cpp theme = "լուսաբաց"] բոց x, y, անկյուն; void setup () {չափը (300, 300); ֆոն (234, 113, 107); noStroke (); } դատարկ վիճակահանություն () {անկյուն += 0.01; x = մեղք (անկյուն) * 100; y = cos (անկյուն) * 100; թարգմանել (լայնություն / 2, բարձրություն / 2); pushMatrix (); սանդղակ (1 + 0.1 * մեղք (անկյուն * 10)); էլիպս (x, y, 5, 5); popMatrix (); } [/cceN_cpp]

Մի խաբվեք դրանով! Շրջանակի կետը իրականում կատարում է շրջանաձև շարժում: Դժվար չէ հասկանալ, եթե այն համեմատենք տեսախցիկով չափման հետ: Տեսախցիկը, որն անընդհատ շարժվում է առջև կամ հետև, նկարում է շրջանաձև շարժման կետ:

Surարմացա՞ծ եք: Սրանք պարզ հիմնական գործառույթներ են: Բայց տարբեր համադրությամբ մենք կարող ենք այդքան տարբեր էֆեկտներ ստեղծել: Մինչ այժմ իմ բացահայտումը դադարում է, որպեսզի ձեր ուսումնասիրության համար որոշակի տեղ խնայեմ:

Քայլ 6: Համապարփակ օգտագործում

Այս գլխի համար շուտով ավարտվում է: Վերջին երկու գլուխներում ես ներկայացրել եմ գրաֆիկական շարժման հիմնական մեթոդը: Կարծում եմ, որ դուք կարող եք դրա համար ավելի խորը հասկանալ ՝ համեմատած ձեր սկզբնական գաղափարների հետ: Ամենաքիչը, ահա ձեր տեղեկանքի համար լրացված մի օրինակ:

[cceN_cpp theme = "լուսաբաց"] բոց x1, y1, x2, y2, r, R; բոց անկյուն 1, անկյուն 2; void setup () {չափը (300, 300); r = 12; R = 120; անկյուն 1 = 0; անկյուն 2 = PI/4; } void draw () {background (234, 113, 107); noStroke (); թարգմանել (լայնություն / 2, բարձրություն / 2); անկյուն 1 += 0.02; անկյուն 2 += 0,06; x1 = R *մեղք (անկյուն 1); y1 = R* cos (անկյուն 1); x2 = R/2 *մեղք (անկյուն 2); y2 = R/2 *cos (անկյուն 2); էլիպս (x1, y1, r/2, r/2); էլիպս (x2, y2, r, r); էլիպս (-x1, -y1, r/2, r/2); էլիպս (-x2, -y2, r, r); էլիպս (x1, -y1, r/2, r/2); էլիպս (x2, -y2, r, r); էլիպս (-x1, y1, r/2, r/2); էլիպս (-x2, y2, r, r); կաթված (255); հարված Քաշ (3); տող (x1, y1, x2, y2); տող (-x1, -y1, -x2, -y2); տող (x1, -y1, x2, -y2); տող (-x1, y1, -x2, y2); } [/cceN_cpp]

Այս օրինակը չի պարունակում որևէ գիտելիք մեր նախորդ գլխից դուրս:

Ո՞ր միավորների համար է համապատասխանում: Ո՞ր տողերն են համընկնում: Ես նույնպես չեմ կարող դա պարզել: Բայց ես հիշում եմ, որ այն բխում է կոդի մի փոքր հատվածից:

Սա է նրա շարժման բնույթը: Հանգստի տողերը պարզապես հայելու էֆեկտ են:Եթե շարունակեք հետևել այս ուղեցույցին, կարող եք կատարել թարմացված տարբերակ և վերահսկիչ ավելացնել ձեր գրաֆիկին, որպեսզի փոխեք ձեր գրաֆիկական շարժման կարգավիճակը իրական ժամանակում:

Mingրագրավորման հետաքրքիր կետը կայանում է նրանում, որ դուք կարող եք նախագծել կամ համատեղել կանոնակարգեր: Այնուամենայնիվ, որն է լինելու վերջնական ծրագիրը, ամեն ինչ կախված է ձեր կարողությունից: Սովորաբար դիզայներներն ունեն հզոր գրաֆիկական երևակայություն: Դուք կարող եք ուրվագծել նկարը ձեր գլխում, այնուհետև փորձել թարգմանել այն կոդի: Բացի այդ, դուք կարող եք սկսել հենց ծածկագրից և կանոնակարգից, ըստ ցանկության նախագծել գործառույթներ և փոփոխականներ: Հիշեք, որ մշակումը ձեր ուրվագիծն է, իսկ ծածկագիրը `ձեր խոզանակները: Պարզապես ազատորեն ցողեք ձեր գաղափարները:

Քայլ 7: ՎԵՐ END

Մեր գլխում վերջին անգամ, վերադառնանք մի հարցի, որը մենք երկար ժամանակ պահպանել էինք ի սկզբանե: Ի՞նչ օգուտ է այդքան ջանքեր ծախսել ծրագրով նկար ստեղծելու համար: Այս գլուխն սովորելուց հետո դուք կգտնեք, որ խաղալու շատ մեթոդներ են սպասում ձեր ուսումնասիրությանը:

[cceN_cpp theme = "dawn"] float browX, earD, eyeD, faceD; void setup () {չափը (500, 500); } void draw () {background (200, 0, 0); browX = 150 + մեղք (frameCount / 30.0) *20; earD = 180 + մեղք (frameCount / 10.0) *20; eyeD = 60 + մեղք (frameCount/30.0) *50; դեմք = 300; կաթված Քաշ (8); էլիպս (175, 220, earD, earD); էլիպս (լայնությունը `175, 220, earD, earD); rect (100, 100, faceD, faceD); գիծ (browX, 160, 220, 240); գիծ (width-browX, 160, width-220, 240); լրացնել (պատահական (255), պատահական (255), պատահական (255)); էլիպս (175, 220, eyeD, eyeD); էլիպս (լայնություն-175, 220, eyeD, eyeD); լրացնել (255); կետ (լայնություն/2, բարձրություն/2); եռանկյուն (170 - cos (frameCount / 10.0) * 20, 300 - sin (frameCount / 10.0) * 20, լայնություն - (170 + cos (frameCount / 10.0) * 20), 300 + sin (frameCount / 10.0) * 20, 250, 350); } [/cceN_cpp]

Արդյո՞ք դա կախարդական չէ դինամիկ գրաֆիկայի համար: Այստեղ ես ձեզ շատ դեպքեր չեմ ցույց տալիս: Դուք գուցե կարողանաք նախագծել ինձանից շատ ավելի լավ էֆեկտ: Programրագրով նկարելու առավելությունն այն է, որ կարող ես խաղալ յուրաքանչյուր պիքսելով: Քանի որ ձեր գրաֆիկը bitmap չէ, ձեր գրաֆիկայի յուրաքանչյուր առանցքային կետ վերահսկելի է: Այն կարող է գիտակցել որոշ էֆեկտներ, որոնք այլ ծրագրակազմերը չեն կարող գիտակցել:

Եթե ունեք սիրտ, որը ցանկանում է ամեն ինչ կոտրել և նորից համատեղել, ուսումնական ծրագիրը մեծապես կօգնի ձեզ իրականացնել այս գաղափարը:

Այս հոդվածը գալիս է դիզայներ Վենզիից:

Քայլ 8: Հարաբերական ընթերցումներ

Programրագրավորման հետաքրքիր ուղեցույց դիզայների համար `նախնական հպման մշակում

Programրագրավորման հետաքրքիր ուղեցույց դիզայների համար. Ստեղծեք ձեր առաջին մշակման ծրագիրը

Programրագրավորման հետաքրքիր ուղեցույց դիզայների համար. Գործի դրեք ձեր նկարը (մաս առաջին)

Եթե ունեք հարցեր, կարող եք նամակ ուղարկել [email protected] հասցեին:

Այս հոդվածը ՝ https://www.elecfreaks.com/10920.html կայքից

Խորհուրդ ենք տալիս: