Skip to content

Instantly share code, notes, and snippets.

@Saturn-V
Last active April 9, 2016 03:35
Show Gist options
  • Save Saturn-V/e32045aac8b5e8057c93191fdd4d7067 to your computer and use it in GitHub Desktop.
Save Saturn-V/e32045aac8b5e8057c93191fdd4d7067 to your computer and use it in GitHub Desktop.
var TRIANGLE_WIDTH, TRIANGLE_HEIGHT, NUM_ROWS, TRIANGLE_WIDTH_HALF;
function setup() {
createCanvas(750, 750);
// background('#f9a825');
NUM_ROWS = 8; //Modify me
TRIANGLE_WIDTH = height / NUM_ROWS;
TRIANGLE_WIDTH_HALF = (TRIANGLE_WIDTH / 2);
TRIANGLE_HEIGHT = TRIANGLE_WIDTH;
}
function draw() {
var alt = true;
var currentRow = 0;
// var currentRowInverse = 0;
// var altInverse = true;
var y2Inverse = height; //y2 value for inverse triangle
for (var y2 = height - TRIANGLE_HEIGHT; y2 >= 0; y1Inverse -= TRIANGLE_HEIGHT, y1 -= TRIANGLE_HEIGHT, y2Inverse -= TRIANGLE_HEIGHT, y2 -= TRIANGLE_HEIGHT, y3Inverse -= TRIANGLE_HEIGHT, y3 -= TRIANGLE_HEIGHT) {
currentRow += 1; //Counts rows
alt = !alt; //Alternates certain values
var y1 = y2 + TRIANGLE_HEIGHT; //y1 value for normal triangle
var y1Inverse = y2Inverse - TRIANGLE_HEIGHT; //y1 value for inverse triangle
var y3 = y2 + TRIANGLE_HEIGHT; //y3 value for normal triangle
var y3Inverse = y2Inverse - TRIANGLE_HEIGHT; //y3 value for inverse triangle
//Math crap to determine color of normal triangle
var r = 0, g = 0, b = 0;
r = (r + (currentRow == 4 ? 121 : 30 * currentRow));
g = (g + (13 * currentRow));
b = (b + (currentRow == 4 ? 45 : 11 * currentRow));
var rowColor = color(38 + r, 77 + g, 115 - b); //set color of row based on above r g b
stroke(rowColor);
fill(rowColor);
var x2Inverse = alt ? 0 : TRIANGLE_WIDTH_HALF;
//Determines x1, x2, x3 values for normal triangle
for (var x2 = alt ? TRIANGLE_WIDTH_HALF : 0; x2 <= width; x1 += TRIANGLE_WIDTH, x2 += TRIANGLE_WIDTH, x3 += TRIANGLE_WIDTH) {
var x1 = x2 - TRIANGLE_WIDTH_HALF;
var x3 = x2 + TRIANGLE_WIDTH_HALF;
triangle(x1, y1, x2, y2, x3, y3);
}
//More moath crap to determine color of inverse triangle
var rInverse = 0, gInverse = 0, bInverse = 0;
rInverse = (rInverse + (currentRow == 4 ? 121 : 30 * currentRow));
gInverse = (gInverse + (13 * currentRow));
bInverse = (bInverse + (currentRow == 4 ? 45 : 11 * currentRow));
//set color of row based on above r g b
var rowColorInverse = color(98 + rInverse, 103 + gInverse, 93 - bInverse);
stroke(rowColorInverse);
fill(rowColorInverse);
//Determines x1, x2, x3 values for inverse triangle
for (var x2Inverse = alt ? 0 : TRIANGLE_WIDTH_HALF; x2Inverse <= width; x1Inverse += TRIANGLE_WIDTH, x2Inverse += TRIANGLE_WIDTH, x3Inverse += TRIANGLE_WIDTH) {
var x1Inverse = x2Inverse - TRIANGLE_WIDTH_HALF;
var x3Inverse = x2Inverse + TRIANGLE_WIDTH_HALF;
triangle(x1Inverse, y1Inverse, x2Inverse, y2Inverse, x3Inverse, y3Inverse);
}
}
}
@jkwok91
Copy link

jkwok91 commented Apr 9, 2016

Comments:

  • in the for loop head (for (etc)), you don't need to increment x1 and x3 (or x1Inverse and x3Inverse) because you're making new ones in every loop. (var x1 = ... etc), so you can chop those statements
  • you can combine making the two triangles in the same loop, if you change the for loop to a while loop, and manually increment x2 and x2Inverse at the bottom of the while loop

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment