Come imballare i poligoni all'interno di un altro poligono?


20

Ho ordinato alcuni fogli di cuoio da cui vorrei costruire palle da giocoliere cucendo i bordi insieme. Sto usando i solidi platonici per la forma delle sfere.

Posso scansionare i fogli di cuoio e generare un poligono che si avvicina alla forma del foglio di cuoio (come sai, è pelle di animale e non arriva in rettangoli).

Quindi ora vorrei massimizzare le dimensioni della mia palla da giocoliere.

Nel mio esempio, i poligoni sono regolari, ma sto cercando una soluzione con poligoni semplici.

Qual è il fattore di scala più grande che posso applicare ai miei poligoni in modo che si adattino tutti all'interno del foglio?

Sto cercando di ridurre al minimo gli sprechi usando quanto più materiale possibile.

Ovviamente, tagliare la rete di poliedri in singolo poligono aumenterà lo spazio della possibile combinazione, ma diminuirà anche la qualità della geometria finale, poiché sono coinvolti più punti di cucitura e errori accumulati. Ma questa domanda non riguarda l'enumerazione dei diversi modi di dispiegare un poliedro. Possono essere considerati in modo indipendente. Quindi i poligoni sono poligoni semplici.

formalmente:

Ingresso:

  • P : un poligono semplice (il bersaglio)
  • S : l'insieme di poligoni che voglio posizionare
  • n SG : un grafico di poligoni semplici - ogni nodo rappresenta un poligono semplice in , e c'è un bordo tra ogni coppia di poligoni che condividono un bordo comune nS
  • α>=0,β>=0 (utilizzo di materiale e connettività)

Produzione:

  • un fattore di scalaf
  • GH , un sottografo diG
  • V ( G )Loc : una posizione e un angolo per ciascun poligono inV(G)
  • una misura della qualità della soluzione:m = α . f + β . | E ( H ) |mm=α.f+β.|E(H)||E(G)|

Massimizza soggetto a queste condizioni:m

  • |V(H)|=|V(G)| (1)
  • |E(H)|<=|E(G)| (2)
  • per ogni poligono in , ridimensionato di un fattore nella posizione è all'interno di (3) S S i f L o c ( S i ) PSiSSifLoc(Si)P
  • i poligoni in non si sovrappongono (4)V(H)

(V (G) sono i vertici nel grafico e S è l'insieme di poligoni, ma descrivono lo stesso insieme di oggetti. Forse esiste un modo più compatto per farlo.)

Spiegazione delle condizioni:

  • (1) Voglio che tutti i poligoni siano nel layout finale
  • (2) Alcuni collegamenti potrebbero essere interrotti, se necessario
  • (3) (4) la palla è in pelle

Ecco il poligono bersaglio Foglio di cuoio

Ecco il set di poligoni che voglio mettere in valigia: Rete in poliedro


Stai parlando di poligoni convessi che vuoi ritagliare?
A.Schulz,

Nel mio caso i poligoni sono regolari, perché sono le facce dei solidi platonici. Ma dovrebbe funzionare anche il confezionamento di poligoni semplici. Perché vuoi sapere se i poligoni che voglio imballare sono convessi?
alecail

1
Se i poligoni non sono convessi, è sempre possibile posizionare un singolo poligono non convesso all'interno del poligono originale senza taglio. Quindi questa domanda non avrebbe senso per i poligoni generali.
A.Schulz,

Non so se questo è importante o no, ma il poligono di delimitazione (in pelle) è convesso o può essere anche concavo?
Paresh,

4
Anche il problema molto più semplice di impacchettare il numero massimo di quadrati in un quadrato risulta difficile (scusate, non ho un collegamento a portata di mano, ma siamo inciampati in una discussione di questo alcuni mesi fa). Basta destreggiarsi tra i poligoni a mano, probabilmente non saresti troppo lontano dall'ottimale.
vonbrand,

Risposte:


3

Questo appartiene a una classe di ottimizzazione dei problemi chiamata problemi di imballaggio . Nel tuo caso, invece di un normale poligono come contenitore, ne hai uno irregolare, ma l'idea rimane la stessa.
Questi problemi di ottimizzazione sono di solito NP-difficili, quindi non credo che ci sia un modo semplice per ottenere la soluzione esatta e provare tutte le combinazioni sarebbe troppo costoso.
Ci sono alcune persone interessate a questo tipo di problemi; Ho trovato questo link di alcuni problemi di imballaggio specifici risolti: http://www2.stetson.edu/~efriedma/packing.html

Il modo più semplice che vedo è definire un centro approssimativo del foglio di cuoio, spostare lì l'insieme di poligoni e, scalando su e giù e controllando se l'insieme di poligoni è o meno all'interno del poligono bersaglio, per ottenere un fattore di scala sempre più vicino 'f' per l'insieme desiderato di poligoni.

Ma, a meno che non usiate questo fattore per una produzione di palle da giocoleria su larga scala, probabilmente farlo a mano sarebbe abbastanza.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.