If you're seeing this message, it means we're having trouble loading external resources on our website.

তোমার যদি কোন ওয়েব ফিল্টার দেওয়া থাকে, তাহলে দয়া করে নিশ্চিত কর যে *.kastatic.org এবং *.kasandbox.org ডোমেইনগুলো উন্মুক্ত।

মূল বিষয়বস্তু

ত্রিমাত্রিক (3D) আকৃতি অঙ্কন

আমাদের কাছে একটি ঘনক উপস্থাপিত হয়েছে। এখন আমরা ঘনকটি আঁকার চেষ্টা করি।
2D (দ্বিমাত্রিক) তলে একটি 3D (ত্রিমাত্রিক) আকৃতি আঁকার জন্য, আমাদের এটা "project" (অভিক্ষেপ) করতে হবে। আমরা জানি, একটি ঘনকের পেছনে উজ্জ্বল আলো অভিক্ষিপ্ত করলে পর্দার উপর ঘনকের ছায়া পড়বে। Projection (অভিক্ষেপণ) এর সবচেয়ে সহজ উপায় হল orthogonal projection (লম্ব অভিক্ষেপণ), যা আলোর রশ্মি পরস্পর সমান্তরাল হলে সৃষ্টি হয়।
অভিক্ষেপণের ব্যাপারটি কিছুটা জটিল হলেও, এটা প্রয়োগ করা খুবই সহজ: শুধু আঁকানোর সময় আমরা z-স্থানাঙ্ক বাদ দেবো।

আঁকানোর জন্য প্রস্তুতি

পরবর্তীতে সহজে পরিবর্তনের জন্য, আমি সবসময় প্রোগ্রামের শুরুতেই চলক তৈরি করে থাকি। এখানে কিছু চলক আছে; আমরা ইচ্ছেমত মান বসাতে পারি।
var backgroundColor = color(255, 255, 255);
var nodeColor = color(40, 168, 107);
var edgeColor = color(34, 68, 204);
var nodeSize = 8;
এখন আমরা একটি মৌলিক draw (আঁকানো) এর ফাংশন কোড করবোঃ
var draw = function() { 
    background(backgroundColor);
};
নিচের কোডটিও লিখতে হবে:
translate(200, 200);
This shifts our canvas 200 pixels right and 200 pixels down, so the pixel at position (0, 0), is now in the center of our canvas. This means that our cube will be drawn in the center of the screen. The reason for doing things this way will become clear when we start to rotate our objects.

Nodes (নোডগুলো) আঁকানো

Draw ফাংশনের মধ্যে আমরা সকল nodes (নোড) এ লুপ করি এবং নোডের (x, y) স্থানাঙ্কে একটি উপবৃত্ত আঁকিঃ
fill(nodeColor);
noStroke();
for (var n = 0; n < nodes.length; n++) {
   var node = nodes[n];
   ellipse(node[0], node[1], nodeSize, nodeSize);
}

Edges (প্রান্তগুলো) আঁকানো

এছাড়াও draw ফাংশনের মধ্যে আমরা edges (প্রান্তগুলো) আঁকানোর জন্য কোড করি। আমি এই কোড, nodes (নোডগুলো) আঁকানোর কোডের আগে করতেই পছন্দ করি, যাতে edges (প্রান্তগুলো) এর উপরে nodes (নোডগুলো) কে আঁকা যায়।
stroke(edgeColor);
for (var e = 0; e < edges.length; e++) {
   var n0 = edges[e][0];
   var n1 = edges[e][1];
   var node0 = nodes[n0];
   var node1 = nodes[n1];
   line(node0[0], node0[1], node1[0], node1[1]);
}
এই কোডটি edges (প্রান্তগুলোর) অ্যারেতে লুপ করে। এটা edge (প্রান্ত) দিয়ে সংজ্ঞায়িত দুইটি সংখ্যাকে নেয় এবং এর সাথে সংযুক্ত node (নোড) কে অ্যারে থেকে খুঁজে বের করে। তারপর এটা প্রথম node (নোড) এর (x, y) স্থানাঙ্ক থেকে দ্বিতীয় নোডের (x, y) স্থানাঙ্কে একটি সরলরেখা আঁকে।

এটাই কি শেষ?

আমরা একটি ঘনক আঁকতে চেয়েছিলাম, কিন্তু আমরা চারটি বৃত্ত বিশিষ্ট একটি চতুর্ভুজ এঁকেছিঃ
আমরা এটা আরও কম পরিশ্রমে আঁকতে পারতাম। কিন্তু, এটিই আসলে আমাদের ঘনক - আমরা একপাশ থেকে দেখছি জন্য বুঝতে পারছি না। আমরা যদি কোনভাবে এটাকে ঘোরাতে পারি তাহলেই দেখবো যে এটি শুধু বৃত্ত বিশিষ্ট চতুর্ভুজ নয়, এটি একটি ঘনক।

আলোচনায় অংশ নিতে চাও?

কোন আলাপচারিতা নেই।
ইংরেজি জানো? খান একাডেমির ইংরেজি সাইটে আরো আলোচনা দেখতে এখানে ক্লিক কর।