sketch
Here’s my project for the week — this has been the most painful one so far. It’s vaguely based off of Rainbow Road from Mario Kart, so enjoy <3
let numLines;
let expandLeft;
let expandRight;
let moveX;
let moveY;
let lineExpand;
function setup() {
createCanvas(400, 300);
}
function draw() {
background(0, 0, 56);
stroke(255); // circle
lineExpand = (constrain(mouseY, 10, 400));
for(i = 0; i <= 100; i +=1 ) {
push();
translate(width/2, height/2);
rotate(radians(10*i));
line(0, lineExpand, 0, -lineExpand);
pop();
}
stroke(188, 13, 88); // red
crossHatch(0, 290, 150, 200, 170, 200, 200, 0, false);
stroke(254, 161, 43); // orange
crossHatch(5, 290, 170, 220, 190, 220, 200, 0, false);
stroke(248, 243, 23); // yellow
crossHatch(10, 290, 190, 250, 210, 250, 200, 0, false);
stroke(247, 89, 252); // purple
crossHatch(390, 290, 250, 200, 230, 200, 200, 0, false);
stroke(79, 134, 239); // blue
crossHatch(395, 290, 230, 220, 210, 220, 200, 0, false);
stroke(118, 370, 153); // green
crossHatch(400, 290, 210, 250, 190, 250, 200, 0, false);
stroke('magenta');
moveX = 100;
moveY = 100;
chadStar(0, 0);
stroke('yellow');
moveX = 300;
moveY = 200;
chadStar(0, 0);
stroke('pink');
moveX = 250;
moveY = 50;
chadStar(0, 0);
}
function crossHatch(firstx1, firsty1, firstx2, firsty2, secondx1, secondy1, secondx2, secondy2, showLines = true) {
if (showLines){
line(firstx1, firsty1, firstx2, firsty2);
line(secondx1, secondy1, secondx2, secondy2);
}
let numLines = constrain(mouseX, 100, 400)/10;
let dx1 = (firstx2 - firstx1) / numLines;
let dy1 = (firsty2 - firsty1) / numLines;
let dx2 = (secondx2 - secondx1) / numLines;
let dy2 = (secondy2 - secondy1) / numLines;
for(var i = 0; i <= numLines; i += 1) {
line(firstx1, firsty1, secondx1, secondy1);
firstx1 += dx1;
firsty1 += dy1;
secondx1 += dx2;
secondy1 += dy2;
}
}
function chadStar(x, y) {
expandLeft = constrain(mouseY, 0, 300) / 50;
expandRight = constrain(mouseY, 0, 300) / 50;
for(i = 0; i <= 6; i += 1) {
push();
translate(moveX, moveY);
rotate(radians(i*60));
line(x, y-10, x+10, y+10);
line(x+10, y+10, x-10, y+10);
line(x-10, y+10, x, y-10);
pop();
x += expandLeft;
y += expandRight;
}
}