লুপিং লাইন বিভাগগুলির একটি সংকলন দ্বারা সংজ্ঞায়িত আমার কাছে একটি রুম অবজেক্ট রয়েছে যার জন্য অঞ্চলটি গণনা করা দরকার। ক্লাসগুলি নীচে বর্ণিত হতে পারে (সিউডো-কোডে):
class Point {
float x;
float y;
...
float distanceFrom(Point p);
}
class Segment {
Point start;
Point end;
...
float length();
}
class Room {
List<Segment> walls;
...
float area();
}
ঘরের দেয়াল কখনও কোথাও ছেদ করতে পারে না তবে বিভাগগুলির শেষ পয়েন্টগুলিতে এবং তৈরি করা "সাব-লুপগুলি" একটি নতুন ঘরে আলাদা করা হবে। সমাধানটি পুরোপুরি নির্ভুল হওয়ার প্রয়োজন নেই (ত্রুটির 10% মার্জিন গ্রহণযোগ্য) এবং খুব প্রায়ই গণনা করা হয় না (<1 / s)।
Room
সর্বদা সম্পূর্ণ হওয়া দরকার , এবং আমার যদি প্লেয়ারকে Room
এস ব্যবহার করে তৈরি করতে পারা যায় তবে তা নাও হতে পারে Segment
। এছাড়াও, একটি বদ্ধ ঘরে ফাংশনটি নির্ধারণ করা সহজ (কেবলমাত্র Segment
সেগুলির মধ্যে লুপ করুন এবং তারা একটি ঘর তৈরি করেছেন তা নিশ্চিত করুন)।
Room
গুলিগুলির একটি তালিকা অন্তর্ভুক্ত করার জন্য এটি আরও অর্থপূর্ণ হবেPoint
এবং তারপরে প্রতিটি পয়েন্টকে এক সাথে সংযুক্ত করে বিভাগগুলি পান এবং তারপরে আবার লুপ করুন। অন্যথায়, আপনার বর্তমান সেটআপের সাথে, ভুল মানগুলি পাওয়া খুব পূর্ব দিকে (যেমন বন্ধ না হওয়া ঘর, মাঝখানে প্রাচীরযুক্ত ঘর ইত্যাদি)। এটি সেরা বিকল্প হবে।