विषयसूची:

डिज़ाइनर के लिए दिलचस्प प्रोग्रामिंग गाइडेंस--अपना चित्र चलाना (भाग दो): 8 कदम
डिज़ाइनर के लिए दिलचस्प प्रोग्रामिंग गाइडेंस--अपना चित्र चलाना (भाग दो): 8 कदम

वीडियो: डिज़ाइनर के लिए दिलचस्प प्रोग्रामिंग गाइडेंस--अपना चित्र चलाना (भाग दो): 8 कदम

वीडियो: डिज़ाइनर के लिए दिलचस्प प्रोग्रामिंग गाइडेंस--अपना चित्र चलाना (भाग दो): 8 कदम
वीडियो: अपनी शादी की क्या शर्त रखी है पूज्या जया किशोरी जी नें? आइए जानते हैं उन्हीं से | Jaya Kishori 2024, नवंबर
Anonim
डिज़ाइनर के लिए दिलचस्प प्रोग्रामिंग गाइडेंस--अपना चित्र चलाएँ (भाग दो)
डिज़ाइनर के लिए दिलचस्प प्रोग्रामिंग गाइडेंस--अपना चित्र चलाएँ (भाग दो)

गणित, आप में से अधिकांश के लिए, बेकार लगता है। हमारे दैनिक जीवन में सबसे अधिक उपयोग केवल जोड़, घटाना, गुणा और भाग करना है। हालाँकि, यदि आप प्रोग्राम के साथ बना सकते हैं तो यह काफी अलग है। जितना अधिक आप जानेंगे, उतना ही शानदार परिणाम आपको मिलेगा।

चरण 1: आंदोलन और कार्य

आपके स्वाद को बढ़ाने के लिए मैं आपको कई अज्ञात तस्वीरें दिखाता हूं।

यह क्या है? अब बस इस सवाल को पहले रखें और बाद में आप इसे जानेंगे और इस्तेमाल करेंगे।

पिछले अध्याय में, हमने फंक्शन सेटअप और फंक्शन ड्रॉ सीखा है, जो स्टैटिक ग्राफिक्स को डायनामिक बना सकता है। हालाँकि, यह आंदोलन प्रारूप बहुत सरल है। हम अपने ग्राफिक्स को अपने चरित्र के साथ चलाने के लिए पहले महारत हासिल किए गए फ़ंक्शन ज्ञान का उपयोग करने जा रहे हैं।

उपरोक्त चित्रों से आप कितने कार्यों को पहचान सकते हैं? उनका आंदोलन से किस तरह का संबंध है? अब इसमें से एक द्विघात फलन लेते हैं, कुछ मापदंडों को यादृच्छिक रूप से जोड़ते हैं और देखते हैं कि क्या होगा। उदाहरण के लिए, y = x² / १००।

फ़ंक्शन छवि इस तरह दिखती है। नीचे दिए गए कोड को कॉपी करें।

