domingo, 11 de dezembro de 2016

Mandala (javascript)




<html>
<head>
<script>

    // escreva tudo isso em vermelho no bloco de notas e salve com o nome de script.html
    // Atenção! Não é pra salvar com o nome de script.html.txt
    // se vc ver o símbolo do navegador no arquivo é pq deu certo.
    // Se vc ver o símbolo do bloco de notas é pq vc não sabe mudar a
    // extensão do arquivo.
    // se não souber como faz pra mudar a extensão do arquivo: procura no google
    // lembre-se dos espaços e das quebras de linha.

    manterLimites = function(angulo)
    {
        while(angulo>=360)
        {
            angulo=angulo-360;
        }
        while(angulo<0)
        {
            angulo=angulo+360
        }
        return angulo;
    }

    getSenCos = function(angulo)
    {   
        angulo = manterLimites(angulo);
        seno =    Math.sin(angulo * Math.PI / 180);
        cose =    Math.cos(angulo * Math.PI / 180);
        return [cose, seno];
    }

    arvores_mandala = new Image()
    arvores_mandala.src = "arvores_mandala.png"
    arvores = function(ctx, x1, y1, tamanho, angulo, poda, stroke)
    {
        var senCos= getSenCos(angulo)   
        var tx = x1+tamanho*senCos[0]
        var ty = y1+tamanho*senCos[1]
        ctx.lineWidth = 1;   
        ctx.beginPath();
        r = 0.5;
        if( poda>1 )
        {
            // momento em que acrescentamos novos ramos (Novas somas)
            arvores (ctx, tx, ty, tamanho*r,    angulo+90,poda-1 , stroke)
            arvores (ctx, tx, ty, tamanho*r,    angulo, poda-1 , stroke)
            arvores (ctx, tx, ty, tamanho*r,    angulo-90,poda-1 , stroke)
            arvores (ctx, tx, ty, tamanho*r,    angulo+180,poda-2 , stroke)
        }
    else
    {
        //Arvores
        ctx.drawImage(arvores_mandala,tx, ty);
    }
    }

    tijolos = new Image()
    tijolos.src = "tijolos.png"
    colunas = function(ctx, x1, y1, tamanho, angulo, poda, stroke)
    {
        var senCos= getSenCos(angulo)   
        var tx = x1+tamanho*senCos[0]
        var ty = y1+tamanho*senCos[1]
        ctx.lineWidth = 1;
        ctx.beginPath();
        r = 0.5;
        if( poda>1 )
        {
            // momento em que acrescentamos novos ramos (Novas somas)
            colunas (ctx, tx, ty, tamanho*r,    angulo+90,poda-1 , stroke)
            colunas (ctx, tx, ty, tamanho*r,    angulo, poda-1 , stroke)
            colunas (ctx, tx, ty, tamanho*r,    angulo-90,poda-1 , stroke)
            arvores (ctx, tx, ty, tamanho*r,    angulo+180,poda-2 , stroke)
        }
    else
    {
        //tijolos
        ctx.drawImage(tijolos,tx, ty);
    }
    }

    mandala = function(t)
    {
        var c = document.getElementById("myCanvas");
        var ctx = c.getContext("2d");
        //filhos
        colunas (ctx, 320, 320, 228,    0+45 , t, "#FF0000");
        colunas (ctx, 320, 320, 228,    90+45 , t, "#FF0000");
        colunas (ctx, 320, 320, 228,    180+45 , t, "#FF0000");
        colunas (ctx, 320, 320, 228,    270+45 , t, "#FF0000");
    }

    gramado = function( color )
    {
        var c = document.getElementById("myCanvas");
        var ctx = c.getContext("2d");
        ctx.fillStyle=color;
        ctx.fillRect(0,0,660,660);
    }

    load = function()
    {
        gramado ("#006600")
        mandala(5)
    }

</script>
</head>
<body onload="load();">
<canvas id="myCanvas" width="660" height="660" style="border:1px solid #000000;">
</canvas>
</body>
</html>


Angkor camboja:


Nenhum comentário: