যদি আপনি জানেন যে কাস্ট কাস্টিং কি, তবে আপনাকে যা করতে হবে তা হ'ল হার্ড-কোড করা code যতক্ষণ না প্রতিটি ভার্টেক্সের জন্য আপনার সমন্বয় থাকে ততক্ষণ এটি অত্যধিক জটিল নয়।
প্রথমে হালকা-উদ্ভাসিত বস্তু তৈরি করুন। আপনার আলোকে x, y স্থানাঙ্কে রাখুন।
#include <math.h>
int i = 0;
if ( sqrt( abs( light.x - vertex.x )^2 + abs( light.y - vertex.y )^2 ) <= light.radius)
{
lightOccludingVertices[i] = vertex;
i++;
}
//If two or more vertices are both a member of an individual wall,
//illuminate the triangular area between the light, the furthest
//vertex on the x-axis, and the furthest vertex on the y-axis
এটি অবতল বহুভুজের জন্য কাজ করার গ্যারান্টিযুক্ত নয়, তবে এটি কোনও উত্তল বহুভুজগুলির জন্য ঠিক কাজ করা উচিত।
আলো লাগানোর পরে যদি আপনার অবসন্ন বস্তু (দেয়াল, চরিত্র, উড়ন্ত বেগুনি মানুষ খাওয়া) পর্দায় আঁকা হয় তবে এটি কাজ করবে। অন্যথায়, প্রাচীরের অর্ধেক অংশ অন্য অর্ধেকের তুলনায় উল্লেখযোগ্যভাবে উজ্জ্বল প্রদর্শিত হবে। যদি আপনার পয়েন্ট লাইট একই প্রাচীরের দুটি জোড় (আপনার দেওয়ালের উচ্চতার চেয়ে অর্ধেক উঁচু) থেকে সমান হয় তবে ত্রিভুজটি দুটি আরও দূরে রাখার পরিবর্তে দুটি নিকটতম উল্লম্বে লাগান।
আমার আরও উল্লেখ করা উচিত যে এই পদ্ধতির জন্য একটি গতিশীলভাবে তৈরি শিখাগুলি বিন্দুর প্রয়োজন যেখানে আলোর ব্যাসার্ধের প্রান্তটি অন্তর্ভুক্ত বস্তুর পৃষ্ঠের সাথে মিলিত হয়। এটি যে কোনও অবসন্ন বস্তুর জন্য সর্বনিম্ন 3 টি শীর্ষতুল্য তৈরি করে এবং এমন দেয়ালগুলিকে আলোর ব্যাসার্ধের বাইরে (বা স্ক্রিনের বাইরে) প্রসারিত করে যে কোনও আলোকে ব্লক করার অনুমতি দেয়।
অবতল এবং উত্তল বহুভুজ সম্পর্কে আরও তথ্য