[सीसीईएन_सीपीपी थीम = "डॉन"] फ्लोट एक्स, वाई; शून्य सेटअप () {आकार (300, 300); पृष्ठभूमि (0); एक्स = 0; } शून्य ड्रा () {स्ट्रोक (255); स्ट्रोकवेट(2); वाई = पाउ (एक्स, 2) / 100.0; // फ़ंक्शन पाउ पदनाम संख्या की nth शक्ति पर वापस आ जाएगा। (x, 2) x के वर्ग को दर्शाता है। पहला पैरामीटर आधार संख्या है और दूसरा सूचकांक है। बिंदु (एक्स, वाई); एक्स++; } [/cceN_cpp]

चल रहा प्रभाव

अगला, फ़ंक्शन पाप चुनें। सूत्र: y = १५० + sin(x)।

निम्नलिखित कोड को कॉपी करें।

[सीसीईएन_सीपीपी थीम = "डॉन"] फ्लोट एक्स, वाई; शून्य सेटअप () {आकार (300, 300); पृष्ठभूमि (0); एक्स = 0; } शून्य ड्रा () { y = ऊंचाई / 2 + पाप (रेडियन (x)) * १५०; // फंक्शन रेडियन x को कोण में बदल देता है। एक्स++; स्ट्रोक (255); स्ट्रोकवेट(2); बिंदु (एक्स, वाई); } [/cceN_cpp]

चल रहा प्रभाव

यह वह ग्राफिक है जो हमें कोड को संचालित करने के बाद मिलता है। और ये उनके मूवमेंट ट्रैक हैं। पूर्व की तुलना में, परिणाम स्पष्ट है। फंक्शन इमेज वास्तव में मूवमेंट ट्रैक के अनुरूप है! यह काफी सरल है। आपको बस x, y के मान को निर्देशांक में बदलना है। हमने जो पिछला ट्रैक खींचा वह फंक्शन y = x² / 100 के ग्राफिक के बराबर है। जबकि बाद वाला ट्रैक फंक्शन y = 150 + sin(x) के ग्राफिक के बराबर है। लेकिन प्रोग्राम में y धुरा की दिशा विपरीत होती है। तो, मूल ग्राफिक की तुलना में, ट्रैक उल्टा होगा। अब, मुझे लगता है कि आपको यह महसूस होना चाहिए कि आपके सिर में लंबे समय से अटके कुछ कठिन प्रश्न तुरंत हल हो जाते हैं। यह आश्चर्यजनक है कि हमने पहले सीखे इन शानदार कार्यों का उपयोग ग्राफिक आंदोलन को नियंत्रित करने के लिए किया जा सकता है!

चरण 2: फंक्शन लिखने के लिए

मैंने नीचे कई अक्सर उपयोग किए जाने वाले कार्यों को सूचीबद्ध किया है। आशा है कि ये हमें फ़ंक्शन को कोड में अनुवाद करने में मदद कर सकते हैं जिन्हें कंप्यूटर द्वारा पहचाना जा सकता है।

इसलिए, कार्यक्रम में नीचे सूत्र इस प्रकार लिखा जाएगा:

y = x² → y = पाउ(x, 2) या y = वर्ग(x)

y = x³ → y = पाउ(x, 3)

वाई = एक्सⁿ → वाई = पाउ (एक्स, एन)

वाई = 4ⁿ → वाई = पाउ(4, एन)

y logₑ² → y = log(2)

y = e² → y = क्स्प(2)

y = 5 → y = sqrt(5)

आप प्रोग्राम में बेतरतीब ढंग से एक फ़ंक्शन भी लिख सकते हैं और देख सकते हैं कि इसका मूवमेंट ट्रैक कैसा दिखेगा। मान फ़ील्ड और परिभाषा डोमेन की सीमा पर विचार करना याद रखें, या आपका ग्राफ़िक आपकी स्क्रीन से बाहर हो जाएगा।

त्रिकोणमितीय फलन

अब, त्रिकोणमितीय फलनों के कुछ लेखों को जानने के लिए आगे बढ़ते हैं।

हमें इस बात पर ध्यान देना होगा कि प्रोग्राम में कोण के सापेक्ष फंक्शन पैरामीटर का इनपुट रेडियन को अपनाता है। इस प्रकार sin90° को sin(PI/2) में लिखा जाएगा। यदि आप इस पद्धति से परिचित नहीं हैं, तो आप पहले से कोण को रेडियन में बदलने के लिए फंक्शन रैंडियन का उपयोग कर सकते हैं, और फिर साइन-रेडियन (90)) लिख सकते हैं।

फ़ंक्शन डिग्री का उपयोग तुलनात्मक रूप से विपरीत है। यह रेडियन को कोण में बदल सकता है। इनपुट प्रिंट (डिग्री (पीआई/2)) सीधे संपादन क्षेत्र में, और देखें कि आपको क्या मिलेगा।

चरण 3: त्रिकोणमितीय फ़ंक्शन के साथ ग्राफिक गति को नियंत्रित करें

ग्राफिक आंदोलन के वास्तविक प्रभाव को देखने के लिए यहां आपके लिए एक मामला है।

[सीसीईएन_सीपीपी थीम = "डॉन"] फ्लोट एक्स, वाई; शून्य सेटअप () {आकार (700, 300); } शून्य ड्रा () {पृष्ठभूमि (234, 113, 107); वाई = पाप (रेडियन (एक्स)) * १५० + १५०; एक्स++; नोस्ट्रोक (); अंडाकार (एक्स, वाई, 50, 50); } [/cceN_cpp]

कार्य पाप एक आवधिक कार्य है। इसका न्यूनतम मान -1 है, और अधिकतम मान 1 है। स्क्रीन की ऊंचाई 300 है। y = sin(radians(x)) * 150 + 150 को संदर्भित किया जाता है, इसलिए मान y की परिवर्तन सीमा 0 के भीतर अच्छी तरह से नियंत्रित होगी। 300 तक।

स्पिनिंग सर्कल

खैर, हम अंत में इस अध्याय में सबसे अधिक आयात भाग में आ गए हैं। प्रोग्राम में सर्कल पथ कैसे बनाएं? इसे प्रदर्शित करने के लिए कार्यों का उपयोग कैसे करें? आइए मैं आपको वो दो तस्वीरें दिखाता हूं जो हमने इस लेख की शुरुआत में फिर से देखीं।

वास्तव में उन्होंने परिधि समन्वय और त्रिकोणमितीय फलन के बीच संबंध को दृष्टिगत रूप से उजागर किया है। उपरोक्त चित्रों में गति निरंतर बढ़ते हुए स्वतंत्र चर द्वारा संचालित होती है। लेफ्ट फंक्शन पाप और कॉस की छवि है, और राइट मैप किए जाने के बाद सर्कुलर मूवमेंट करने वाले बिंदु के लिए खड़ा है। क्या यह बहुत स्मार्ट नहीं है? यह अब रहस्यमय नहीं है। आप इसे महसूस करने के लिए कोड का उपयोग कर सकते हैं।

एक साधारण उदाहरण:

[सीसीईएन_सीपीपी थीम = "डॉन"] फ्लोट एक्स, वाई, आर, आर, कोण; शून्य सेटअप () {आकार (300, 300); आर = 20; // सर्कल व्यास आर = १००; // आंदोलन पथ की त्रिज्या x = 0; कोण = 0; वाई = ऊंचाई/2; } शून्य ड्रा () {पृष्ठभूमि (234, 113, 107); अनुवाद (चौड़ाई / 2, ऊंचाई / 2); // मूल बिंदु को स्क्रीन केंद्र पर ले जाएं। नोस्ट्रोक (); एक्स = आर * कॉस (कोण); वाई = आर * पाप (कोण); अंडाकार (एक्स, वाई, आर, आर); कोण += ०.०५; } [/cceN_cpp]

नज़र! एक घूमता हुआ चक्र दिखाई देता है! यहां, स्वतंत्र चर निरंतर वृद्धि में नहीं है बिट बन कोण (चित्र में θ के बराबर)। यह कोण के लिए खड़ा है। इसके बीच, xy में अपेक्षाकृत गुणा गुणांक R है, जो वृत्त की गति त्रिज्या (R त्रिज्या के लिए है) के विस्तार की ओर ले जाता है। यदि इसे R को गुणा नहीं करना है, तो इसका संचलन पथ -1 से 1 की सीमा के भीतर सीमित होगा।

बढ़ते हुए x का उपयोग क्यों नहीं करते? फ़ंक्शन की संपत्ति के अनुसार, परिभाषा डोमेन के भीतर किसी भी x के पास मिलान करने के लिए केवल y होता है। तो समतल आयताकार आयाम समन्वय प्रणाली में, आप सीधे वृत्त खींचने के लिए "सरल फ़ंक्शन" का पता नहीं लगा सकते हैं। कहने का तात्पर्य यह है कि हम इस प्रारूप का और अधिक उपयोग नहीं कर सकते हैं।

y = (x का अज्ञात व्यंजक?);

x++;

इसलिए हमें अपनी सोच बदलनी होगी। स्वतंत्र चर के रूप में एक और कोण चुनें, और फिर इसे क्षैतिज और लंबवत समन्वय में बदलने के लिए फ़ंक्शन sin और cos का उपयोग करें।

एक्स = आर * कॉस (कोण);

वाई = आर * पाप (कोण);

कोण += ०.०५;

आप में से कुछ को आश्चर्य हो सकता है कि यह वृत्त की गति का मार्ग क्यों प्रदर्शित कर सकता है। त्रिकोणमितीय फलन की परिभाषा के अनुसार, हम आसानी से उस फलन sin को कर्ण के विपरीत पक्ष के अनुपात का कारण बता सकते हैं; फ़ंक्शन कॉस कर्ण के आसन्न का अनुपात है। कोई फर्क नहीं पड़ता कि वृत्त बिंदु कहाँ है, r (त्रिज्या) अपरिवर्तित रहेगा। इसलिए हम x निर्देशांक और y निर्देशांक के व्यंजक का निष्कर्ष निकाल सकते हैं।

क्योंकि यह गणितीय मार्गदर्शन नहीं है, यहाँ मैं आपको त्रिकोणमितीय फलन के बारे में अधिक जानकारी प्रदर्शित करना बंद करने जा रहा हूँ। यदि आप इसे जानना चाहते हैं या आप इसे भूल जाते हैं, तो आप स्वयं इसकी पुन: समीक्षा करने का प्रयास कर सकते हैं।

बेशक, यह ठीक है अगर आप इसे पूरी तरह से नहीं समझ सकते हैं। आपको केवल यह जानना है कि इसका उपयोग वृत्त बनाने के लिए कैसे किया जाता है। यह भी एक तरह का "प्रोग्रामिंग आइडिया" है। बाद में, हम अक्सर एक निश्चित प्रकार के कार्य को महसूस करने के लिए दूसरों द्वारा बनाए गए कुछ मौजूदा मॉड्यूल को लागू करेंगे। बस इसे विस्तार से जानने के लिए खुद पर दबाव न डालें।

हालांकि, फ़ंक्शन sin और cos सामान्य है। यदि आप उच्च स्तर की रचना करना चाहते हैं, तो बेहतर होगा कि आप इसे अच्छी तरह से जानने का प्रयास करें। यदि यह प्रश्न स्वयं को अधिक गणितीय ज्ञान सीखने के लिए प्रेरित कर सकता है, तो और भी दिलचस्प चीजें हैं जो आपके लिए खोदने की प्रतीक्षा कर रही हैं।

ये त्रिकोणमितीय फलन के निकट के चित्र हैं।

चरण 4: आंदोलन समन्वय प्रणाली

पिछले प्रभाव ग्राफिक समन्वय परिवर्तनों के बारे में हैं। समन्वय प्रणाली ही स्थिर है। वास्तव में हम गतिमान प्रभाव को महसूस करने के लिए समन्वय को आगे बढ़ा सकते हैं। यह ठीक वैसे ही है जैसे समुद्र तट के लोग नाव में सवार दूसरे लोगों को देखते हैं। नाव पर सवार लोगों के लिए, नाव स्थिर है। लेकिन क्या हो अगर नाव ही चल रही हो तो नाव में सवार लोग उसके साथ चलते हैं। पूर्व के सभी मामले "नाव पर दौड़ने वाले लोगों" के बारे में हैं। दरअसल, नाव चलती नहीं है। समन्वय प्रणाली को बदलने के लिए निम्नलिखित कुछ सामान्य कार्य हैं।

फंक्शन अनुवाद

फंक्शन ट्रांसलेशन, जिसके बारे में हमने पहले बात की है, ग्राफिक के कोऑर्डिनेट सिस्टम को क्षैतिज रूप से स्थानांतरित करने के लिए उपयोग किया जाता है।

आह्वान प्रारूप:

अनुवाद (ए, बी)

पहला पैरामीटर पिक्सल के लिए एक्स एक्सल की सकारात्मक दिशा में जाने के लिए है। दूसरा पैरामीटर बी पिक्सल के लिए वाई एक्सल की सकारात्मक दिशा में जाने के लिए है।

दो कोड की तुलना करें और कोई अंतर खोजने का प्रयास करें। (कोड को सरल बनाने के लिए, हम फ़ंक्शन का आकार हटा सकते हैं, स्क्रीन की चौड़ाई और ऊंचाई डिफ़ॉल्ट रूप से 100 है।)

इससे पहले कि हम उपयोग करें:

अंडाकार (0, 0, 20, 20);

हम उपयोग करने के बाद:

अनुवाद (५०, ५०);

अंडाकार (0, 0, 20, 20);

फंक्शन रोटेट

आह्वान प्रारूप:

घुमाएँ (ए)

इसका उपयोग समन्वय प्रणाली को घुमाने के लिए किया जाता है। जब पैरामीटर सकारात्मक होता है, तो यह मूल बिंदु को केंद्र बिंदु के रूप में चुनता है और दक्षिणावर्त दिशा में घूमता है। रेडियन का उपयोग करने के लिए त्रिकोणमितीय फ़ंक्शन के साथ पैरामीटर इनपुट समान है।

इस्तेमाल से पहले:

दीर्घवृत्त (५०, ५०, २०, २०);

उपयोग के बाद:

रोटेट (रेडियन (30));

दीर्घवृत्त (५०, ५०, २०, २०);

कार्यक्रम में प्रभाव 30 डिग्री के लिए दक्षिणावर्त दिशा में समन्वय केंद्र बिंदु के चारों ओर सर्कल को घुमाने के लिए है।

फंक्शन स्केल

आह्वान प्रारूप:

स्केल (ए)

यह फ़ंक्शन समन्वय प्रणाली को ज़ूम आउट कर सकता है। मान स्केलिंग के लिए है। जब पैरामीटर 1 से अधिक हो, तो ज़ूम इन करें; अगर यह 1 से कम है, तो ज़ूम आउट करें।

इस्तेमाल से पहले:

अंडाकार (0, 0, 20, 20);

उपयोग के बाद:

स्केल(4);

अंडाकार (0, 0, 20, 20);

उपरोक्त चित्र में वृत्त को मूल आकार के चार गुना तक बढ़ाया गया है। साथ ही, आप x एक्सल और y एक्सल दिशाओं को अलग-अलग ज़ूम आउट करने के लिए दो पैरामीटर का उपयोग कर सकते हैं।

स्केल (4, 2);

अंडाकार (0, 0, 20, 20);

परिवर्तन समारोह का सुपरपोजिशन

यहां, सुपरपोजिशन वर्तमान समन्वय प्रणाली के सापेक्ष परिवर्तनों के बारे में है। दूसरे शब्दों में, प्रभावों को आरोपित किया जा सकता है।

अनुवाद (40, 10);

अनुवाद(१०, ४०);

अंडाकार (0, 0, 20, 20);

इसका अंतिम प्रभाव के बराबर होगा

अनुवाद (५०, ५०);

अंडाकार (0, 0, 20, 20);

कार्य करने के लिए समान घुमाएँ

रोटेट (रेडियन (10));

रोटेट (रेडियन (20));

दीर्घवृत्त (५०, ५०, २०, २०);

बराबर है

रोटेट (रेडियन (30));

दीर्घवृत्त (५०, ५०, २०, २०);

स्केल और रोटेट करने के लिए मूल बिंदु पर फंक्शन स्केल और रोटेट सेंटर दोनों। यदि हम (50, 50) पर केंद्रीय स्थिति के साथ घूर्णन प्रभाव प्राप्त करना चाहते हैं, तो हमें विपरीत तरीके से सोचना होगा। सबसे पहले मूल बिंदु को (50, 50) की स्थिति में ले जाएं, फिर घूर्णन परिवर्तन फ़ंक्शन जोड़ें। अंत में अपने ग्राफिक को मूल बिंदु पर चित्रित करें।

इस्तेमाल से पहले:

दीर्घवृत्त (५०, ५०, ५०, २०);

उपयोग के बाद:

अनुवाद (५०, ५०);

रोटेट (रेडियन (45));

अंडाकार (0, 0, 50, 20); // रोटेट एंगल में बदलाव देखने के लिए, हमने एक अंडाकार बनाया है।

यह घुमावदार लग सकता है। आपको बस और अभ्यास करना है तब आप इसे समझ पाएंगे। (आप अंतर देखने के लिए फ़ंक्शन अनुवाद के अनुक्रम को बदलने और घुमाने का भी प्रयास कर सकते हैं।)

क्षैतिज आंदोलन और परिपत्र आंदोलन

निम्नलिखित मामलों में, हम समन्वय प्रणाली को बदलने के माध्यम से प्रेरक प्रभाव का एहसास करने जा रहे हैं। साथ ही, मैं आपसे पिछले अध्याय के उदाहरण का संदर्भ लेने के लिए कहना चाहूंगा। अधिकांश समय, आप पाएंगे कि एक निश्चित प्रकार के प्रभाव को महसूस करने के लिए, आप एक पूरी तरह से अलग विधि का उपयोग कर सकते हैं।

चरण 5: क्षैतिज गति

[cceN_cpp विषय = "सुबह"]

इंट एक्स, वाई; शून्य सेटअप () {आकार (300, 300); एक्स = 0; वाई = ऊंचाई/2; } शून्य ड्रा () {पृष्ठभूमि (234, 113, 107); नोस्ट्रोक (); अनुवाद (एक्स, वाई); अंडाकार (0, 0, 50, 50); एक्स++; } [/cceN_cpp]

वृत्त निर्देशांक नहीं बदला जाता है, लेकिन इसकी समन्वय प्रणाली बदल जाती है।

घुमाएँ आंदोलन

[सीसीईएन_सीपीपी थीम = "डॉन"] फ्लोट आर, आर, कोण; शून्य सेटअप () {आकार (300, 300); आर = 20; // सर्कल आयाम आर = १००; // आंदोलन ट्रैक का त्रिज्या} शून्य ड्रा () {पृष्ठभूमि (234, 113, 107); अनुवाद (चौड़ाई / 2, ऊंचाई / 2); // मूल बिंदु को स्क्रीन केंद्र पर ले जाएं। घुमाएँ (कोण); नोस्ट्रोक (); अंडाकार (0, आर, आर, आर); कोण += ०.०५; } [/cceN_cpp]

क्या यह त्रिकोणमितीय फलन से कहीं अधिक स्पष्ट और सरल नहीं है? आपके यहां एक प्रश्न हो सकता है। एक उदाहरण के रूप में घूर्णन कोड लें। जाहिर है, ऊपर संदर्भित ट्रांसफ़ॉर्म फ़ंक्शन सापेक्ष है और सुपरइम्पोजिशन की अनुमति देता है। यदि हम फंक्शन ड्रॉ में ट्रांसलेशन (चौड़ाई / 2, ऊंचाई / 2) लिखते हैं, तो इसका मतलब यह नहीं है कि हर बार फंक्शन ड्रा एक बार संचालित होता है, समन्वय प्रणाली एक दूरी तय करेगी मूल आधार से दाहिनी ओर नीचे की दिशा में? उचित रूप से यह हमेशा के लिए स्क्रीन के केंद्र में नहीं रहेगा।

आप इस तरह से समझ सकते हैं। एक बार फ़ंक्शन ड्रॉ में कोड ऊपर से नीचे तक एक ऑपरेशन पूरा कर लेता है, तो कोऑर्डिनेट सिस्टम दूसरे ऑपरेशन में प्रारंभिक स्थिति में वापस आ जाएगा। समन्वय प्रणाली का मूल बिंदु बाएँ शीर्ष कोने पर वापस लौटने के लिए डिफ़ॉल्ट होगा। इसलिए यदि हम समन्वय प्रणाली को लगातार बदलना चाहते हैं, तो फ़ंक्शन रोटेट के भीतर कोण पैरामीटर लगातार इसके मूल्य में वृद्धि करेंगे।

पहुँच समन्वय स्थिति

कभी-कभी, हम नहीं चाहते कि समन्वय प्रणाली की स्थिति का परिवर्तन पहले वाले पर आधारित हो। इस समय, हमें फ़ंक्शन pushMatrix और popMatrix का उपयोग करना होगा। दो कार्य आमतौर पर जोड़े में दिखाई देते हैं। फ़ंक्शन पुशमैट्रिक्स पॉपमैट्रिक्स से पहले है। उनका पूरी तरह से उपयोग नहीं किया जा सकता है, या यह गलत हो जाएगा।

उदाहरण:

[सीसीईएन_सीपीपी थीम = "डॉन"] पुशमैट्रिक्स (); // स्टोर समन्वय प्रणाली स्थिति अनुवाद (५०, ५०); अंडाकार (0, 0, 20, 20); पॉपमैट्रिक्स (); // समन्वय प्रणाली स्थिति रेक्ट पढ़ें (0, 0, 20, 20); [/cceN_cpp]

इस उदाहरण में, अनुवाद (50, 50) का उपयोग करने से पहले, हम समन्वय प्रणाली की वर्तमान स्थिति को संग्रहीत करने के लिए फ़ंक्शन pushMatrix. का उपयोग करते हैं। साथ ही, यह प्रारंभिक स्थिति है। एक सर्कल बनाने के बाद, पॉपमैट्रिक्स को लागू करें, यह इस स्थिति में वापस आ जाएगा। इस समय, फंक्शन रेक्ट को लागू करें, आप पाएंगे कि इसे फंक्शन ट्रांसलेशन के प्रभाव का सामना नहीं करना पड़ा है, इसके बजाय यह मूल बिंदु के बाएं शीर्ष कोने पर एक वर्ग बनाता है।

इसके अलावा, फ़ंक्शन पुशमैट्रिक्स और पॉपमैट्रिक्स नेस्टिंग की अनुमति देते हैं।

उदाहरण के लिए

पुशमैट्रिक्स ();

पुशमैट्रिक्स ();

पॉपमैट्रिक्स ();

पॉपमैट्रिक्स ();

इसके संबंध को सहज रूप से दिखाने के लिए, हम संक्षेपण प्रारूप का चयन करते हैं।

संयुक्त आंदोलन या आंदोलन में आंदोलन?

अब महत्वपूर्ण भाग की दूसरी लहर शुरू होती है। बस आगे बढ़ाने की कोशिश करो। पहले, हमने नाव और लोगों के रूपक का उपयोग किया है। क्या आपने कभी इस बारे में सोचा है कि अगर हम लोगों और नाव दोनों को हिला दें, तो समुद्र तट पर लोगों को कैसा महसूस होगा?

जैसे समन्वय प्रणाली के घूर्णन गति के साथ क्षैतिज गति को संयोजित करना। यहाँ बिंदु वास्तव में केवल एक दिशा में आगे बढ़ने का है।

[सीसीईएन_सीपीपी थीम = "डॉन"] इंट एक्स, वाई; फ्लोट कोण; शून्य सेटअप () {आकार (300, 300); पृष्ठभूमि (234, 113, 107); नोस्ट्रोक (); एक्स = 0; // जब x का प्रारंभिक मान 0 होता है, तो हम कोड के इस वाक्य की उपेक्षा कर सकते हैं। चर घोषित करते समय, डिफ़ॉल्ट मान 0 होता है। y = 0; // उपरोक्त के समान। कोण = 0; // उपरोक्त के समान। } शून्य ड्रा () {कोण + = ०.२५; वाई--; अनुवाद (चौड़ाई / 2, ऊंचाई / 2); पुशमैट्रिक्स (); घुमाएँ (कोण); अंडाकार (एक्स, वाई, 5, 5); पॉपमैट्रिक्स (); } [/cceN_cpp]

और सर्कुलर मूवमेंट और कोऑर्डिनेट सिस्टम स्केलिंग हैं।

[सीसीईएन_सीपीपी थीम = "डॉन"] फ्लोट एक्स, वाई, कोण; शून्य सेटअप () {आकार (300, 300); पृष्ठभूमि (234, 113, 107); नोस्ट्रोक (); } शून्य ड्रा () {कोण + = 0.01; एक्स = पाप (कोण) * १००; y = cos(कोण) * १००; अनुवाद (चौड़ाई / 2, ऊंचाई / 2); पुशमैट्रिक्स (); स्केल (1 + 0.1 * पाप (कोण * 10)); अंडाकार (एक्स, वाई, 5, 5); पॉपमैट्रिक्स (); } [/cceN_cpp]

इसके बहकावे में न आएं! वृत्त बिंदु वास्तव में वृत्ताकार गति कर रहा है। अगर हम इसकी तुलना वीडियो कैमरा से स्केलिंग से करें तो यह समझना मुश्किल नहीं है। एक वीडियो कैमरा लगातार आगे या पीछे चलता है, एक बिंदु को गोलाकार गति में शूट कर रहा है।

विस्मित होना? ये सरल बुनियादी कार्य हैं। लेकिन विभिन्न संयोजनों के साथ, हम कई अलग-अलग प्रभाव पैदा कर सकते हैं। अब तक, मेरा एक्सपोजर रुक जाता है ताकि आपके अन्वेषण के लिए कुछ जगह बच सके।

चरण 6: व्यापक उपयोग

यह इस अध्याय के लिए जल्द ही समाप्त हो रहा है। पिछले दो अध्यायों में, मैंने ग्राफिक गति की मूल विधि का परिचय दिया है। मेरा मानना है कि आपके शुरुआती विचारों की तुलना में आपको इसके लिए गहरी समझ हो सकती है। अंत में, आपके संदर्भ के लिए यहां कुछ पूर्ण उदाहरण दिया गया है।

[cceN_cpp विषय = "डॉन"] फ्लोट x1, y1, x2, y2, r, R; फ्लोट एंगल1, एंगल2; शून्य सेटअप () {आकार (300, 300); आर = 12; आर = १२०; कोण1 = 0; कोण2 = पीआई/4; } शून्य ड्रा () {पृष्ठभूमि (234, 113, 107); नोस्ट्रोक (); अनुवाद (चौड़ाई / 2, ऊंचाई / 2); कोण1 += 0.02; कोण2 += 0.06; एक्स 1 = आर * पाप (कोण 1); y1 = R* cos(angle1); x2 = R/2 *sin(angle2); y2 = R/2 *cos(angle2); अंडाकार (x1, y1, r/2, r/2); अंडाकार (एक्स 2, वाई 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); स्ट्रोक (255); स्ट्रोकवेट(3); लाइन (x1, y1, x2, y2); लाइन (-x1, -y1, -x2, -y2); लाइन (x1, -y1, x2, -y2); लाइन (-x1, y1, -x2, y2); } [/cceN_cpp]

इस उदाहरण में हमारे द्वारा पेश किए गए पिछले अध्याय से परे कोई ज्ञान नहीं है।

किस अंक के लिए मेल खाता है? कौन सी पंक्तियाँ मेल खाती हैं? मैं भी इसका पता नहीं लगा सकता। लेकिन मुझे याद है कि यह कोड के एक छोटे से हिस्से से निकला है।

यह इसके आंदोलन की प्रकृति है। बाकी रेखाएं सिर्फ दर्पण प्रभाव हैं।यदि आप इस मार्गदर्शन का पालन करते रहते हैं, तो आप एक अद्यतन संस्करण बना सकते हैं और अपने ग्राफिक में एक नियंत्रक जोड़ सकते हैं ताकि वास्तविक समय में आपकी ग्राफिक गति स्थिति को बदल सके।

प्रोग्रामिंग का दिलचस्प बिंदु यह है कि आप नियमों को डिजाइन या संयोजित कर सकते हैं। हालांकि, अंतिम कार्यक्रम क्या होगा यह सब आपकी क्षमता पर निर्भर करता है। आमतौर पर डिजाइनरों के पास शक्तिशाली ग्राफिक कल्पना होती है। आप अपने सिर में एक चित्र स्केच कर सकते हैं, और फिर इसे कोड में अनुवाद करने का प्रयास कर सकते हैं। इसके अलावा, आप कोड और विनियमों से ही शुरू कर सकते हैं, डिज़ाइन फ़ंक्शंस और वेरिएबल्स को इच्छानुसार। याद रखें कि प्रोसेसिंग आपका स्केच है और कोड आपका ब्रश है! बस अपने विचारों को स्वतंत्र रूप से स्प्रे करें!

चरण 7: END

अपने अध्याय के अंत में, आइए एक ऐसे प्रश्न की ओर मुड़ें जिसे हमने शुरू से ही लंबे समय तक संरक्षित रखा था। प्रोग्राम के साथ चित्र बनाने में इतनी मेहनत करने से क्या फायदा? इस अध्याय को सीखने के बाद, आप पाएंगे कि खेलने के बहुत सारे तरीके हैं जो आपके अन्वेषण की प्रतीक्षा कर रहे हैं।

[सीसीईएन_सीपीपी थीम = "डॉन"] फ्लोट ब्रोएक्स, ईयरडी, आईडी, फेसडी; शून्य सेटअप () {आकार (500, 500); } शून्य ड्रा () {पृष्ठभूमि (२००, ०, ०); ब्रोएक्स = १५० + पाप (फ्रेमकाउंट / ३०.०) *२०; ईयरडी = १८० + पाप (फ्रेमकाउंट / १०.०) *२०; आईडी = ६० + पाप (फ्रेमकाउंट / ३०.०) * ५०; फेसडी = ३००; स्ट्रोकवेट (8); दीर्घवृत्त(१७५, २२०, ईयरडी, ईयरडी); दीर्घवृत्त(चौड़ाई - 175, 220, ईयरडी, ईयरडी); रेक्ट (100, 100, फेसडी, फेसडी); लाइन (ब्रोएक्स, 160, 220, 240); लाइन (चौड़ाई-ब्रोएक्स, १६०, चौड़ाई-२२०, २४०); भरें (यादृच्छिक (255), यादृच्छिक (255), यादृच्छिक (255)); दीर्घवृत्त(१७५, २२०, आईडी, आईडी); अंडाकार (चौड़ाई-175, 220, आईडी, आईडी); भरें (255); बिंदु (चौड़ाई / 2, ऊंचाई / 2); त्रिकोण(१७० - कॉस(फ्रेमकाउंट / १०.०)* २०, ३०० - पाप(फ्रेमकाउंट / १०.०) *२०, चौड़ाई - (१७० + कॉस(फ्रेमकाउंट / १०.०) *२०), ३०० + पाप(फ्रेमकाउंट / १०.०) * २०, 250, 350); } [/cceN_cpp]

क्या यह गतिशील ग्राफिक के लिए जादू नहीं है? यहां मैं आपको बहुत अधिक मामले नहीं दिखाता हूं। आप मुझसे कहीं बेहतर प्रभाव डिजाइन करने में सक्षम हो सकते हैं। कार्यक्रम के साथ ड्राइंग का लाभ मौजूद है आप हर पिक्सेल के साथ खेल सकते हैं। चूंकि आपका ग्राफ़िक बिटमैप नहीं है, इसलिए आपके ग्राफ़िक का प्रत्येक मुख्य बिंदु नियंत्रित किया जा सकता है। यह कुछ प्रभावों को महसूस कर सकता है जो अन्य सॉफ़्टवेयर महसूस नहीं कर सकते हैं।

यदि आपके पास एक दिल है जो सब कुछ तोड़कर फिर से जोड़ना चाहता है, तो अध्ययन कार्यक्रम आपको इस विचार को पूरा करने में बहुत मदद करेगा।

यह लेख डिजाइनर वेन्जी से आया है।

चरण 8: सापेक्ष रीडिंग:

डिजाइनर के लिए दिलचस्प प्रोग्रामिंग मार्गदर्शन - प्रारंभिक स्पर्श प्रसंस्करण

डिजाइनर के लिए दिलचस्प प्रोग्रामिंग गाइडेंस--अपना पहला प्रोसेसिंग प्रोग्राम बनाएं

डिज़ाइनर के लिए दिलचस्प प्रोग्रामिंग गाइडेंस-अपना चित्र चलाना (भाग एक)

यदि आपके कोई प्रश्न हैं, तो आप [email protected] पर एक ईमेल भेज सकते हैं।

यह लेख यहां से है: