J'ai un objet de pièce défini par une collection de segments de ligne en boucle dont j'ai besoin pour calculer l'aire. Les classes peuvent être décrites comme suit (en 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();
}
Les murs d'une pièce ne peuvent jamais se croiser n'importe où, mais aux extrémités des segments et les "sous-boucles" créées seront également séparées dans une nouvelle pièce. La solution n'a pas besoin d'être parfaitement précise (une marge d'erreur de 10% est acceptable) et n'est pas non plus calculée très souvent (<1 / s).
Room
s soit toujours complet, et ce ne sera peut-être pas le cas si je demande au joueur de construire les Room
s en utilisant Segment
s. De plus, une fonction de pièce fermée est facile à définir (il suffit de parcourir les Segment
s et de s'assurer qu'ils créent une pièce).
Room
de contenir une liste dePoint
s, puis d'obtenir les segments en connectant chaque point ensemble, puis en le bouclant. Sinon, avec votre configuration actuelle, il est très à l'est d'obtenir des valeurs incorrectes (par exemple une pièce non fermée, une pièce avec un mur au milieu, etc.). Ce serait la meilleure option.