Dado um número inteiro N> = 2, produza uma imagem mostrando um nó Sierpiński de grau N.
Por exemplo, aqui estão os nós dos graus 2, 3, 4 e 5:
Clique nas imagens para ver em tamanho maior (quanto maior o grau, maior a imagem).
Especificação
- Um nó Sierpiński de grau N é desenhado usando os vértices de um triângulo Sierpiński de grau N como pontos de orientação. Um triângulo de Sierpiński de grau N são três triângulos de Sierpiński de grau N-1 dispostos em um triângulo maior. Um triângulo de Sierpiński de grau 0 é um triângulo equilátero.
- Os menores triângulos componentes têm comprimento lateral 64, dando ao triângulo de Sierpiński no qual o nó se baseia um comprimento lateral total de
- O centro do triângulo externo está posicionado no centro da imagem. Isso não fornece espaço em branco igual na parte superior e inferior.
- A saída é uma imagem quadrada do comprimento do lado onde é
ceiling(x)
, o menor número inteiro maior do que ou igual a x. Isso é grande o suficiente para que o vértice superior do triângulo de Sierpiński subjacente fique contido na imagem quando o centro do triângulo estiver no centro da imagem. - A curva única deve passar por cima e por baixo de si mesma, estritamente alternando. As soluções podem escolher entre abaixo e depois ou mais ou menos.
- As imagens de exemplo mostram o primeiro plano preto e o fundo branco. Você pode escolher duas cores facilmente distinguíveis. Anti-aliasing é permitido, mas não necessário.
- Não deve haver espaços onde dois arcos se encontram ou onde a curva passa por cima ou por baixo de si mesma.
- A saída pode ser para qualquer arquivo de imagem no formato raster ou para qualquer arquivo de imagem no formato vetorial que inclua o tamanho de exibição padrão correto. Se você exibir diretamente na tela, ele deverá estar em um formato que permita a rolagem para ver a imagem inteira quando maior que a tela.
Determinação do centro, raio e espessura do arco
- O nó é construído como uma série de arcos circulares que se encontram em pontos onde suas tangentes são paralelas, para proporcionar uma junção perfeita. Esses arcos são exibidos como setores anulares (arcos com espessura).
- Os centros desses arcos são os vértices dos menores triângulos de cabeça para baixo. Cada um desses vértices é o centro de exatamente um arco.
- Cada arco tem um raio de
- A exceção é que os arcos nos três triângulos mais externos (nos cantos do triângulo maior) têm um centro que é o ponto médio dos dois vértices internos adjacentes e, portanto, têm um raio de
- Cada arco é representado com uma espessura total (diferença entre o raio interno e o raio externo) e as bordas pretas deste têm uma espessura de A curva deve ter essas bordas e não apenas uma faixa sólida.
Unidades de medida
- Todas as distâncias estão em pixels (1 é a distância horizontal ou vertical entre 2 pixels adjacentes).
- A raiz quadrada de 3 deve ter precisão de 7 algarismos significativos. Ou seja, seus cálculos devem ser equivalentes ao uso de um ROOT3 para que
1.7320505 <= ROOT3 < 1.7320515
Pontuação
O código mais curto em bytes vence.
Para quem se pergunta, N = 0 e N = 1 não estão incluídos porque correspondem a um círculo e um trevo, que não correspondem exatamente ao padrão que se aplica a N> = 2. Eu esperava que a maioria das abordagens para esse desafio precisasse adicionar código de caso especial para 0 e 1, então decidi omiti-las.
stroke-width:3.464102
parecido é um pouco excessivo se a ideia era obter precisão de 1 pixel. Vou seguir em frente e incluí-lo assim, se essa é a decisão.