ฉันมีห้องวัตถุที่กำหนดโดยชุดของส่วนของเส้นที่วนลูปที่ฉันต้องคำนวณพื้นที่ คลาสสามารถอธิบายได้ดังต่อไปนี้ (ในรหัสเทียม):
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();
}
ผนังของห้องไม่สามารถตัดกันได้ทุกที่ แต่ที่จุดสิ้นสุดของเซกเมนต์และ "sub-loops" ที่สร้างขึ้นจะถูกแยกออกเป็นห้องใหม่ การแก้ปัญหาไม่จำเป็นต้องแม่นยำอย่างสมบูรณ์ (ยอมรับข้อผิดพลาด 10%) และไม่คำนวณบ่อยมาก (<1 / s)
Room
จะมีรายการของPoint
s แล้วรับส่วนด้วยการเชื่อมต่อแต่ละจุดเข้าด้วยกันแล้ววนกลับเข้าไปใหม่ มิฉะนั้นด้วยการตั้งค่าปัจจุบันของคุณมันตะวันออกมากที่จะได้รับค่าที่ไม่ถูกต้อง (เช่นห้องที่ไม่มีคนอยู่ห้องที่มีผนังตรงกลางเป็นต้น) นี่จะเป็นตัวเลือกที่ดีที่สุด