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, [...]