সুচিপত্র:

ডিজাইনারের জন্য আকর্ষণীয় প্রোগ্রামিং নির্দেশিকা-আপনার ছবি চলমান করুন (দ্বিতীয় অংশ): 8 টি ধাপ
ডিজাইনারের জন্য আকর্ষণীয় প্রোগ্রামিং নির্দেশিকা-আপনার ছবি চলমান করুন (দ্বিতীয় অংশ): 8 টি ধাপ

ভিডিও: ডিজাইনারের জন্য আকর্ষণীয় প্রোগ্রামিং নির্দেশিকা-আপনার ছবি চলমান করুন (দ্বিতীয় অংশ): 8 টি ধাপ

ভিডিও: ডিজাইনারের জন্য আকর্ষণীয় প্রোগ্রামিং নির্দেশিকা-আপনার ছবি চলমান করুন (দ্বিতীয় অংশ): 8 টি ধাপ
ভিডিও: CS50 2013 - Week 9, continued 2024, জুন
Anonim
ডিজাইনারের জন্য আকর্ষণীয় প্রোগ্রামিং নির্দেশিকা-আপনার ছবি চলমান করুন (দ্বিতীয় অংশ)
ডিজাইনারের জন্য আকর্ষণীয় প্রোগ্রামিং নির্দেশিকা-আপনার ছবি চলমান করুন (দ্বিতীয় অংশ)

গণিত, আপনার অধিকাংশের কাছেই অকেজো মনে হয়। আমাদের দৈনন্দিন জীবনে সবচেয়ে বেশি ব্যবহৃত হয় শুধু যোগ, বিয়োগ, গুণ এবং ভাগ। যাইহোক, এটি সম্পূর্ণ ভিন্ন যদি আপনি প্রোগ্রাম দিয়ে তৈরি করতে পারেন। আপনি যত বেশি জানবেন, ততই চমৎকার ফলাফল পাবেন।

ধাপ 1: আন্দোলন এবং ফাংশন

আপনার রুচি উদ্দীপিত করার জন্য আমাকে বেশ কয়েকটি অজানা ছবি দেখাতে দিন।

এটা কী? এখন শুধু এই প্রশ্নটি প্রথমে রাখুন এবং পরবর্তীতে আপনি জানতে পারবেন এবং ব্যবহার করবেন।

শেষ অধ্যায়ে আমরা ফাংশন সেটআপ এবং ফাংশন ড্র শিখেছি, যা স্ট্যাটিক গ্রাফিক্সকে গতিশীল করে তুলতে পারে। যাইহোক, এই আন্দোলনের বিন্যাসটি খুব সহজ। আমরা আমাদের নিজস্ব গ্রাফিক্সকে তাদের নিজস্ব চরিত্র দিয়ে চালানোর জন্য আমরা আগে আয়ত্ত করা ফাংশন জ্ঞান ব্যবহার করতে যাচ্ছি।

উপরের ছবিগুলি থেকে আপনি কতগুলি ফাংশন চিনতে পারেন? আন্দোলনের সাথে তাদের সম্পর্ক কি? এখন এর থেকে একটি চতুর্ভুজ ফাংশন নেওয়া যাক, এলোমেলোভাবে কিছু পরামিতি যোগ করুন এবং দেখুন কী হবে। উদাহরণস্বরূপ, y = x² / 100।

এই ফাংশন ইমেজ মত দেখায়। নিচের কোডটি কপি করুন।

