Imagem De Um Losango - Exemplos De Um Losango Na Vida Real
Exemplos De Um Losango Na Vida Real

Gerar uma imagem de um losango em SVG

Eu gasto bastante tempo criando formas geométricas em SVG para plots técnicos e diagrams de engenharia. A maioria das pessoas que precisa de uma imagem de um losango cai na armadilha de tentar usar ferramentas de desenho genéricas e acaba com vetores mal fechados ou proporções distorcidas. O caminho mais limpo é escrever o caminho diretamente no código. Um losango é um quadrilátero com os quatro lados iguais. A propriedade mais útil na prática é que as diagonais são perpendiculares e se cortam ao meio. Isso significa que, se você conhece o comprimento das duas diagonais d1 e d2, os vértices ficam determinados em O((d1/2), 0), (0, d2/2), (-d1/2, 0), (0, -d2/2) num sistema de coordenadas centrado na origem. Na prática eu centro o losango dentro de um viewBox de 200x200, então o fator de escala fica sendo 100 dividido pelo maior diâmetro desejado.

O que eu realmente uso para gerar uma imagem de um losango

O snippet que eu copio e colei há anos é este aqui:

👉 Clique no botão abaixo para saber mais sobre o assunto!


  

Isso gera um losango com diagonais verticais de 180 px e horizontais de 180 px — um losango perfeitamente simétrico, ou seja, um quadrado rotacionado 45 graus. Se você quer um losango mais alto, ajuste os valores: por exemplo, pontos="100,10 160,100 100,190 40,100" dá uma diagonal horizontal de 120 px e vertical de 180 px. O atributo stroke-linejoin="miter" é importante. Sem ele, cantos muito agudos se tornam arredondados pelo browsers padrão, e o losango perde aquela aparencia nítida que diagrams técnicos exigem. Eu sempre coloco esse atributo explicitamente, senão o resultado varia entre Chrome e Firefox em casos de ângulos abaixo de 30 graus.

Umapegadinha que eu levei umas três vezes antes de resolver: se você precisar de preenchimento sólido, não use apenas fill="#fff" sem border. OStroke e o fill são camadas separadas no renderizador. O que acontece é que o stroke é desenhado centralizado na borda do polígono, então metade da espessura fica para dentro e metade para fora. Se o seu viewBox for justo, os cantos podem ser cortados pelo overflow. A solução que eu adotei foi expandir o viewBox em 4 px em cada lado quando o stroke-width for 2 ou mais. Outro detalhe que os tutoriais geralmente ignoram: se você precisa exportar para PNG a partir do SVG, o rasterizador do browser aplica anti-aliasing nos cantos. Para uma imagem técnica pura, o que funciona melhor é usar polygon com points exatos e depois rasterizar via um headless browser com dpr=2, ou então usar uma biblioteca como CairoSVG com o flag --dithering disabled. O resultado sai com bordas mais duras, o que importa se o losango vai aparecer em um diagrama de fluxo impresso em preto e branco.

Se o seu caso é só colocar uma imagem de um losango num slide ou num relatório rápido, o snippet acima basta. Se você está construindo um gerador automático de diagramas que precisa variar diagonal e cor dinamicamente, vale a pena envolver o SVG num template JINJA ou num pequeno script Python que calcule os pontos a partir das dimensões desejadas. O cálculo em si é trivial, mas o custo de manutenção de um script dedicado compensa quando o volume de figuras sobe acima de dez por semana. Limitações reais: SVG com polygon não suporta deformações suaves tipo "esticar" o losango mantendo vértices alinhados. Se você precisar de uma animação de morphing entre losango e retângulo, a abordagem certa é usar path com curvas Bézier ou, melhor ainda, um formato vetorial como PDF com transformações afins. O losango em SVG puro é estático e pronto.