প্রোগ্রামিং এ পদার্থবিজ্ঞান । প্রাস (নিক্ষিপ্ত বস্তু) এবং এংরি বার্ডস (প্রাসের উদাহরণ) গেমের ক্রিয়াকৌশল । (গিগা-আর্টিকেল)

ভূমিকা

“সারাদিন খালি কম্পিউটারে ঠুকুস ঠাকুস । আর কোনো কাজ নেই নাকি?”

মায়ের কাছে এমন কথা শোনেননি, এমন কাউকে এখানে খুঁজে পাওয়া অসম্ভব । কথাটা অনেক পরিচিত হলেও, কথাটার দিকে আজকে একটু ভিন্নভাবে তাকাবো । “সারাদিন” শব্দটি দিয়ে মা একটা ‘সময়’ বুঝিয়েছেন । “ঠুকুস ঠাকুস” দিয়ে বুঝিয়েছেন ‘শব্দ’ । আর “কাজ” দিয়ে ‘কাজ’ই বুঝিয়েছেন । আমরা দৈনন্দিন জীবনে এসব বিষয়ের সাথে অনেক ভালোভাবে পরিচিত হলেও, পদার্থবিজ্ঞান কিন্তু বলছে এসব সম্পর্কে আমাদের ধারণা মোটেও যথেষ্ট নয় । এই ‘সময়’, ‘শব্দ’, ‘কাজ’ ইত্যাদি জিনিসগুলো পদার্থবিজ্ঞানে আমরা ভিন্ন অর্থে প্রকাশ করে থাকি । পদার্থবিজ্ঞান মানে যেখানে আমরা সময়, শব্দ, কাজ, শক্তি, তরঙ্গ, গতি ইত্যাদি সব বিষয় নিয়ে আলোচনা আর হিসাব নিকাশ করি । আমার বাসা থেকে কলেজ যেতে দশ মিনিট লাগে । বাসা থেকে কলেজের দূরত্ব চারশ মিটার । ইত্যাদি প্রত্যেকটা বাক্যই পদার্থবিজ্ঞানের দিকে ইঙ্গিত করে । এভাবে জীবনের প্রতিটি ক্ষেত্রে পদার্থবিজ্ঞানের ব্যবহার জেনে বা না জেনে আমরা প্রত্যেকেই করে থাকি । আর আমার আজকের আলোচনার বিষয়, “প্রোগ্রামিং এ পদার্থবিজ্ঞান” । তো চলুন এক নজরে দেখা যাক আমাদের আজকের আলোচনার বিষয়গুলো ।

আলোচনার বিষয়ঃ-

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

(১) প্রোগ্রামিং এর জন্য পদার্থবিজ্ঞানের গুরুত্ব

(২) নিক্ষিপ্ত বস্তু (প্রাস) নিয়ে আলোচনা ও প্রোগ্রাম [প্রধান অংশ]

(৩) Angry Birds গেমের ক্রিয়াকলাপ

পদার্থবিজ্ঞান কি?

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

ইঞ্জিনিয়ারিং এ পদার্থবিজ্ঞান

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

“Without Engineers, Physics is just another book of Philosophy”

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

কম্পিউটার ইঞ্জিনিয়ারিং বা প্রোগ্রামিং এরও অনেকটা জুড়ে রয়েছে পদার্থবিজ্ঞান । প্রথমত, গেম তো পদার্থবিজ্ঞানের ওপর ভিত্তি করেই গড়ে ওঠে । তাছাড়া প্রত্যেকটা রিয়েলিস্টিক প্রোগ্রামেই পদার্থবিজ্ঞানের ব্যবহার দেখতে পাওয়া যায় ।

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

প্রাস বা দ্বিমাত্রিক গতি

সাইন্সের প্রত্যেকটা ছাত্রেরই এই বিষয়ে সামান্য ধারণা আছেই । তবুও একটু আলোচনা করব যারা চর্চার অভাবে ভুলে গেছেন তাদের জন্য ।

প্রাসঃ কোনো বস্তুকে খাড়া উপরে বা খাড়া নিচে নিক্ষেপ না করে একটু বাঁকাভাবে নিক্ষেপ করলে তাকে প্রাস বলে । (সহজ সংজ্ঞা)

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

