Considérons une région (2D) remplie de lignes au hasard (suivant la figure). Nous sommes intéressés à remplir les espaces vides entre les lignes, y compris quatre bords de limite d'une manière:
0- maximiser la taille des colis;
1- la forme des colis de remplissage est alignée en carré horizontalement ou verticalement;
2- la forme du remplissage des colis est carrée, c'est-à-dire un alignement détendu ;
3- La forme de remplissage des colis est un quadrilatère. notre question d'origine
Donc, pour l'instant, il existe trois scénarios différents.
Notez que les lignes sont du [x1,y1,x2,y2]
jeu de points de formulaire , des nombres réels.
[* * *] Les idées de solutions / algorithmes / extraits de code / etc possibles sont les bienvenues.
Mise à jour 1: Nous pourrions gérer une solution pour le premier cas: Les
étapes sont:
1- lignes
2- rastériser les lignes dans un bitmap
3- rechercher des cellules voisines pour chaque cellule de la couleur désirée (c'est-à-dire la même couleur) avec une fonction objective pour maximiser la zone, c'est-à-dire le nombre de cellules.
Cela fonctionne bien mais il ne couvre que le premier scénario et il est également lent.
Mise à jour 2:
Nous avons supposé que le lecteur connaissait le concept de remplissage d'espace-carrelage. Vous pouvez suivre le lien pour l'inspiration. Notez cependant que notre problème est différent. Comme nous ne remplissons pas l'espace vide au hasard et nous ne choisissons pas la taille au hasard. La solution doit être itérative. Dans tous les cas, il n'y a pas de limite au nombre de colis à monter. En effet, il appartient à l'utilisateur de limiter le nombre d'itérations, en choisissant par exemple une zone minimale pour les parcelles. Cela est évident dans l'exemple donné ci-dessus dans lequel nous avons discrétisé des lignes en pixels avec une taille spécifiée. Autrement dit, la procédure doit être exécutée jusqu'à ce que toute la zone vide soit remplie en respectant le critère, par exemple, la superficie maximale des parcelles.
Mise à jour 3:
résumé:
Une application consiste à découvrir la distribution de blocs de «roche» intacts extractibles dans une «mine» fortement fracturée. Cela pourrait être très utile pour de nombreux aspects , y compris la conception de forage, évaluation financière , etc.
Description:
Pour une mine de roche décorative (pierre) les produits qui sont les blocs de roches intactes coupées en cubes rectangulaires le prix dépend étroitement de la taille de la bloc. L'extraction d'un bloc à partir d'une zone appropriée, c'est-à-dire sans fracture majeure, sera souhaitée si la quantité de pièces restantes est aussi petite que possible. Habituellement, les petits morceaux de roches n'ont relativement aucune valeur économique et sont considérés comme des déchets.
La question dans ce post étudie les solutions à ce type de problème.
Une vue mathématique du problème peut être formulée comme suit:
2D: Trouvez tous les rectangles qui pourraient être extraits d'une région 2D donnée avec quelques lignes optimisées pour une plus grande taille de rectangle possible.
3D: trouvez tous les cubes rectangulaires qui pourraient être extraits d'une région 3D donnée avec certains sous-plans (mieux: polygones) optimisés pour une plus grande taille de bloc possible.
Comme cela fait partie d'une recherche en cours, certaines des questions posées dans les commentaires ci-dessous n'ont pas certaines réponses que nous pouvons apporter. Nous pensons que les informations fournies jusqu'ici sont en effet suffisantes pour obtenir une image globale du problème. Néanmoins, nous fournissons certains détails que nous pouvons pour les avantages pour la communauté.
Vous pouvez imposer certaines restrictions à la solution de la question ultime, bien que nous pensons qu'il soit toujours possible d'en ajouter d'autres plus tard. Par exemple, suivez ces instructions: {Cas 2D}
La meilleure taille d'un bloc (rectangle économiquement optimal) à extraire dans les conditions mentionnées ci-dessus, est 1x1 m
donnée 10x10 m
pour la région dans l'exemple. Il s'agit d'une contrainte définie en fonction de la valeur économique. La taille minimale réalisable pour la coupe, etc., soit0.15x0.15 m
; c'est donc la deuxième limite de taille.
La figure ci-dessus montre la fonction de valeur économique en fonction de la taille du bloc. Donc, pour ce cas particulier, chaque morceau de roche est plus petit que les 0.15x0.15 m
déchets. Il n'y aura pas de taille de bloc plus grande qu'en 1.7x1.7 m
raison des limites de fonctionnement.
Réponses:
J'ai une idée de la façon dont vous travaillez itérativement des gros blocs aux blocs plus petits en utilisant FME (par Safe Software.) Pour mémoire, je ne travaille pas pour eux mais semble féliciter suffisamment leur outil ...
Rincez et répétez autant de fois que nécessaire en utilisant des carreaux plus petits à chaque fois. J'ai attaché le début d'un établi que j'utiliserais comme une approche.
Sur la base de votre description (bien détaillée), cela ne fonctionnera qu'avec votre option 1 pour l'instant. Sans consacrer trop de temps pour l'instant.
Quoi qu'il en soit, ce n'est qu'une approche que je commencerais par au moins filtrer le blé de l'ivraie.
la source