Considera una regione (2D) piena di linee in modo casuale (figura seguente). Siamo interessati a riempire gli spazi vuoti tra le linee, inclusi quattro bordi di confine in un modo:
0- massimizzare la dimensione dei pacchi;
1- la forma dei pacchi di riempimento è allineata quadrata orizzontalmente o verticalmente;
2- la forma dei pacchi di riempimento è quadrata, ovvero allineamento rilassato ;
3- la forma dei pacchi di riempimento è qualsiasi quadrangolo. la nostra domanda originale
Quindi per ora ci sono tre diversi scenari.
Si noti che le linee sono del [x1,y1,x2,y2]
set di punti del modulo , numeri reali.
[* * *] Le idee su possibili soluzioni / algoritmi / frammenti di codice / ecc. Sono più che benvenute.
Aggiornamento 1: potremmo gestire una soluzione per il primo caso: i
passaggi sono:
1- linee
2- rasterizzazione delle linee in una bitmap
3- ricerca nelle celle vicine per ogni cella del colore desiderato (cioè lo stesso colore) con una funzione obiettiva per massimizzare l'area, cioè il numero di celle.
Funziona bene ma copre solo il primo scenario ed è anche lento.
Aggiornamento 2:
abbiamo ipotizzato che il lettore abbia familiarità con il concetto di spazio-riempimento-piastrellatura. Puoi seguire il link per l'ispirazione. Tuttavia, nota che il nostro problema è diverso. Poiché non riempiamo lo spazio vuoto in modo casuale e non scegliamo le dimensioni in modo casuale. La soluzione dovrebbe essere iterativa. Per tutti i casi, non vi è alcun limite al numero di pacchi da montare. In effetti, spetta all'utente limitare il numero di iterazione, scegliendo ad esempio un'area minima per i pacchi. Ciò è evidente nell'esempio sopra riportato in cui abbiamo discretizzato le linee in pixel con dimensioni specificate. In altre parole, la procedura deve essere eseguita fino a quando l'intera area vuota viene riempita rispettando il criterio, ad esempio l'area massima dei pacchi.
Aggiornamento 3:
riepilogo:
una domanda è scoprire la distribuzione di blocchi "rock" intatti estraibili in una "miniera" fortemente fratturata. Questo potrebbe essere molto utile per molti aspetti, tra cui la progettazione di perforazione, la valutazione finanziaria, ecc
Descrizione:
Per una miniera di roccia decorativa (pietra) i prodotti che sono i blocchi di rocce intatte taglio come cubetti rettangolari il prezzo è strettamente dipendente alle dimensioni del bloccare. L'estrazione di un blocco da un'area adatta, cioè senza fratture maggiori, sarà desiderata se la quantità di parti rimanenti è la più piccola possibile. Di solito, i piccoli pezzi di roccia non hanno un valore economico relativamente e sono considerati rifiuti.
La domanda in questo post indaga soluzioni per questo tipo di problema.
Una vista matematica per il problema può essere dichiarata come segue:
2D: trova tutti i rettangoli che potrebbero essere estratti da una determinata regione 2D con alcune linee ottimizzate per dimensioni rettangolari maggiori possibili.
3D: trova tutti i cubi rettangolari che potrebbero essere estratti da una determinata regione 3D con alcuni sottopiani (meglio: poligoni) ottimizzati per la dimensione del blocco più grande possibile.
Poiché questo fa parte di una ricerca in corso, alcune delle domande poste nei commenti seguenti non hanno alcune risposte che possiamo fornire. Riteniamo che le informazioni fornite qui finora siano effettivamente sufficienti per ottenere un quadro generale del problema. Tuttavia, forniamo alcuni dettagli possibili per i benefici della comunità.
Puoi porre alcune restrizioni alla soluzione per la domanda finale, anche se riteniamo che sia sempre possibile aggiungerne altre in seguito. Ad esempio, segui questi: {caso 2D}
La migliore dimensione di un blocco (rettangolo economicamente ottimale) da estrarre nelle condizioni sopra menzionate, è 1x1 m
data 10x10 m
per la regione nell'esempio. Questo è un vincolo definito in base al valore economico. La dimensione minima lavorabile per il taglio ecc., Sia0.15x0.15 m
; quindi questo è il limite della seconda dimensione.
La figura sopra mostra la funzione del valore economico in base alla dimensione del blocco. Quindi, per questo caso particolare, ogni pezzo di roccia più piccolo di quello 0.15x0.15 m
è solo uno spreco. Non ci saranno blocchi di dimensioni maggiori di quelle 1.7x1.7 m
dovute a limiti operativi.