[cceN_cpp থিম = "ভোর"] ফ্লোট x, y; অকার্যকর সেটআপ () {আকার (300, 300); পটভূমি (0); x = 0; } অকার্যকর ড্র () {স্ট্রোক (255); স্ট্রোকওয়েট (2); y = pow (x, 2) / 100.0; // ফাংশন পাউ পদবি সংখ্যার নবম শক্তিতে ফিরে আসবে। (x, 2) x এর বর্গকে প্রতিনিধিত্ব করে। প্রথম প্যারামিটার হল বেস নম্বর এবং দ্বিতীয়টি হল সূচক। বিন্দু (x, y); x ++; } [/cceN_cpp]

চলমান প্রভাব

পরবর্তী, ফাংশন sin নির্বাচন করুন। সূত্র: y = 150 + sin (x)।

নিম্নলিখিত কোডটি অনুলিপি করুন।

[cceN_cpp থিম = "ভোর"] ভাসমান x, y; অকার্যকর সেটআপ () {আকার (300, 300); পটভূমি (0); x = 0; } অকার্যকর ড্র () {y = height/2 + sin (radians (x)) * 150; // ফাংশন রেডিয়ান x কে কোণে রূপান্তর করে। x ++; স্ট্রোক (255); স্ট্রোকওয়েট (2); বিন্দু (x, y); } [/cceN_cpp]

চলমান প্রভাব

কোডটি পরিচালনার পর আমরা এই গ্রাফিকটি পাই। এবং এটি তাদের আন্দোলনের ট্র্যাক। আগেরটির তুলনায়, ফলাফলটি সুস্পষ্ট। ফাংশন ইমেজ আসলে মুভমেন্ট ট্র্যাকের সাথে সামঞ্জস্যপূর্ণ! এটি যথেষ্ট সহজ। আপনাকে শুধু x, y এর মান প্রতিস্থাপিত করতে হবে। আমরা যে আগের ট্র্যাকটি আঁকলাম তা ফাংশন y = x² / 100 এর গ্রাফিকের সমতুল্য। কিন্তু প্রোগ্রামে, y অক্ষের দিক বিপরীত। সুতরাং, মূল গ্রাফিকের তুলনায়, ট্র্যাকটি উল্টো হবে। এখন, আমি মনে করি আপনার নিশ্চয়ই এমন অনুভূতি আছে যে আপনার মাথার মধ্যে দীর্ঘদিন ধরে ভুতুড়ে কিছু কঠিন প্রশ্ন অবিলম্বে সমাধান হয়ে গেছে। এটা আশ্চর্যজনক যে আমরা আগে শিখেছি এই চমত্কার ফাংশন গ্রাফিক আন্দোলন নিয়ন্ত্রণ করতে ব্যবহার করা যেতে পারে!

ধাপ 2: ফাংশন লিখতে

আমি নীচে প্রায়শই ব্যবহৃত ফাংশন তালিকাভুক্ত করেছি। আশা করি এইগুলি আমাদের ফাংশনগুলিকে কোডে অনুবাদ করতে সাহায্য করবে যা কম্পিউটার দ্বারা স্বীকৃত হতে পারে।

অতএব, প্রোগ্রামে নীচের সূত্রটি এভাবে লেখা হবে:

y = x² → y = pow (x, 2) অথবা y = sq (x)

y = x³ → y = pow (x, 3)

y = xⁿ → y = pow (x, n)

y = 4ⁿ → y = pow (4, n)

y = logₑ² → y = log (2)

y = e² → y = exp (2)

y = √5 → y = sqrt (5)

আপনি এলোমেলোভাবে একটি ফাংশন প্রোগ্রামে লিখতে পারেন এবং দেখতে পারেন এর মুভমেন্ট ট্র্যাক কেমন হবে। মান ক্ষেত্র এবং সংজ্ঞা ডোমেনের পরিসর বিবেচনা করতে ভুলবেন না, অথবা আপনার গ্রাফিক আপনার পর্দার বাইরে চলে যাবে।

ত্রিকোণমিতিক ফাংশন

এখন, ত্রিকোণমিতিক ফাংশনগুলির কিছু লেখা জানতে আরও এগিয়ে যাওয়া যাক।

আমাদের মনোযোগ দিতে হবে যে প্রোগ্রামে কোণ সম্পর্কিত ফাংশন প্যারামিটারের ইনপুট রেডিয়ান গ্রহণ করে। এভাবে পাপ 90 sin কে পাপে লেখা হবে (PI -2)। আপনি যদি এই পদ্ধতির সাথে পরিচিত না হন, তাহলে আপনি কোণকে রেডিয়ানে রূপান্তর করার জন্য ফাংশন র্যান্ডিয়ান ব্যবহার করতে পারেন, এবং তারপর sin (radians (90)) লিখতে পারেন।

ফাংশন ডিগ্রির ব্যবহার তুলনামূলকভাবে বিপরীত। এটি রেডিয়ানকে কোণে রূপান্তর করতে পারে। সরাসরি সম্পাদনা এলাকায় ইনপুট মুদ্রণ (ডিগ্রী (PI/2)), এবং দেখুন আপনি কি পাবেন।

ধাপ 3: ত্রিকোণমিতিক ফাংশন সহ গ্রাফিক মুভমেন্ট নিয়ন্ত্রণ করুন

গ্রাফিক মুভমেন্টের প্রকৃত প্রভাব দেখতে আপনার জন্য এখানে একটি কেস।

[cceN_cpp থিম = "ভোর"] ভাসমান x, y; অকার্যকর সেটআপ () {আকার (700, 300); } অকার্যকর ড্র () {পটভূমি (234, 113, 107); y = পাপ (রেডিয়ান (x)) * 150 + 150; x ++; noStroke (); উপবৃত্ত (x, y, 50, 50); } [/cceN_cpp]

ফাংশন পাপ একটি পর্যায়ক্রমিক ফাংশন। এর সর্বনিম্ন মান হল -1, এবং সর্বোচ্চ মান হল 1. স্ক্রিনের উচ্চতা.০০। 300 পর্যন্ত।

স্পিনিং সার্কেল

ঠিক আছে, আমরা অবশেষে এই অধ্যায়ে সবচেয়ে আমদানি অংশে এসেছি। কিভাবে একটি প্রোগ্রামে একটি বৃত্ত পথ আঁকা? এটি প্রদর্শন করার জন্য ফাংশন কিভাবে ব্যবহার করবেন? এই প্রবন্ধের শুরুতে আমরা যে দুটি ছবি দেখেছি সেগুলো আবার দেখাই।

প্রকৃতপক্ষে তারা পরিধি সমন্বয় এবং ত্রিকোণমিতিক ফাংশনের মধ্যে সম্পর্ক দৃশ্যত প্রকাশ করেছে। উপরের ছবিগুলিতে আন্দোলন ক্রমাগত ক্রমবর্ধমান স্বাধীন পরিবর্তনশীল দ্বারা চালিত হয় θ। বাম হল ফাংশন sin এবং cos এর ইমেজ, এবং ডান মানে একটি বিন্দু যা ম্যাপ করার পরে বৃত্তাকার আন্দোলন করছে। এটা কি খুব স্মার্ট নয়? এটা আর রহস্যজনক নয়। আপনি এটি উপলব্ধি করতে কোড ব্যবহার করতে পারেন।

একটি সহজ উদাহরণ:

[cceN_cpp থিম = "ভোর"] ফ্লোট x, y, r, R, কোণ; অকার্যকর সেটআপ () {আকার (300, 300); r = 20; // বৃত্ত ব্যাস R = 100; // চলাচলের পথের ব্যাসার্ধ x = 0; কোণ = 0; y = উচ্চতা/2; } অকার্যকর ড্র () {পটভূমি (234, 113, 107); অনুবাদ করুন (প্রস্থ/2, উচ্চতা/2); // মূল বিন্দুটি পর্দা কেন্দ্রে সরান। noStroke (); x = R * cos (কোণ); y = R * sin (কোণ); উপবৃত্ত (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 * sin (কোণ);

কোণ += 0.05;

আপনারা কেউ কেউ ভাবতে পারেন কেন এটি বৃত্ত চলাচলের পথ প্রদর্শন করতে পারে। ত্রিকোণমিতিক ফাংশনের সংজ্ঞা অনুসারে, আমরা সহজেই সেই ফাংশনটি পাপের বিপরীত দিকের অনুপাতকে অনুমান করতে পারি; ফাংশন cos হল হাইপোটেনিউজের সংলগ্ন অনুপাত। বৃত্ত বিন্দু যেখানেই থাকুক না কেন, r (ব্যাসার্ধ) অপরিবর্তিত থাকবে। অতএব আমরা x স্থানাঙ্ক এবং y স্থানাঙ্ক প্রকাশ করতে পারি।

এটি একটি গাণিতিক নির্দেশনা নয়, এখানে আমি আপনার কাছে ত্রিকোণমিতিক ফাংশন সম্পর্কে আরও জ্ঞান প্রদর্শন বন্ধ করতে যাচ্ছি। আপনি যদি এটি জানতে চান বা আপনি এটি ভুলে যান, তাহলে আপনি নিজে আবার এটি পর্যালোচনা করার চেষ্টা করতে পারেন।

অবশ্যই, যদি আপনি এটি পুরোপুরি বুঝতে না পারেন তবে এটি ঠিক আছে। একটি বৃত্ত আঁকতে এটি কীভাবে ব্যবহার করতে হয় তা আপনাকে জানতে হবে। এটিও এক ধরনের "প্রোগ্রামিং আইডিয়া"। পরবর্তীতে, আমরা প্রায়ই অন্যদের দ্বারা তৈরি কিছু বিদ্যমান মডিউল আহ্বান করব যাতে একটি নির্দিষ্ট ধরনের ফাংশন উপলব্ধি করা যায়। শুধু বিস্তারিতভাবে জানার জন্য নিজেকে ধাক্কা দিবেন না।

যাইহোক, ফাংশন sin এবং cos সাধারণ। আপনি যদি উচ্চতর স্তরের সৃষ্টি করতে চান তবে আপনি এটিকে পুঙ্খানুপুঙ্খভাবে জানার চেষ্টা করবেন। যদি এই প্রশ্নটি নিজেই আমাদের গাণিতিক জ্ঞান শেখার জন্য চালিত করতে পারে, তাহলে আরো অনেক আকর্ষণীয় বিষয় আপনার জন্য অপেক্ষা করছে।

এগুলি ত্রিকোণমিতিক ফাংশনের সাথে ঘনিষ্ঠভাবে সম্পর্কিত ছবি।

ধাপ 4: আন্দোলন সমন্বয় সিস্টেম

পূর্ববর্তী প্রভাবগুলি গ্রাফিক সমন্বয় পরিবর্তন সম্পর্কে। সমন্বয় ব্যবস্থা নিজেই স্থির। প্রকৃতপক্ষে আমরা গতিশীল প্রভাব উপলব্ধি করতে সমন্বয় পদক্ষেপ করতে পারি। এটি ঠিক সমুদ্র সৈকতের লোকেরা নৌকায় থাকা অন্যান্য লোকদের দেখে। নৌকায় থাকা মানুষের জন্য, নৌকা অচল। কিন্তু যদি নৌকাটি নিজেই চলতে থাকে, তাহলে নৌকার লোকজন তার সাথে চলাচল করে। আগের ঘটনাগুলো সবই "নৌকায় দৌড়ানো মানুষ" নিয়ে। আসলে, নৌকা নড়ে না। সমন্বয় পদ্ধতি পরিবর্তনের জন্য কিছু সাধারণ কাজ নিচে দেওয়া হল।

ফাংশন অনুবাদ

ফাংশন ট্রান্সলেট, আমরা পূর্বে কথা বলেছি, এটি গ্রাফিকের কোঅর্ডিনেট সিস্টেমকে অনুভূমিকভাবে সরানোর জন্য ব্যবহৃত হয়।

আহ্বান বিন্যাস:

অনুবাদ করুন (a, b)

প্রথম প্যারামিটারটি একটি পিক্সেলের জন্য x অক্ষের ইতিবাচক দিকের দিকে এগিয়ে যাওয়ার জন্য দাঁড়িয়েছে। দ্বিতীয় প্যারামিটারটি হল b পিক্সেলের জন্য y অক্ষের ইতিবাচক দিকের দিকে অগ্রসর হওয়া।

দুটি কোড তুলনা করুন এবং কোন পার্থক্য খুঁজে বের করার চেষ্টা করুন। (কোডটি সহজ করার জন্য, আমরা ফাংশনের আকার মুছে ফেলতে পারি, স্ক্রিনের প্রস্থ এবং উচ্চতা 100 হতে হবে।)

আমরা ব্যবহার করার আগে:

উপবৃত্ত (0, 0, 20, 20);

আমরা ব্যবহার করার পর:

অনুবাদ করুন (50, 50);

উপবৃত্ত (0, 0, 20, 20);

ফাংশন ঘোরানো

আহ্বান বিন্যাস:

ঘোরান (ক)

এটি সমন্বয় পদ্ধতি ঘোরানোর জন্য ব্যবহৃত হয়। যখন প্যারামিটার পজিটিভ হয়, তখন এটি মূল বিন্দুকে কেন্দ্র বিন্দু হিসেবে বেছে নেবে এবং ঘড়ির কাঁটার দিকে ঘুরবে। রেডিয়ান ব্যবহার করার জন্য ত্রিকোণমিতিক ফাংশনের সাথে প্যারামিটার ইনপুট একই।

ব্যবহারের পূর্বে:

উপবৃত্ত (50, 50, 20, 20);

ব্যবহারের পর:

ঘোরান (রেডিয়ান (30 %));

উপবৃত্ত (50, 50, 20, 20);

প্রোগ্রামের প্রভাব হল বৃত্তটি 30 ডিগ্রীর জন্য ঘড়ির কাঁটার দিকের স্থানাঙ্ক কেন্দ্র বিন্দুর চারপাশে ঘুরানো।

ফাংশন স্কেল

আহ্বান বিন্যাস:

স্কেল (ক)

এই ফাংশন কোঅর্ডিনেট সিস্টেম জুম আউট করতে পারে। মান স্কেল করার জন্য। যখন প্যারামিটার 1 এর বাইরে, তখন জুম ইন করুন; যদি এটি 1 এর চেয়ে কম হয়, তাহলে জুম আউট করুন।

ব্যবহারের পূর্বে:

উপবৃত্ত (0, 0, 20, 20);

ব্যবহারের পর:

স্কেল (4);

উপবৃত্ত (0, 0, 20, 20);

উপরের ছবির বৃত্তটি মূল আকারের চারগুণে বিস্তৃত। এছাড়াও, আপনি এক্স অ্যাক্সেল এবং ওয়াই এক্সেলের দিকগুলি আলাদাভাবে জুম আউট করতে দুটি পরামিতি ব্যবহার করতে পারেন।

স্কেল (4, 2);

উপবৃত্ত (0, 0, 20, 20);

রূপান্তর ফাংশনের সুপারপজিশন

এখানে, সুপারপজিশন হল বর্তমান সমন্বয় ব্যবস্থার সাপেক্ষে পরিবর্তন। অন্য কথায়, প্রভাব superimposed হতে পারে।

অনুবাদ করুন (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); // ঘোরানো কোণ পরিবর্তন দেখতে, আমরা একটি ডিম্বাকৃতি তৈরি করেছি।

মনে হতে পারে মোচড় দিচ্ছে। আপনাকে শুধু আরো অনুশীলন করতে হবে তাহলে আপনি তা বুঝতে পারবেন। (আপনি ফাংশন ট্রান্সলেট এর ক্রম পরিবর্তন করার চেষ্টা করতে পারেন এবং পার্থক্য দেখতে ঘোরান।)

অনুভূমিক আন্দোলন এবং বৃত্তাকার আন্দোলন

নিম্নলিখিত ক্ষেত্রে, আমরা সমন্বয় ব্যবস্থা পরিবর্তনের মাধ্যমে গতিশীল প্রভাব উপলব্ধি করতে যাচ্ছি। একই সময়ে, আমি আপনাকে আগের অধ্যায়ের উদাহরণটি জিজ্ঞাসা করতে চাই। বেশিরভাগ সময়, আপনি একটি নির্দিষ্ট ধরনের প্রভাব উপলব্ধি করতে পাবেন, আপনি সম্পূর্ণ ভিন্ন পদ্ধতি ব্যবহার করতে পারেন।

ধাপ 5: অনুভূমিক আন্দোলন

[cceN_cpp থিম = "ভোর"]

int x, y; অকার্যকর সেটআপ () {আকার (300, 300); x = 0; y = উচ্চতা/2; } অকার্যকর ড্র () {পটভূমি (234, 113, 107); noStroke (); অনুবাদ (x, y); উপবৃত্ত (0, 0, 50, 50); x ++; } [/cceN_cpp]

বৃত্ত সমন্বয় পরিবর্তন করা হয় না কিন্তু তার সমন্বয় পদ্ধতি পরিবর্তন করা হয়।

আন্দোলন ঘোরান

[cceN_cpp থিম = "ভোর"] ভাসমান r, R, কোণ; অকার্যকর সেটআপ () {আকার (300, 300); r = 20; // বৃত্ত মাত্রা R = 100; // মুভমেন্ট ট্র্যাকের ব্যাসার্ধ} অকার্যকর ড্র () {পটভূমি (234, 113, 107); অনুবাদ করুন (প্রস্থ/2, উচ্চতা/2); // মূল বিন্দুকে পর্দার কেন্দ্রে সরান। ঘোরান (কোণ); noStroke (); উপবৃত্ত (0, আর, আর, আর); কোণ += 0.05; } [/cceN_cpp]

এটা কি ত্রিকোণমিতিক ফাংশনের চেয়ে অনেক বেশি স্পষ্ট এবং সহজ নয়? আপনার এখানে একটি প্রশ্ন থাকতে পারে। একটি উদাহরণ হিসাবে ঘূর্ণন কোড নিন। স্পষ্টতই, উপরে উল্লিখিত ট্রান্সফর্ম ফাংশনটি আপেক্ষিক এবং সুপারিপোজিশনের অনুমতি দেয়। মূল বেস থেকে ডান নিচের দিকে? যুক্তিসঙ্গতভাবে এটি পর্দার কেন্দ্রে চিরকাল থাকবে না।

আপনি এই ভাবে বুঝতে পারেন। একবার ফাংশন ড্র -এ কোডটি নীচে থেকে একটি অপারেশন সম্পন্ন করলে, সমন্বয় ব্যবস্থা দ্বিতীয় অপারেশনে প্রাথমিক অবস্থায় ফিরে আসবে। সমন্বয় ব্যবস্থার মূল বিন্দুটি বাম উপরের কোণে ফিরে আসার জন্য ডিফল্ট হবে। সুতরাং আমরা যদি ক্রমাগত সমন্বয় পদ্ধতি পরিবর্তন করতে চাই, ফাংশন ঘোরানোর মধ্যে কোণ পরামিতি ক্রমাগত তার মান বৃদ্ধি করবে।

অ্যাক্সেস কোঅর্ডিনেট স্ট্যাটাস

কখনও কখনও, আমরা চাই না যে সমন্বয় ব্যবস্থার স্থিতির পরিবর্তন আগেরটির উপর ভিত্তি করে। এই সময়ে, আমাদের ফাংশন pushMatrix এবং popMatrix ব্যবহার করতে হবে। দুটি ফাংশন সাধারণত দম্পতির মধ্যে উপস্থিত হয়। ফাংশন pushMatrix পপম্যাট্রিক্সের আগে। সেগুলো এককভাবে ব্যবহার করা যাবে না, নয়তো ভুল হয়ে যাবে।

উদাহরণ:

[cceN_cpp থিম = "ভোর"] pushMatrix (); // স্টোর কোঅর্ডিনেট সিস্টেম স্ট্যাটাস ট্রান্সলেট (50, 50); উপবৃত্ত (0, 0, 20, 20); popMatrix (); // পড়ুন সমন্বয় সিস্টেম অবস্থা রেকট (0, 0, 20, 20); [/cceN_cpp]

এই উদাহরণে, অনুবাদ ব্যবহার করার আগে (50, 50), আমরা ফাংশন pushMatrix. ব্যবহার করি সমন্বয় ব্যবস্থার বর্তমান অবস্থা সংরক্ষণ করতে। এটি, একই সময়ে, প্রাথমিক অবস্থা। আমরা একটি বৃত্ত আঁকার পর, তারপর popMatrix বাস্তবায়ন করি, এটি এই অবস্থানে ফিরে আসবে। এই সময়ে, ফাংশন রেকট প্রয়োগ করুন, আপনি দেখতে পাবেন যে এটি ফাংশন ট্রান্সলেট থেকে প্রভাব ভোগ করে নি বরং এটি মূল বিন্দুর বাম উপরের কোণে একটি বর্গক্ষেত্র আঁকবে।

এছাড়াও, pushMatrix এবং popMatrix ফাংশন বাসা বাঁধার অনুমতি দেয়।

উদাহরণ স্বরূপ

pushMatrix ();

pushMatrix ();

popMatrix ();

popMatrix ();

তার সম্পর্ককে স্বজ্ঞাতভাবে দেখানোর জন্য, আমরা কনডেন্স ফরম্যাট বেছে নিই।

সম্মিলিত আন্দোলন বা আন্দোলনে আন্দোলন?

এখন গুরুত্বপূর্ণ অংশের দ্বিতীয় তরঙ্গ শুরু হয়। শুধু সামনে এগিয়ে যাওয়ার চেষ্টা করুন। পূর্বে, আমরা নৌকা এবং মানুষের একটি রূপক ব্যবহার করেছি। আপনি কি কখনো ভেবে দেখেছেন যদি আমরা মানুষ এবং নৌকা দুটোকেই চলাচল করাই, তাহলে সৈকতে থাকা মানুষদের কেমন অনুভূতি হবে?

সমন্বয় ব্যবস্থার ঘূর্ণনশীল আন্দোলনের সাথে অনুভূমিক আন্দোলনকে একত্রিত করুন। এখানে বিন্দু আসলে শুধুমাত্র একটি দিকে সরানো হয়।

[cceN_cpp থিম = "ভোর"] int x, y; ভাসমান কোণ; অকার্যকর সেটআপ () {আকার (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 থিম = "ভোর"] ভাসমান x, y, কোণ; অকার্যকর সেটআপ () {আকার (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]

এর দ্বারা প্রতারিত হবেন না! বৃত্ত বিন্দু আসলে বৃত্তাকার আন্দোলন করছে। এটিকে ভিডিও ক্যামেরার সাথে স্কেলিংয়ের সাথে তুলনা করলে বুঝতে অসুবিধা হয় না। একটি ভিডিও ক্যামেরা ক্রমাগত সামনে বা পিছনে সরানো বৃত্তাকার আন্দোলনের একটি বিন্দু শুটিং করছে।

অবাক? এই সহজ মৌলিক ফাংশন। কিন্তু বিভিন্ন সংমিশ্রণের সাথে, আমরা এতগুলি বিভিন্ন প্রভাব তৈরি করতে পারি। এখন পর্যন্ত, আমার এক্সপোজার বন্ধ হয়ে যায় যাতে আপনার অন্বেষণের জন্য কিছু জায়গা থাকে।

ধাপ 6: ব্যাপক ব্যবহার

এই অধ্যায়ের জন্য এটি শীঘ্রই শেষ হচ্ছে। শেষ দুটি অধ্যায়, আমি গ্রাফিক মুভমেন্টের প্রাথমিক পদ্ধতি চালু করেছি। আমি বিশ্বাস করি আপনার প্রাথমিক ধারণাগুলির তুলনায় আপনি এর জন্য আরও গভীর বোঝাপড়া করতে পারেন। সর্বশেষ, আপনার রেফারেন্সের জন্য এখানে কিছু সম্পূর্ণ উদাহরণ।

[cceN_cpp থিম = "ভোর"] ফ্লোট x1, y1, x2, y2, r, R; ভাসা কোণ 1, কোণ 2; অকার্যকর সেটআপ () {আকার (300, 300); r = 12; আর = 120; কোণ 1 = 0; কোণ 2 = PI/4; } অকার্যকর ড্র () {পটভূমি (234, 113, 107); noStroke (); অনুবাদ করুন (প্রস্থ / 2, উচ্চতা / 2); কোণ 1 += 0.02; কোণ 2 += 0.06; x1 = R *sin (angle1); y1 = R* cos (angle1); x2 = R/2 *sin (angle2); 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]

এই উদাহরণ আমাদের পূর্ববর্তী প্রবর্তিত অধ্যায়ের বাইরে কোন জ্ঞান ধারণ করে না।

কোন পয়েন্টের জন্য ম্যাচ? কোন লাইন মিলছে? আমিও এটা বের করতে পারছি না। কিন্তু আমার মনে আছে এটি কোডের একটি ছোট অংশ থেকে এসেছে।

এটি এর আন্দোলনের প্রকৃতি। বাকি লাইনগুলো শুধু মিরর এফেক্ট।আপনি যদি এই নির্দেশনা অনুসরণ করে যান, আপনি একটি আপডেট করা সংস্করণ তৈরি করতে পারেন এবং আপনার গ্রাফিকের একটি নিয়ামক যোগ করতে পারেন যাতে রিয়েল টাইমে আপনার গ্রাফিক মুভমেন্ট স্ট্যাটাস পরিবর্তন করা যায়।

প্রোগ্রামিংয়ের আকর্ষণীয় বিষয় হল আপনি প্রবিধানগুলি ডিজাইন বা একত্রিত করতে পারেন। যাইহোক, চূড়ান্ত প্রোগ্রামটি কী হবে তা সবই আপনার যোগ্যতার উপর নির্ভর করে। সাধারণত ডিজাইনারদের শক্তিশালী গ্রাফিক কল্পনা থাকে। আপনি আপনার মাথায় একটি ছবি স্কেচ করতে পারেন, এবং তারপর এটি কোডে অনুবাদ করার চেষ্টা করুন। এছাড়াও, আপনি নিজেই কোড এবং প্রবিধান, ডিজাইন ফাংশন এবং ইচ্ছামতো ভেরিয়েবল থেকে শুরু করতে পারেন। মনে রাখবেন প্রসেসিং হল আপনার স্কেচ এবং কোড হল আপনার ব্রাশ! শুধু স্বাধীনভাবে আপনার ধারণা স্প্রে!

ধাপ 7: শেষ

আমাদের অধ্যায়ে সর্বশেষ, আসুন আমরা একটি প্রশ্নে ফিরে যাই যা আমরা শুরু থেকে দীর্ঘ সময় ধরে সংরক্ষণ করেছি। প্রোগ্রাম দিয়ে ছবি বানানোর জন্য এত পরিশ্রম করার খরচ কি? আপনি এই অধ্যায়টি শেখার পরে, আপনি দেখতে পাবেন যে আপনার খেলার জন্য অনেকগুলি খেলার পদ্ধতি অপেক্ষা করছে।

[cceN_cpp থিম = "ভোর"] ভাসমান ব্রাউএক্স, ইয়ারডি, আইডি, ফেসডি; অকার্যকর সেটআপ () {আকার (500, 500); } অকার্যকর ড্র () {পটভূমি (200, 0, 0); browX = 150 + sin (frameCount / 30.0) *20; earD = 180 + sin (frameCount / 10.0) *20; eyeD = 60 + sin (frameCount/30.0) *50; faceD = 300; স্ট্রোকওয়েট (8); ellipse (175, 220, earD, earD); ellipse (প্রস্থ - 175, 220, earD, earD); রেকট (100, 100, faceD, faceD); লাইন (browX, 160, 220, 240); লাইন (প্রস্থ- browX, 160, প্রস্থ -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]

এটা কি গতিশীল গ্রাফিকের জন্য জাদু নয়? এখানে আমি আপনাকে খুব বেশি কেস দেখাই না। আপনি আমার চেয়ে অনেক ভাল প্রভাব ডিজাইন করতে সক্ষম হতে পারেন। প্রোগ্রামের সাথে অঙ্কনের সুবিধা বিদ্যমান আপনি প্রতিটি পিক্সেল দিয়ে খেলতে পারেন। যেহেতু আপনার গ্রাফিক বিটম্যাপ নয়, তাই আপনার গ্রাফিকের প্রতিটি মূল বিষয় নিয়ন্ত্রণযোগ্য। এটি এমন কিছু প্রভাব উপলব্ধি করতে পারে যা অন্যান্য সফটওয়্যার অনুধাবন করতে পারে না।

আপনার যদি এমন হৃদয় থাকে যা সবকিছু ভেঙে আবার একত্রিত করতে চায়, তাহলে স্টাডি প্রোগ্রাম আপনাকে এই ধারণাটি পূরণ করতে অনেক সাহায্য করবে।

এই নিবন্ধটি ডিজাইনার ওয়েঞ্জির কাছ থেকে এসেছে।

ধাপ 8: আপেক্ষিক রিডিং:

ডিজাইনারের জন্য আকর্ষণীয় প্রোগ্রামিং গাইডেন্স-প্রক্রিয়াকরণ প্রাথমিক স্পর্শ

ডিজাইনারের জন্য আকর্ষণীয় প্রোগ্রামিং গাইডেন্স-আপনার প্রথম প্রসেসিং প্রোগ্রাম তৈরি করুন

ডিজাইনারের জন্য আকর্ষণীয় প্রোগ্রামিং নির্দেশিকা – আপনার ছবি চলমান করুন (প্রথম অংশ)

যদি আপনার কোন প্রশ্ন থাকে, আপনি [email protected] এ একটি ইমেল পাঠাতে পারেন।

এই নিবন্ধটি থেকে:

প্রস্তাবিত: