Saya memiliki objek ruang yang ditentukan oleh kumpulan segmen garis perulangan yang perlu saya perhitungkan luasnya. Kelas-kelas dapat dijelaskan sebagai berikut (dalam pseudo-code):
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();
}
Dinding-dinding sebuah ruangan tidak pernah bisa berpotongan di mana pun, tetapi pada titik akhir segmen dan "sub-loop" apa pun yang dibuat juga akan dipisahkan menjadi ruang baru. Solusinya tidak perlu benar-benar akurat (margin kesalahan 10% dapat diterima) dan juga tidak sering dihitung (<1 / d).
Room
s untuk selalu lengkap, dan itu mungkin tidak terjadi jika saya meminta pemain membuat Room
s menggunakan Segment
s. Juga, fungsi ruang tertutup mudah untuk didefinisikan (hanya loop melalui Segment
s dan pastikan mereka membuat ruang).
Room
memuat daftarPoint
s, dan kemudian mendapatkan segmen dengan menghubungkan setiap titik dan kemudian memutarnya kembali. Jika tidak, dengan pengaturan Anda saat ini, sangat timur untuk mendapatkan nilai yang salah (mis. Ruangan tertutup, ruangan dengan dinding di tengah, dll.). Ini akan menjadi pilihan terbaik.