যেহেতু জিনিসটা উপরে-নিচেও ওঠানামা করে, আবার সোজাও যায়, অর্থাৎ দুইদিকে যায়, তাই জিনিসটার গতি দ্বিমাত্রিক বলা হয় । এই প্রাসের ব্যবহার প্রচুর গেমে পাওয়া যায় । তার মধ্যে সবচেয়ে বিখ্যাত গেম হলঃ এংরি বার্ডস । আজকে আমরা এটা নিয়েই এক্সপেরিমেন্ট করব ।

প্রাসের গতি

ধরা যাক, উপরের গোলাটাকে মাটির সাথে ৩০ ডিগ্রি কোণ করে উপরে নিক্ষেপ করা হল । আর নিক্ষেপ করেছি ২০০মিটার/সেকেন্ড বেগে । তাহলে জিনিসটার ভবিষ্যত কি হবে?

- যেদিকে নিক্ষেপ করা হয়েছে সেদিকেই যেতে থাকবে?

- সোজা উপরে চলে যাবে?

- সোজা ডানে চলে যাবে?

- একটু উপরে গিয়ে নিচে নেমে আসবে?

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

এত্তোগুলো প্রশ্ন । কিন্তু এই সব প্রশ্নের উত্তর আমরা দিতে পারি পদার্থবিজ্ঞান থেকে । যেহেতু গোলাটাকে ৩০ ডিগ্রী কোণ করে ৩০০মি/সে বেগে নিক্ষেপ করা হয়েছে, নিক্ষেপ করার পর জিনিসটার বেগ ভাগ হয়ে যাবে । একটা গতি বাম থেকে ডানে নিয়ে যেতে কাজ করবে । আরেকটা গতি নিচ থেকে উপরে নিয়ে যেতে কাজ করবে । ত্রিকোণমিতিক অনুপাত থেকে আমরা লিখিঃ-

V0x=V0cosA এবং V0y=V0sinA যেখানে V0হল তার নিক্ষেপ বেগ এবং A হল নিক্ষেপ কোণ । প্রথম সমীকরণটা বস্তুটিকে বাম থেকে ডানে নিতে কাজ করবে । দ্বিতীয়টা বস্তুটিকে নিচ থেকে উপরে নিতে কাজ করবে । বস্তুটি একটু উপরে গিয়ে আবার নিচে নেমে আসবে কারণ পৃথিবী বস্তুটিকে নিজের দিকে টানছে । বাম থেকে ডানে যাওয়ার বেগ সবসময় নির্দিষ্ট থাকে । অর্থাৎ সবসময় নির্দিষ্ট বেগেই চলতে থাকে । কিন্তু উপরে ওঠার বেগ ধীরে ধীরে কমতে থাকে এবং এক পর্যায়ে বস্তুটিকে নিচে নামিয়ে নেয় । এর কারণ অভিকর্ষজ ত্বরণ । এটা এমন একটা বল যা সবসময় সব বস্তুকে পৃথিবীর কেন্দ্রের দিকে নিতে চায় । এভাবে, নির্দিষ্ট সময়ে প্রাসের অতিক্রান্ত দূরত্ব নির্ণয়ের জন্য নিচের সমীকরণ ব্যবহার করা হয়ঃ-

Sx=V0xcosA.t [ দূরত্ব = বেগ * সময় ]

Sy=V0ycosA.t + 0.5gt2[ s=ut + 0.5gt2 সূত্র দিয়ে এবং এখানে g এর মান ঋণাত্বক হবে ]

এই দুটি সূত্র দিয়েই সাধারণত প্রাসের গতিপথের কখন কতদূর যাবে এবং কেমন থাকবে তা দেখানো যায় । আমরা এই সূত্রগুলো ব্যবহার করব প্রোগ্রামে ।

প্রাসের গতি

আগেই বলেছি, প্রাসের গতি একটা দ্বিমাত্রিক গতি । বস্তুটি উপর নিচেও ওঠানামা করে এবং বামে-ডানেও যায় । অনেক পরীক্ষা নিরীক্ষা করে দেখা গেছে যে, প্রাসকে যে বেগে নিক্ষেপ করে হয়, তা মাটিতে পড়েও সেই বেগেই । অর্থাৎ, প্রাসের আদিবেগ এবং শেষবেগ সমান । উপরে বলেছি প্রাসের গতির দুইটি উপাংশ থাকে । একটা উপর-নীচের গতি । আরেকটা বামে/ডানের গতি ।

প্রাসের গতির ক্ষেত্রে, এটা বাম থেকে ডানে (যখন বাম থেকে ডানে ছোড়া হয়) সমান বেগে চলতেই থাকে । সুতরাং, Vx মান সবসময় নির্দিষ্ট, আর তা হল V0x বা V0cosA এর সমান । কারণ, আনুভূমিক বেগে কোনো ত্বরণ থাকেনা ।

