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:
Dois níveis:
Três níveis:
Quatro níveis:
Cinco níveis:
.. oito níveis:
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.
outubro 23rd, 2011 → 1:24
[...] último post, mostrei uma técnica para geração do triângulo de Sierpinski através de uma curva. Agora, [...]