Procédé pour combiner des carrés de tuiles définis comme des points dans des vecteurs

StackOverflow https://stackoverflow.com/questions/2482756

  •  21-09-2019
  •  | 
  •  

Question

Si carrés de tuiles I, et les places peuvent être définis par leurs coordonnées, comment puis-je simplifier les formes en plusieurs carrés dans des vecteurs qui définissent chaque bord de la forme entière? Pseudo-code ou conditions générales sont très bien.

Était-ce utile?

La solution

La première chose que je peux penser est (probablement pas la façon la plus efficace):

1) Obtenir la zone de délimitation de votre carrelage ensemble - qui est min (x), min (y) max (x), max (y) pour tous les x et y de vos tuiles

2) Pour chaque ligne, commencez par STATE == VIDES, itérer sur chaque colonne: Les changements d'état à PLEINE lorsque vous appuyez sur un carré et videz lorsque vous trouvez un trou. Chaque État le temps passe de vide à plein, enregistrez le segment de droite à gauche de cette place et chaque fois ÉTAT va de plein à VIDER, sauf le droit segment de ligne de main de cette place.

3) Répéter ci-dessus dans l'axe Y

Maintenant, vous avez un ensemble contenant uniquement les segments de plus à l'extérieur, vous pouvez combiner ceux qui sont colinéaires etc et obtenir la forme générale.

Cela fonctionne pour les formes non-convexes et aussi si vous avez des trous dans votre carrelage.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top