আমি কীভাবে বিদ্যুতের বল্টের প্রভাব তৈরি করতে পারি?


26

বিদ্যুতের বল্ট উত্পন্ন করার জন্য কি কোনও অ্যালগরিদম আছে?

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


(উত্স: উইকিমিডিয়া.অর্গ )

এটির জন্য যদি কাজ করা কোনও অ্যালগরিদম সম্পর্কে কেউ জানেন তবে সাহায্যের প্রশংসা করা হবে!


2
এনভিদিয়ার এই কাগজটি আপনার যা প্রয়োজন ঠিক তা হওয়া উচিত, যদিও এটি কিছুটা বিস্তৃত হতে পারে। স্লাইডগুলি 7 থেকে 11 এ চেক করুন, তাদের কিছু সুন্দর আইমেজেজ রয়েছে যা আপনাকে কী কী লক্ষ্য রাখতে হবে তার একটি ধারণা দেওয়া উচিত। আপনি যদি দ্বিতীয় লিঙ্কটি অনুসরণ করেন তবে আপনি উত্স কোডটি পাবেন (সি ++, ডাইরেক্ট 3 ডি)। বিকাশকারী.ডাউনলোড.এনভিডিয়া.
ফল্ট

উত্তর:


32

এখানে আলোকসজ্জা বোল্ট উত্পন্ন করতে আপনি বেশ সহজ সরল অ্যালগরিদম ব্যবহার করতে পারেন।

বল্টের উত্স ( O) এবং শেষ পয়েন্ট ( E) এর মধ্যে একটি রেখাংশ দিয়ে শুরু করুন

সেই লাইনের একটি বিন্দু চয়ন করুন (প্রায় বা একেবারে ঠিক মাঝখানে), বলা হয় Sএবং বিভাগটিকে দুটি লাইন বিভাগে বিভক্ত করুন ( O->Sএবং S->E)। Sকিছু অল্প এলোমেলো পরিমাণ দ্বারা মূল লাইন বিভাগটি (বিভাগের স্বাভাবিক বরাবর) থেকে দূরে স্থানান্তর করুন। এটি আপনাকে বিদ্যুতের একক "বাঁক" দেয়।

আপনি একটি ছোট এলোমেলো সুযোগের উপর ভিত্তি করে বাঁকটি গণনা করার পরে আপনি একটি তৃতীয় লাইনের বিভাগ (সাধারণত বিভাগটির একটি এক্সটেনশন O->S) যুক্ত করতে চান। এইভাবে আপনি বিদ্যুতের "কাঁটাচামচ" তৈরি করেন। আপনি সাধারণত এই প্রজন্মের প্রক্রিয়া চলাকালীন বল্টের তীব্রতা সম্পর্কে তথ্য ট্র্যাক করতে চাইবেন, কারণ আপনি কাঁটাচাটি হালকা হয়ে যেতে চান বা আরও সূক্ষ্ম অস্পষ্টতা দেখতে চাইবেন:

এখানে চিত্র বর্ণনা লিখুন

তারপরে, আপনার কাছে থাকা সমস্ত নতুন রেখাংশের জন্য উপরের প্রক্রিয়াটি পুনরাবৃত্তি করুন; আপনার একটি পুনরাবৃত্ত পরিমাণ চয়ন করতে হবে যা আপনার পছন্দ মতো আকার তৈরি করে:

এখানে চিত্র বর্ণনা লিখুন

এখানে আমার বন্ধুর ব্লগে এই কৌশলটির মোটামুটি স্পষ্ট ব্যাখ্যা রয়েছে ( এখানে আমি নির্লজ্জভাবে ছবিগুলি চুরি করেছি); এটি পাশাপাশি গ্লো ইফেক্ট যোগ করার বিষয়ে অতিরিক্ত গভীরতায় যায়।

অবশেষে, এই এনভিআইডিএ কাগজটিও একই বুনিয়াদি অ্যালগরিদম (আরও বিশদ সহ) বর্ণনা করে।


13

আমি একটি বিকল্প পদ্ধতির সুপারিশ করব: দ্রুত অন্বেষণ করা র্যান্ডম ট্রি (আরআরটি) । এটি সম্পর্কে একটি দুর্দান্ত জিনিস হ'ল আপনি এটিকে কোণে ঘুরিয়ে পেতে, বা সমস্ত দিক দিয়ে বিস্ফোরণ পেতে পারেন।

অ্যালগরিদমটি আসলেই প্রাথমিক:

// Returns a random tree containing the start and the goal.
// Grows the tree for a maximum number of iterations.
Tree RRT(Node start, Node goal, int maxIters)
{
    // Initialize a tree with a root as the start node.
    Tree t = new Tree();
    t.Root = start;


    bool reachedGoal = false;
    int iter = 0;

    // Keep growing the tree until it contains the goal and we've
    // grown for the required number of iterations.
    while (!reachedGoal || iter < maxIters)
    {
         // Get a random node somewhere near the goal
         Node random = RandomSample(goal);
         // Get the closest node in the tree to the sample.
         Node closest = t.GetClosestNode(random);
         // Create a new node between the closest node and the sample.
         Node extension = ExtendToward(closest, random);
         // If we managed to create a new node, add it to the tree.
         if (extension)
         {
             closest.AddChild(extension);

             // If we haven't yet reached the goal, and the new node
             // is very near the goal, add the goal to the tree.
             if(!reachedGoal && extension.IsNear(goal))
             {
                extension.AddChild(goal);
                reachedGoal = true;
             }
         }
         iter++;
    }
    return t;
}

RandomSampleএবং ExtendTowardকার্যাবলী পরিবর্তন করে আপনি খুব আলাদা গাছ পেতে পারেন। যদি RandomSampleসর্বত্র অভিন্নভাবে নমুনা হয় তবে গাছটি সমস্ত দিক থেকে সমানভাবে বৃদ্ধি পাবে। যদি লক্ষ্যটির দিকে পক্ষপাতদুষ্ট হয় তবে গাছটি লক্ষ্যের দিকে বাড়তে থাকে। যদি এটি সর্বদা লক্ষ্যটিকে নমুনা করে থাকে তবে গাছটি শুরু থেকে লক্ষ্য পর্যন্ত একটি সরল রেখা হবে।

ExtendTowardআপনাকে গাছটিতে আকর্ষণীয় জিনিসও করতে দেয়। একটি জিনিসের জন্য, যদি আপনার বাধা থাকে (যেমন দেয়ালগুলি), আপনি কেবল প্রাচীরের সাথে সংঘর্ষিত হওয়া এক্সটেনশনগুলি প্রত্যাখ্যান করে গাছটি চারপাশে বাড়িয়ে আনতে পারেন ।

আপনি যখন লক্ষ্যটির দিকে নমুনাটিকে পক্ষপাতিত্ব করবেন না তখন এটির মতো দেখতে:

চিত্র
(উত্স: uiuc.edu )

এবং এখানে দেয়ালগুলির সাথে দেখতে দেখতে এটির মতো

আরআরটির কয়েকটি দুর্দান্ত বৈশিষ্ট্যগুলি সমাপ্ত হওয়ার পরে:

  • আরআরটি কখনই নিজেকে অতিক্রম করবে না
  • আরআরটি শেষ পর্যন্ত ছোট এবং আরও ছোট শাখা দিয়ে পুরো স্থানটি coverেকে দেবে
  • শুরু থেকে গোলের পথটি সম্পূর্ণ এলোমেলো এবং অদ্ভুত হতে পারে।

আমি এই আলগোরিদিমটি কেবলমাত্র একটি বিদ্যুতের বল্ট অ্যানিমেশন তৈরি করতে ব্যবহার করেছি। আমি অবশ্যই বলতে পারি এটি সত্যিই ভাল কাজ করেছে! কোডটিতে একটি বড় টাইপ রয়েছে যেমন আইটারের প্রতিটি লুপকে বাড়ানো হয় না। এটি
বাদে এটি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.