এটি করার 2 টি উপায় রয়েছে:
গোলাকৃতির স্থানাঙ্কে থেটা এবং ফাই হাঁটুন, মুখ এবং ত্রিস উত্পন্ন করুন
একটি আইকোশেড্রন তৈরি করুন এবং প্রত্যাশিতভাবে মহকুমা মুখগুলি তৈরি করুন যতক্ষণ না কাঙ্ক্ষিত টেসেলেলেশন পৌঁছে যায়।
গোলাকৃতির স্থানাঙ্ক ব্যবহার করে চলুন
প্রথম উপায়ে, আপনি কেবল থেটা এবং ফাইয়ের জন্য ডাবল নেস্টেড ব্যবহার করেন। আপনি থেটা এবং ফাই চলার সাথে সাথে আপনি আপনার গোলক তৈরি করতে ত্রিভুজ স্পিন করেন।
কোডটি এটি করে এমন কিছু দেখতে পাবেন:
for( int t = 0 ; t < stacks ; t++ ) // stacks are ELEVATION so they count theta
{
real theta1 = ( (real)(t)/stacks )*PI ;
real theta2 = ( (real)(t+1)/stacks )*PI ;
for( int p = 0 ; p < slices ; p++ ) // slices are ORANGE SLICES so the count azimuth
{
real phi1 = ( (real)(p)/slices )*2*PI ; // azimuth goes around 0 .. 2*PI
real phi2 = ( (real)(p+1)/slices )*2*PI ;
//phi2 phi1
// | |
// 2------1 -- theta1
// |\ _ |
// | \ |
// 3------4 -- theta2
//
//vertex1 = vertex on a sphere of radius r at spherical coords theta1, phi1
//vertex2 = vertex on a sphere of radius r at spherical coords theta1, phi2
//vertex3 = vertex on a sphere of radius r at spherical coords theta2, phi2
//vertex4 = vertex on a sphere of radius r at spherical coords theta2, phi1
// facing out
if( t == 0 ) // top cap
mesh->addTri( vertex1, vertex3, vertex4 ) ; //t1p1, t2p2, t2p1
else if( t + 1 == stacks ) //end cap
mesh->addTri( vertex3, vertex1, vertex2 ) ; //t2p2, t1p1, t1p2
else
{
// body, facing OUT:
mesh->addTri( vertex1, vertex2, vertex4 ) ;
mesh->addTri( vertex2, vertex3, vertex4 ) ;
}
}
}
সুতরাং উপরে নোট করুন, শীর্ষগুলি এবং নীচের ক্যাপটি কেবল ট্রিস ব্যবহার করে, কোয়াডগুলি নয়, এটি গুরুত্বপূর্ণ to
আইকোসেড্রাল গোলক
আইকোশেড্রন ব্যবহার করতে, আপনি কেবল আইকোশেড্রনের পয়েন্টগুলি তৈরি করেন এবং তারপরে এটি থেকে ত্রিভুজগুলি সরিয়ে ফেলুন। একটি icosahedron ছেদচিহ্ন উৎপত্তি বসে আছেন:
(0, ±1, ±φ)
(±1, ±φ, 0)
(±φ, 0, ±1)
where φ = (1 + √5) / 2
এরপরে আপনাকে কেবল সেই আইকোস্যাড্রন এবং বায়ুযুক্ত মুখগুলির ডায়াগ্রামটি সেই ভার্টগুলি থেকে দেখতে হবে। আমার কাছে ইতিমধ্যে কোড রয়েছে যা এটি এখানে করে ।