2013-02-24 1 views
0

Disons que j'ai 9 points sur un plan et l'image suivante montre la séquence par laquelle j'ai mis des lignes (sommets) sur ces points.Rechercher si la quatrième ligne forme une forme à quatre côtés

5/9 points connected

et je garde la trace des points et des lignes à la fois séparément dans un vecteur. Et maintenant, je mets une autre ligne (qui peut être partout), mais voici ce simple ressemble maintenant

6th point connected

Comment puis-je savoir que 6e sommet (ou a récemment ajouté le sommet) fait quatre boîte face (n » Je dois être juste carré, tant qu'ils font une boîte fermée, c'est tout).

Je comprends que trouver la distance entre deux lignes/sommets peut être un bon début, mais quelqu'un peut-il expliquer comment cela va se passer?

Répondre

1

Étiquette les points:

a b c 
d e f 
g h i 

Donc, la ligne 1 se branche (A-D), la ligne 2 se connecte (d-e), et ainsi de suite. Lorsque vous ajoutez des lignes, conservez des listes de points connectés. Ainsi, après avoir ajouté la ligne 4, les listes sont {a, d, e} et {g, h, i}. La ligne 5 se connecte (e-h), donc elle fusionne les listes en {a, d, e, g, h, i}. Puis la ligne 6 connecte (d-g), deux points qui sont déjà dans une liste, donc il doit former une boucle fermée.

+0

Il n'est pas clair pour moi s'il y a des contraintes supplémentaires en jeu ici, mais, en fonction des figures de l'exemple, il pourrait y avoir. S'il y a une contrainte que la boîte soit à 4 côtés (plutôt que à n côtés), il peut être nécessaire d'ajouter un test supplémentaire pour vérifier cette contrainte. De plus, s'il existe une contrainte que la boucle contienne une zone non nulle, il peut être nécessaire de vérifier qu'il n'y a pas de points intermédiaires répétés (comme abcba, qui formerait une boucle fermée ne contenant aucune zone) ou que les lignes de la figure ne se croise pas à un point non marqué (p. ex. donner un chiffre en sablier). – Simon

Questions connexes