Processing Recursion#3 Triangles

Не опять, а снова.

by schrodingers

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/processing.js/1.4.15/processing.js"></script>
<canvas></canvas>

CSS

body {
    overflow: hidden;
    margin: 0;
    padding: 0;
}
</style> <script type="text/javascript"> window.addEventListener('load', function() {
    var scripts=document.body.getElementsByTagName('script');
    var canvases=document.body.getElementsByTagName('canvas');
    new Processing(canvases[0], scripts[0].text);
}
, false);
 // Here prevent javascript in body from throwing error </script> <style>

JavaScript

/* 
 title: Recursion#3 (Triangles)
 date: 2015-07-23
 */

float cx = width / 2;
float cy = height / 2;
PVector p1;
PVector p2;
PVector p3;

float l = 300;
float num = 7;
float x = 0;
float y = 0;

float h = 300; // side length
//float hh = (300 * sqrt(3.0) / 2.0); //tr height

void setup() {
    size(600, 600);
    smooth(8);
    noLoop();
}
void draw() {
    fill(33);
    //   triangle(p1.x, p1.y, p2.x, p2.y, p3.x, p3.y);  
    //   sierp(4, p1, p2, p3);
    tria(100, 160, 300, 5);
}

void sierp(float lvl, PVector p1, PVector p2, PVector p3) {
    p1 = new PVector(0, h);
    p2 = new PVector(h / 2, 0);
    p3 = new PVector(h, h);


    //base case
    if (lvl > 1) {
        lvl = lvl - 1;
        PVector q1 = dist(p1.x, p2.y);
        PVector q2 = dist(p2.x, p3.y);
        PVector q3 = (p1.x, p3.y);
        fill(222);


        triangle(p1.x, p1.y, p2.x, p2.y, p3.x, p3.y);
    } else {
        sierp(lvl - 1, p1, q1, p6);
        sierp(lvl - 1, q1, p2, q2);
        sierp(lvl - 1, q3, q2, p3);
    }
}

void tria() {
    //base
    fill(166);
    triangle(x, l, l / 2, 0, l, l);

    if (num > 1) {
        fill(185);
        //middle triangle
        scale(0.5);
        triangle(x + l / 2, y + l, l, 2 * l, l + l / 2, y + l);
        //top
        scale(0.5);
        translate(l, 0);
        triangle(x + l / 2, y + l, l, 2 * l, l + l / 2, y + l);

        //right
        translate(l, 2 * l);
        triangle(x + l / 2, y + l, l, 2 * l, l + l / 2, y + l);

        //left
        translate(-2 * l, 0);
        triangle(x + l / 2, y + l, l, 2 * l, l + l / 2, y + l);

        //   tria(x,y,l,num-1);    
    }
}