Como criar um padrão ou blocos de elementos girados

7

Eu tenho um padrão geométrico - digamos, uma cruz:

Símbolo elementar a ser repetido

O que eu quero repetir com alguma sobreposição e lado a lado ... fácil:

Repita o padrão com o bloco da unidade marcado

O quadrado azul marca o bloco da unidade de 100 × 100 px.

No entanto, aqui está o problema: eu quero girar a imagem em cerca de 30 ° e depois colocá-la em mosaico. Isso se mostrou surpreendentemente difícil; é claro que é fácil girar a imagem - mas encontrar um bloco de unidade perpendicular (o bloco azul na imagem acima) não é:

Padrão de repetição girado

Claramente, o ladrilho da unidade 100 × 100 não será suficiente. Como escolho o bloco de unidades correto? A posição presumivelmente não importa, apenas o tamanho é importante, mas não sei como calcular isso. Intuitivamente, espero que o ângulo de rotação e o produto escalar apresentem uma forte carga, mas isso é o máximo que obtive 1 . O que é pior, a rotação para ângulos arbitrários não é exata devido à discrição inerente dos pixels, por isso, mesmo que eu calcule o tamanho matematicamente correto, não resultará necessariamente em um bloco sem costura.

Então, como posso calcular uma combinação ideal de ângulo / tamanho, considerando o tamanho da célula unitária perpendicular (aqui, 100 × 100) e um ângulo desejado aproximado?


1 Meu pensamento era que (usando a notação da Wikipedia), já que queremos que a projeção de A em B seja tão longa quanto B, temos | B | = | A | · cosϑ e, portanto, | A | = | B | / cosϑ . O que, no meu caso, produziria o novo comprimento | A | = 115.470, mas uma tentativa simples mostra que isso não pode ser corrigido a longo prazo, além de gerar um número não integral feio. De fato, apenas olhando para a imagem girada acima, podemos ver que a imagem inteira de 200 × 400 não contém uma unidade perpendicular repetida.

Konrad Rudolph
fonte
Pode-se padrões realmente giram em ilustrador
joojaa

Respostas:

7

Achei isso útil : Crie padrões inclináveis ​​girados

Como você mencionou, há matemática envolvida que está muito além do meu entendimento, portanto, trarei apenas alguns dos princípios relacionados ao design.

Basicamente, a 'solução' seria:

  • Pegue uma textura não rotacionada e inclinável que se repita horizontal e verticalmente.
  • Coloque-o em mosaico para uma imagem grande.
  • Gire a imagem grande no ângulo desejado.
  • Encontre o tamanho da menor unidade repetível dessa textura girada (usando a matemática abaixo).
  • Corte a imagem grande no tamanho da unidade repetível.

A imagem abaixo mostra uma textura girada que foi formada lado a lado o padrão não rotacionado original e depois girando o mosaico resultante. O texel básico não rotacionado é destacado e possui largura we altura h. O ângulo de rotação é o ângulo agudo formado pela linha w com a horizontal:

insira a descrição da imagem aqui

Como queremos ângulos agudos, se você estiver girando na outra direção, o diagrama acima terá a seguinte aparência:

insira a descrição da imagem aqui

O tamanho da imagem (w 'x h') necessário para tornar a textura inclinável pode ser encontrado da seguinte maneira:

insira a descrição da imagem aqui

insira a descrição da imagem aqui

A explicação continua um pouco mais; portanto, se você achou útil, sinta-se à vontade para editar a resposta (ou publicar uma nova).

Yisela
fonte
É reconfortante que minha abordagem tenha sido amplamente correta, pelo menos, mesmo que não tenha ido longe o suficiente.
amigos estão dizendo
Curiosamente, toda essa teoria não dá em nada, porque aparentemente o Inkscape não funciona como um pixel perfeito, de modo que, embora eu tenha criado o padrão usando valores exatos e rotações matemáticas, o bitmap resultante ainda apresenta pequenas distorções, impossibilitando a extração de blocos. :-(
Konrad Rudolph
2

Aqui está uma abordagem não matemática de quando eu precisava fazer coisas semelhantes:

  1. Faça uma área enorme do padrão (os ladrilhos não serão pequenos), gire conforme desejado.
  2. Escolha um local distinto visualmente simples (por exemplo, um canto do X)
  3. Faça com que uma linha de orientação horizontal e vertical atravesse esse ponto exato.
  4. Siga a linha horizontal até chegar a uma duplicata exata do ponto original na linha. Coloque uma guia vertical lá.
  5. Siga a linha vertical (ambas as linhas verticais devem cobrir o solo idêntico) até chegar a uma duplicata exata do ponto original. Coloque uma guia horizontal lá.

Agora você tem o que deve ser um retângulo de 4 linhas em torno do menor bloco possível (novamente, não será pequeno).

Depois, há um pouco de tentativa e erro frustrante para tornar o pixel perfeito, então você deve estar pronto para usar.

user56reinstatemonica8
fonte
Comecei a fazer isso, pensando "quão difícil pode ser"? Oh, foi um grande desafio, e eu falhei muito. Talvez meu ângulo estivesse errado ou minha técnica fosse ruim, mas minha tela era simplesmente ENORME. Desisti antes de descobrir o ponto mágico da padronização xD (cerca de 20x do meu tamanho original) - Edit: Example .
Yisela 7/04
Infelizmente esse método funcionará apenas para muito poucos ângulos de rotação específicos (veja o post vinculado na resposta de Yisela).
amigos estão dizendo