কিন্তু, উপরে ওঠার বেগ আর নিচে নামার বেগ পরিবর্তিত হয় । এর কারণ অভিকর্ষজ ত্বরণ বা g । তাই, গতির সূত্র থেকে আমরা বস্তুর যে কোনো সময়ের উল্লম্ব বা খাড়া বেগ নিচের মত করে নির্ণয় করতে পারিঃ-

Vy=Voy+gt [ v=u+at সূত্র থেকে]

এভাবে, প্রাসের গতিপথের প্রতিটি মুহূর্তের বেগ নির্ণয় করা যায় ।

প্রোগ্রামে গতিবিদ্যা

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

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

তাহলে আর দেরী না করে চলে যাই আজকের এক্সপেরিমেন্টের প্রধান অংশে । ফিজিক্স ইন প্রোগ্রামিং ।

প্রোগ্রামিং এ পদার্থবিজ্ঞানের প্রয়োগ

আগেই বলে রেখেছি, আমি একটা সাধারণ ওয়েবপেজকেই ক্যানভাস হিসেবে নেব । সব কাজ করব ওয়েবপেজেই । আমরা বস্তু তৈরী করব HTML আর CSS দিয়ে, এবং তাতে পদার্থবিজ্ঞানের সূত্র প্রয়োগ করব JavaScript এবং jQuery দিয়ে । প্রথমে শুধু জাভাস্ক্রিপ্টের ব্যবহার করব বলে ভেবেছিলাম জিনিসটাকে আরও কাছে থেকে দেখাতে । কিন্তু এনিমেশন বা গেমের কাজগুলো শুধু জাভাস্ক্রিপ্টে করলে আমাকে কয়েকশত লাইন বেশী কোড এবং অসংখ্য ফাংশন লিখতে হত যা অনেক সময়সাপেক্ষ । সেজন্য জেকুয়েরী । তবে ভালো কথা হল, আমাদের দেশের বাঙ্গালী ডেভেলপাররা জাভাস্ক্রিপ্ট বাদ দিয়ে জেকুয়েরিই বেশী করে রপ্ত করে, কারণ এখানে পরিশ্রম কম । তবে বিষয়টা গণিত না জেনে পদার্থবিজ্ঞান জানার মতই হাস্যকর লাগে আমার কাছে । ওনাদের ক্ষমতা সীমিত । কিন্তু জাভাস্ক্রিপ্টের ক্ষমতা, সহজ ভাষায়- অসীম । তাহলে আর কথা না বাড়িয়ে শুরু করি ।

একটা ওয়েবপেজ নিই ক্যানভাস হিসেবে । এতে হেড, বডি, স্ক্রিপ্ট, স্টাইল ইত্যাদি বেসিক ট্যাগ থাকবে ।

এখানে, স্ক্রিপ্টের উপরে বডির মধ্যে আমরা জিনিস তৈরী করব । আর সিএসএস দিয়ে তার ডিজাইন (উচ্চতা, ক্ষেত্রফল, আকৃতি) ইত্যাদি দেব । সবশেষে তাতে পদার্থবিজ্ঞান এপ্লাই করব স্ক্রিপ্ট ট্যাগের মধ্যে ।

প্রথমে আমরা ভূমি হিসেবে স্ক্রিনের নিচের জায়গাটা নেব । অর্থাৎ, ওখানে বস্তুর উচ্চতা শূন্য ।

তারপর ভূমিতে একটা কামান নেব । কামানের ভেতর একটা গোলা এবং একটা ট্রিগার । ট্রিগারের ধাক্কার ফলে গোলাটা চলতে শুরু করবে । এর জন্য আমরা এইচটিএমএল এ নিচের কোড লিখবঃ-

<div>

<div class="kaman">

<div class="trigger"></div>

</div>

<div class="gola"></div>

</div>

এবং সিএসএস এ নিচের কোড লিখবঃ-

* {margin:0px;padding:0px;}html {width:100%;height:100%;overflow:hidden;}.vumi {width:100%;height:1px;background:black;position:absolute;left:0px;bottom:0px;}.kaman {width:100px;height:25px;position:absolute;bottom:32.5px;background:green;transform: rotate(-45deg);border-radius:10px 3px 3px 10px;}.gola {background:red;height:25px;width:25px;border-adius:12.5px;position:absolute;left:60px;bottom:55px;}.trigger {background:blue;height:10px;width:32px;position:absolute;bottom:7.5px;left:-22px;border-radius:5px;}

কোডটি দেখলেই এইচটিএমএল এবং সিএসএস পারদর্শী যে কেউ বুঝে ফেলবেন কোনটা কি কাজ করছে । ফলাফল হবে নিচের মতঃ-

এখানে টিয়ে রঙের টা কামান । লাল টা গোলা । আর সবুজ রঙের টা ট্রিগার । ট্রিগার যেহেতু কামানের ভেতরেই ক্রিয়া করবে শুধু, তাই এটাকে নেয়া হয়েছে কামানের ডিভের ভেতরে । আর গোলা ক্রিয়া করবে মাটির ওপর সব জায়গায় । তাই এটাকে নেয়া হয়েছে ভুমি ডিভের মধ্যে ।

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

আমরা সবাই জানি, কম্পিউটার নিজে থেকে কিছু জানেনা । পদার্থবিজ্ঞানের প্রয়োগ করার জন্যও আমাদের তার কাছে পদার্থবিজ্ঞানের সূত্রগুলো বলতে হবে । সবকিছু জানাতে হবে । ধরে নিন, আমরা এই পর্যায়ে, ওয়েবপেজটিতে পদার্থবিজ্ঞানের কিছু সূত্র দেব । এটাকে গেমের ইনস্টল করা বলা যেতে পারে । প্রাসের জন্য আমাদের শুধু দুইটি তথ্য দিলেই হবে । (১) নিক্ষেপ কোণ (২) নিক্কেপণ বেগ

নিচের কোডগুলোর মাধ্যমে এই তথ্যগুলো কম্পিউটারকে জানাবোঃ-

Ad=45;

A=(Math.PI*Ad)/180; //Convert in Radian Unit

var Vo=80;

অর্থাৎ, ৪৫ ডিগ্রী কোণ করে ৮০মি/সে বেগে কোনো বস্তুকে নিক্ষেপ করা হল । হিসেবের সূবিধার জন্য দ্বিতীয় লাইনে ৪৫ ডিগ্রী কোণকে রেডিয়ানে রুপান্তর করেছি ।

আর অবশ্যই, গাণিতিক হিসেবের জন্য জাভাস্ক্রিপ্টের Math ক্লাস ব্যবহার করেছি ।

তারপর নিচের কোড এর মাধ্যমে আমরা কম্পিউটারকে অভিকর্ষজ ত্বরণের মান জানাবোঃ-

g=-9.8;

বেসিক ইনস্টলেশন মোটামুটি শেষ । এবার ইন্টারেক্টিভ করার জন্য কাজ করব । কামান তো এমনি মাটির সাথে লেগে থাকবে । কামানটাকে এবার উপরে বর্ণিত ৪৫ ডিগ্রি কোণে ঘোরাবো । সিএসএস৩ এর transform: rotate(); ফাংশন যেহেতু কামানের ভাররকেন্দ্রকে অক্ষ হিসেবে নিয়ে রোটেট করে, তাই কামানটা মাটির নিচে নেমে যায় । এটাকে ভূমির সাথে বজায় রাখার জন্য একটু উপরে উঠিয়ে রিসেট করে নিতে হয় । কতটুকু উপরে ওঠাতে হবে তার জন্য আমাকে খাতা কলমে ২ পৃষ্ঠা অংক করতে হয়েছে । কিছু ত্রিকোণমিতিক হিসেব । ওগুলো বর্ণনা করলে আর্টিকেলটা অনেক বড় হয়ে যাবে । তাই জাস্ট ফলাফলটা দেখে নিনঃ-

L = (xsinA+ycosA-y)/2 [যেখানে, x=কামানের দৈর্ঘ্য, y=প্রস্থ, A=নিক্ষেপণ কোণ]

তাহলে প্রোগ্রামে কামানটা রিসেট করে নেয়ার জন্য নিচের কোডগুলো লিখবঃ-

kaman=$(".kaman");

kWidth=100;

kHeight=25;

kBottom=((kWidth*Math.sin(A))+(kHeight*Math.cos(A))-kHeight)/2;

kTransform="rotate(-"+Ad+"deg)";

kaman.css({"width":kWidth,"height":kHeight,"bottom":kBottom,"transform":kTransform});

মোটামুটি এনিমেশন ইন্সটলেশনের কাজ শেষ । এবার ইন্টারেক্টিভ করার ফাংশন লিখব । প্রথম ফাংশনঃ ট্রিগার দিয়ে কামানের গোলায় ধাক্কা দেওয়ার ফাংশন । এটা নিচের মতঃ-

