Como embalar polígonos dentro de outro polígono?

20

Encomendei algumas folhas de couro das quais gostaria de construir bolas de malabarismo costurando bordas. Estou usando os sólidos platônicos para o formato das bolas.

Posso digitalizar as folhas de couro e gerar um polígono que se aproxime da forma da folha de couro (como você sabe, é pele de animal e não vem em retângulos).

Então, agora, eu gostaria de maximizar o tamanho da minha bola de malabarismo.

No meu exemplo, os polígonos são regulares, mas estou procurando uma solução com polígonos simples.

Qual é o maior fator de escala que posso aplicar aos meus polígonos para que todos caibam dentro da folha?

Estou tentando minimizar o desperdício usando o máximo de material possível.

Obviamente, cortar a rede de poliedros em polígonos individuais aumentará o espaço da combinação possível, mas também diminuirá a qualidade da geometria final, porque há mais costura envolvida e erros acumulados. Mas essa questão não é sobre enumerar as diferentes maneiras de desdobrar um poliedro. Eles podem ser considerados independentemente. Portanto, os polígonos são polígonos simples.

Formalmente:

Entrada:

  • : um polígono simples (o alvo)P
  • : o conjunto de polígonos que quero colocarS
  • : um gráfico de n polígonos simples - cada nó representa um polígono simples em S e há uma aresta de aresta entre cada par de polígonos que compartilham uma aresta comum GnS
  • (uso de material e conectividade)α>=0,β>=0

Saída:

  • um fator de escala f
  • , um subgrafo de GHG
  • : uma localização e um ângulo para cada polígono em V ( G )LocV(G)
  • uma medida da qualidade da solução: m = α . f + β . | E ( H ) |mm=α.f+β.|E(H)||E(G)|

Maximize sujeito a estas condições:m

  • (1)|V(H)|=|V(G)|
  • 2)|E(H)|<=|E(G)|
  • para cada polígono em S , S i escalado por um fator f no local L o c ( S i ) está dentro de P (3)SiSSifLoc(Si)P
  • polígonos em não se sobrepõem (4)V(H)

(V (G) são os vértices no gráfico e S é o conjunto de polígonos, mas eles descrevem o mesmo conjunto de objetos. Talvez haja uma maneira mais compacta de fazer isso.)

Explicação das condições:

  • (1) Quero que todos os polígonos estejam no layout final
  • (2) Algumas conexões podem ser interrompidas se necessário
  • (3) (4) a bola é feita de couro

Aqui está o polígono de destino Folha de couro

Aqui está o conjunto de polígonos que quero compactar: Rede em poliedro

alecail
fonte
Você está falando sobre polígonos convexos que deseja cortar?
precisa saber é o seguinte
No meu caso, os polígonos são regulares, porque são os rostos dos sólidos platônicos. Mas empacotar polígonos simples também deve funcionar. Por que você quer saber se os polígonos que eu quero embalar são convexos?
Alecail #
1
Se os polígonos não forem convexos, você sempre poderá colocar um único polígono não convexo dentro do polígono original sem corte. Portanto, essa pergunta não faria sentido para polígonos gerais.
A.Schulz
Não sei se isso é importante ou não, mas o polígono delimitador (couro) é convexo ou também pode ser côncavo?
Paresh
4
Mesmo a muito problema mais simples de embalagem o número máximo de quadrados em um voltas quadrados a ser difícil (desculpe, não tenho um link útil, mas tropeçou em uma discussão sobre isso alguns meses atrás). Basta manipular os polígonos à mão, provavelmente você não estaria muito longe do ideal.
vonbrand

Respostas:

3

Isso pertence a uma classe de problemas de otimização chamada Problemas de embalagem . No seu caso, em vez de um polígono regular como contêiner, você tem um irregular, mas a ideia permanece a mesma.
Esses problemas de otimização geralmente são difíceis de NP, então não acho que exista uma maneira fácil de obter a solução exata e tentar todas as combinações seria muito caro.
Existem algumas pessoas interessadas neste tipo de problemas; Encontrei este link com alguns problemas específicos de embalagem resolvidos: http://www2.stetson.edu/~efriedma/packing.html

A maneira mais fácil que eu vejo é definir um centro aproximado da chapa de couro, mover o conjunto de polígonos para lá e, escalando para cima e para baixo e verificando se o conjunto de polígonos está ou não dentro do polígono de destino, para obter um fator de escala cada vez mais próximo 'f' para o conjunto de polígonos desejado.

Mas, a menos que você use esse fator para uma produção em larga escala de bolas de malabarismo, provavelmente fazê-lo manualmente seria o bastante.

Akronix
fonte