O Chaos Game é um método simples para gerar fractais. Dado um ponto de partida, uma proporção de comprimento r e um conjunto de pontos 2D, faça o seguinte:
- No seu conjunto de pontos, escolha um aleatoriamente (uniformemente).
- Calcule a média desse ponto e o último ponto desenhado (ou o ponto inicial) usando r e 1 - r como pesos (ou seja, r = 0 significa que você obtém o ponto de partida, r = 1 significa que você obtém o ponto aleatório er = 0,5 significa que você entre no meio do caminho.)
- Desenhe o ponto resultante.
Por exemplo, se você escolher os vértices de um triângulo equilátero er = 0,5 , os pontos plotados mapearão um triângulo de Sierpinski:
Imagem encontrada na Wikipedia
Você deve escrever um programa ou função que "reproduza" o jogo do caos para criar um fractal.
Entrada
Você pode escrever um programa ou uma função e receber as seguintes entradas via ARGV, STDIN ou argumento da função:
- O número de pontos a serem plotados.
- A coordenada inicial (que também deve ser plotada!).
- O peso médio r no intervalo [0,1] .
- Uma lista de pontos para escolher.
Saída
Você pode renderizar na tela ou gravar um arquivo de imagem. Se o resultado for rasterizado, ele precisará ter pelo menos 600 pixels de cada lado, todos os pontos deverão estar na tela e pelo menos 75% da extensão horizontal e vertical da imagem deverão ser usados para pontos (isso é para evitar respostas com um único pixel preto dizendo "está muito longe"). O x e y eixo deve estar na mesma escala (que é a linha de (0,0) para (1,1) deve estar a um ângulo de 45 graus) e cada ponto representado no jogo caos deve ser representada como uma única pixel (se o seu método de plotagem suavizar o ponto, ele pode ser espalhado por 2x2 pixels).
As cores são a sua escolha, mas você precisa de pelo menos duas cores distinguíveis: uma para o fundo e outra para os pontos plotados durante o jogo do caos. Você pode, mas não precisa plotar os pontos de entrada.
Inclua três exemplos de resultados interessantes em sua resposta.
Pontuação
Isso é código de golfe, então a resposta mais curta (em bytes) vence.
Editar: você não precisa mais plotar os pontos de entrada, pois eles não são realmente visíveis como pixels únicos de qualquer maneira.