function fire(){

if ($(".trigger").position().left<(30)){

$(".trigger").animate({left:"40px"},150,"linear",function(){run();});

}

}

এই ফাংশনটাকে কল করলে ট্রিগার দিয়ে গোলার গায়ে জোরে আঘাত করে এবং আঘাত করার পর “রান” নামে আরেকটা ফাংশনকে কল করে ।

দ্বিতীয় ফাংশনঃ বলের গতির ফাংশন । এই ফাংশন বেগ এবং কোণের মান থেকে প্রতি মিলিসেকন্ডে কামানের গতি এবং অতিক্রান্ত দূরত্ব নির্ণয় করে এবং কামানকে চালায় । ফাংশনটা নিম্নরুপঃ-

function run(t){

Vxo=Vo*Math.cos(A);

Vyo=Vo*Math.sin(A);

if (!t){t=0.1;}

VT=Vxo*t;

Sx=dX+VT;

Sy=dY+((Vyo*t)+(0.5*g*(t*t)));

gola.animate({left:Sx,bottom:Sy},1,"linear",function(){if (Sy<=2){gola.stop();} else {run(t+.1);}});

}

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

এই ফাংশনটাই আমাদের আলোচনার প্রধান অংশ । এখানেই পদার্থের s=vt; s=ut+0.5at2; v=u+at ইত্যাদি সূত্রের ব্যবহার করে বস্তুর অবস্থান এবং কোনদিকে যাবে সব নির্ধারণ করে ।

ব্যস, আমাদের ফাংশন তৈরীর কাজ শেষ । মোটামুটি এনিমেশনের সব কাজ শেষ । এবার এডিশনাল কিছু ফাংশন এবং এট্রিবিউট তৈরী করে ফাংশন কল করে জিনিসটাকে তৈরী করা হয় ।

সবশেষে আমরা নিচের এইচটিএমএল প্রোগ্রামটা পাই ।

Live Preview with Codes (JSFiddle)

এখানে সাধারণভাবে ৪৫ ডিগ্রী কোণে এবং ৮০মি/সে বেগে গোলাটিকে মারা হয়েছে । আপনারা ইচ্ছে করলে কোণ পরিবর্তন করে এবং বেগ পরিবর্তন করে প্রোগ্রামটির আলাদা আলাদা ফলাফল দেখতে পারবেন । বেগ আর কোণ বা যে কোনো একটি পরিবর্তন করে ফলাফল দেখতে হলে নিচের পদ্ধতি অনুসরণ করুণঃ- (অনেকটা গেমের চিট কোডের মত । ইচ্ছে করেই ভিজুয়াল ফর্ম বানাইনি জিনিসটাকে প্রোগ্রামিং প্রোগ্রামিং এঙ্গেল দিতে)

১) ব্রাউজারের “Console” ওপেন করুন । [ফায়ারফক্স ব্যবহারকারীঃ Ctrl+Shift+K আর ক্রোমে Ctrl+Shift+J চাপলেই এটা পাবেন ।]

২) ওখানে Vo= লিখে (বড় হাতের ভি, ছোট হাতের ও এবং সমান চিহ্ন) ১-১৩০ এর মধ্যে যে কনো একটা বেগের মান লিখুন । আমাদের ছোট্ট স্ক্রিনে এর চেয়ে বেশী বেগ দিলে গোলা স্ক্রিনের বাইরে চলে যাবে । যেমনঃ Vo=100

৩) তারপর এন্টার চাপুন

৪) এভাবে নিক্ষেপ কোণ পরিবর্তন করার জন্য ওখানে Ard= দিয়ে ০ থেকে ৯০ এর মধ্যে কোনো মান দিন । তারপর ইন্টার চাপুন । তারপর রিসেট বাটনে ক্লিক করে আবার ফায়ার করুন । দেখবেন একটা নির্দিষ্ট কোণ করে নিক্ষেপ করা হয়েছে । [বিঃদ্রঃ Ard=90 লিখে ইন্টার চেপে কেউ একমাত্রিক গতির বিষয়টা এক্সপেরিমেন্ট করতে পারবেন । কারণ এক্ষেত্রে গোলাটা সোজা উপরে উঠে নিচে নামবে । প্লেইন জাভাস্ক্রিপ্টে কামানকে সিএসএস৩ দিয়ে ডিজাইন করায় এটার কোণের মান পরিবর্তন করে গোলার অবস্থান নির্দিষ্ট করা “ক্যানভাস” এর তুলনায় যথেষ্ঠ কষ্টসাধ্য (প্রায় অসম্ভব) । তাই কামানের কোণ অপরিবর্তিত রেখেই গোলার নিক্ষেপ কোণ পরিবর্তন করতে হয়েছে । ]

