Fractals and Tiles (com html5) –Parte 4 –Sierpinski Gasket Curve

Posted on 22/10/2011

1


Olá pessoal, tudo certo?!

Nesse post, mostro uma técnica para geração do triângulo de Sierpinski através de uma curva. Trata-se de um método pouco usual (a prática comum é desenhar um triângulo e apagar partes sucessivamente).

O código que utilizo aqui é derivado daquele que mostrei no post anterior. Por isso, nesse post, explico apenas o código central.

Live demo: http://users.cjb.net/livedemoelemarjr/sierpinski.htm

Código-fonte completo: https://gist.github.com/1306370

Vendo o avanço da curva

Sierpinski gasket curve é obitda pela execução de uma rotina extremamente simples, baseado em recursão. Como usual, temos um resultado mais “detalhado” conforme avançamos em profunidade. Acompanhe:

Um nível:

image

Dois níveis:

image

Três níveis:

image

Quatro níveis:

image

Cinco níveis:

image

.. oito níveis:

image

Código para geração da curva

Como disse, essa curva é conseguida facilmente. Veja o código fundamental:


              
function sierpinski(depth, theta, dist, turn) {
    if (depth > 0) {
        sierpinski(depth - 1, theta + turn, dist / 2, -turn);
        sierpinski(depth - 1, theta, dist / 2, turn);
        sierpinski(depth - 1, theta - turn, dist / 2, -turn);
    }
    else {
        walk(dist * Math.cos(theta), dist * Math.sin(theta));
    }
}


function update() {
    with (context) {
        currentX = -getLength() / 2;
        currentY = -getLength() / 2;
        clearRect(0, 0, canvasWidth, canvasHeight);
        sierpinski(getDepth(), 0, getLength(), DTR(60));
    }

    drawZero();
}

            

Era isso.

Smiley piscando

Posted in: Post