৫) নিক্ষেপ কোণ ও বেগ উভয়ের পরিবর্তনের জন্য নিচের স্ক্রিনশটের মত করে “কনসোল” এ কোড লিখুনঃ-

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

এংরি বার্ডস- গেমের নির্মানশৈলী

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

আমার ইচ্ছে ছিলো গেমটার বেসিক একটা লেভেল সরাসরি তৈরী করেই দেখাব । কিন্তু আর মাত্র দুইমাস পরেই আমার মহাপ্রলয়ংকারী এইচএসসি পরীক্ষা । এর জন্য আমি আপনাদের সকলের দোয়াপ্রার্থী । সময় বের করা যে কত কঠিন তা বুঝতেই পারছেন । হয়তো খুব শীঘ্রই আবারও হাজির হব এমনই আরেকটি যাচ্ছেতাই এক্সপেরিমেন্ট নিয়ে ।

উপসংহার

এতো বিখ্যাত একটা গেমের ক্রিয়াকলাপ কি সহজ, তাই না? আসলে পৃথিবীটাই অনেক সহজ । পদার্থবিজ্ঞান, রসায়ন, গণিত, প্রোগ্রামিং এসব কিছুই অনেক সহজ বিষয় । আমাদের শুধু পরীক্ষায় এ+ পাওয়ার জন্য লেখাপড়া না করে কিছু জ্ঞান অর্জন করার জন্য লেখাপড়া করতে হবে । তাহলে দেখবেন লেখাপড়ার চেয়ে মজার কাজ আর কিছুই নেই । একটা অংক দীর্ঘ কয়েকদিন পর সমাধানে পৌঁছাতে পারার মধ্যে যে পৈশাচিক আনন্দ আছে তা অন্য কিছুর মধ্যেই নেই । পরীক্ষার জন্য না হোক, অন্য কিছুর জন্য না হোক, অন্তত যেই পৃথিবীটাতে বাস করছি তা সম্পর্কে জানার কৌতুহল থেকেও তো আমাদের এসব নিয়ে জ্ঞানার্জনের তীব্র চেষ্টা থাকা উচিত । তবেই না আমরা “পরম সত্য” টা জানতে পারব । সবাইকে ধন্যবাদ জানিয়ে আজকের মত এখানেই বিদায় নিচ্ছি । ধন্যবাদ ।

আর আর্টিকেলের বিষয়ে যে কোনো মন্তব্য, জিজ্ঞাসা বা উপদেশ দিয়ে আমার সাথে ফেসবুকে যোগাযোগ করতে পারেন । ফেসবুকঃ

Find Me On Facebook

 

Level 0

আমি andamus। বিশ্বের সর্ববৃহৎ বিজ্ঞান ও প্রযুক্তির সৌশল নেটওয়ার্ক - টেকটিউনস এ আমি 11 বছর 4 মাস যাবৎ যুক্ত আছি। টেকটিউনস আমি এ পর্যন্ত 6 টি টিউন ও 5 টি টিউমেন্ট করেছি। টেকটিউনসে আমার 0 ফলোয়ার আছে এবং আমি টেকটিউনসে 0 টিউনারকে ফলো করি।


টিউনস


আরও টিউনস


টিউনারের আরও টিউনস


টিউমেন্টস

সুন্দর ভাবে বুঝিয়ে বলার জন্য ধন্যবাদ। এর সম্পর্কে অনেক কিছু জানতে পারলাম…

অনেক কিছু জানতে পারলাম,ধন্যবাদ।

ধন্যবাদ

অসাধারন

কিছুই বলার নাই।
সবই মাথার উপর দিয়ে গেল।

অসাধারন

দারুন দারুন !

হাজারে একটা টিউন।ছোটকালের ফিজিক্সটা ঝালাই হয়ে গেলো।

যে টিউনে শেখার অনেক কিছু রয়েছে। টিউনারকে অনেক ধন্যবাদ। এমন ব্যাখ্যাবহুল টিউন আজকাল খুব দেখা যায় না। অসংখ্য ধন্যবাদ।

হাজার বাছা টিউন।