//Max Stockdale, Section D
var R = 50; //color
var G = 100;
var B = 255;
var angle = 0;
var xs = 15; //scale
var ys = 20;
var circlesize = 80;
function setup() {
createCanvas(600, 450);
rectMode(CENTER);
}
function draw() {
if (mouseX < (width / 2) & mouseY < (height / 2)){ //background changes color in different quadrants
background(251,215,90);
} else if (mouseX < (width / 2) & mouseY > (height / 2)){
background(156,158,251);
} else if (mouseX > (width / 2) & mouseY < (height / 2)){
background(198,149,198);
} else {
background(36,110,237);
}
noStroke();
var m = max(min(mouseX, 600), 0); //maintaing size of ellipses
var size = m * 300 / 600;
fill(R + mouseX / 2, G + mouseX / 2, B + mouseX / 2); //ellipses
ellipse(width / 2, height / 2, size, size);
fill(R + mouseX / 2, G + mouseX / 2, B + mouseX);
ellipse(width / 2, height / 2, size * 0.9 , size * 0.9);
fill(R + mouseX, G + mouseX / 2, B + mouseX / 2);
ellipse(width / 2, height / 2, size * 0.7 , size * 0.7);
fill(R + mouseX / 2, G + mouseX, B + mouseX / 2);
ellipse(width / 2, height / 2, size * 0.5 , size * 0.5);
fill(R + mouseY / 2, G + mouseY, B + mouseX / 2);
ellipse(550, 225, size * 0.1 , size * 0.1);
fill(R + mouseY /2, G + mouseY, B + mouseX /2);
ellipse(30, 225, size * 0.1, size * 0.1);
fill(255);
rect(mouseX, mouseY, 50, 50); //x,y position square 1
//side circle_1
translate(-150, + 100);
fill(R + mouseX / 2, G + mouseX / 2, B + mouseX / 2);//ellipses
ellipse(width / 2, height / 2, size, size);
fill(R + mouseX / 2, G + mouseX / 2, B + mouseX);
ellipse(width / 2, height / 2, size * 0.9 , size * 0.9);
fill(R + mouseX, G + mouseX / 2, B + mouseX / 2);
ellipse(width / 2, height / 2, size * 0.7 , size * 0.7);
fill(R + mouseX / 2, G + mouseX, B + mouseX / 2);
ellipse(width / 2, height / 2, size * 0.5 , size * 0.5);
fill(255);
rect(mouseX , mouseY, 50, 50); //x, y position square 2
//side circle_2
translate(+300, -200);
//ellipse 1
fill(R + mouseX / 2, G + mouseX / 2, B + mouseX / 2);
ellipse(width / 2, height / 2, size, size);
//ellipse 2
fill(R + mouseX / 2, G + mouseX / 2, B + mouseX);
ellipse(width / 2, height / 2, size * 0.9 , size * 0.9);
//ellipse 3
fill(R + mouseX, G + mouseX / 2, B + mouseX / 2);
ellipse(width / 2, height / 2, size * 0.7 , size * 0.7);
//ellipse 4
fill(R + mouseX / 2, G + mouseX, B + mouseX / 2);
ellipse(width / 2, height / 2, size * 0.5 , size * 0.5);
fill(255);
rect(mouseX, mouseY, 50, 50); //x,y position square 3
fill(36,110,237); //spinning square(blue)
push();
translate(-75,+175);
rotate(radians(angle));
rectMode(CENTER);
rect(0,0,50,50);
pop();
angle += 5;
fill(251,215,90); //spinning square(yellow)
push();
translate(+375,+475);
rotate(radians(angle));
rectMode(CENTER);
rect(0,0,50,50);
pop();
angle += 5;
angle = angle + 0.5;
xs = width - (0.5 * mouseX); //scale based on x
ys = height - (0.5 * mouseY); //scale based on y
}
For this project, I wanted to play around with the scale of circles and the gradient of the colors. I also wanted to include a background that changes color based on the mouse position, with spinning squares on the corners.
]]>One project I found really interesting was John Edmark’s work. He creates these 3D printed sculptures that use the fibonacci sequence to create these cool optical illusions. His series is called, “Blooming Zoetrope Sculptures,” and these pieces work when they are spun and lit by a strobe light. From what I know about the code, each of the pedals are placed at a different distance from the center and if you follow a single pedal, it looks like it works down and out of the sculpture. Knowing the basics of the fibonacci sequence, it works using the golden ratio where each number in the sequence is the sum of the two numbers that precede it. Something I really admire about it, is that these pieces resemble nature and can be represented using a mathematical equation. Overall, his work inspires me to learn more about coding and learn how to make these really unique patterns.
Link: https://www.instructables.com/Blooming-Zoetrope-Sculptures/
var eyeSize = 100; //Max Stockdale, section D
var faceWidth = 350;
var faceHeight = 250;
var mouth = 50;
var tooth=40;
var nose=60;
var eyeHighlight=20;
var body=400
var arms=100
function setup() {
createCanvas(640, 480);
background(220);
text("p5.js vers 0.9.0 test.", 10, 15);
}
function draw() {
background(91,161,191); //blue
strokeWeight(0);
fill(47,213,102);
circle(width/2, height/1.2, body); //body shape
fill(255,255,255);
strokeWeight(0);
ellipse(width / 2, height / 2, faceWidth, faceHeight); //face
var eyeLX = width / 2 - faceWidth * 0.5;
var eyeRX = width / 2 + faceWidth * 0.5;
strokeWeight(1);
fill(0,0,0);
ellipse(eyeLX, height / 2, eyeSize, eyeSize); //left eye
ellipse(eyeRX, height / 2, eyeSize, eyeSize); //right eye
fill(255,255,255);
circle(eyeLX + 5, height / 2, eyeHighlight); //eye highlight
circle(eyeRX + 5, height / 2, eyeHighlight); //eye highlight
fill(48,56,65);
rect(width/2, height/2, mouth, mouth); //mouth
fill(255,255,255);
triangle(320,240, 330,250, 340,240); //tooth
fill(72,3,31);
ellipse(width/2, height/2.25, nose, 20); //noser
strokeWeight(0);
fill(153,155,250);
circle(width/4.75, height/1.3, arms); //left arm
circle(width/1.25, height/1.3, arms); //right arm
fill(255,255,255);
}
function mousePressed() {
faceWidth = random(50, 600);
faceHeight = random(150, 300);
eyeSize = random(20, 60);
mouth = random(10, 40);
ears = random(5,15);
nose = random(15,45);
body =random(400,500);
arms = random(80,120);
}
]]>Link: http://www.lumicon.de/wp
One artist I was really drawn to was Holger Lippman. I found his work really interesting because he was able to use coding to create these pieces that replicated a style similar to post-impressionism. Generating these images that are unique each time is something pretty incredible. Being able to replicate paint strokes really creates this cool effect. One piece of his in particular, “noise warp” reminds me a lot of Van Gogh’s style and specifically Starry Night. In some of the other series you can see inspiration from Monet and other famous artists. I also really liked another one of his pieces called, “ripple” using the curveVertex function. I experimented with that function in my project and it’s cool to see how complex it can actually get to create these really complex shapes and patterns. Overall and through creating one of these projects myself, it takes some problem solving and trial and error to find what you’re looking for. On my project I was actually surprised at what I found by mistake and it influenced some of my design ideas.
]]>Some technological design I have been really fascinated with is The Tech Museum of Innovation in San Jose, California. They have created these experiences for the visitors where they are able to interact with the exhibits through wearable technology that allows them to create a meaningful connection to their surroundings. These wearable devices track the physical and emotional reactions of the visitors and at the end of their visit they are able to reflect on their experience. I’m a design student currently studying environments and these are the types of interactions we are currently exploring. I really admire this project because they were able to combine coding and design which lifts the interaction from the screen and puts it in the physical world, creating a unique experience each time. In the future, I would like to create more of these interactions to create more of a bridge between the digital and physical world.
]]>function setup() {
createCanvas(350,400);
background(220);
text("p5.js vers 0.9.0 test.", 10, 15);
}
function draw() {
strokeWeight(0); //background color
fill(199,216,199);
rect(0,0,350,450);
fill(243,185,143); //face shape
ellipse(175,225,180,220);
fill(243,185,143);
circle(175,150,180);
fill(46,38,34); //eyebrows
ellipse(130,140,50,15);
ellipse(108,147,15,20);
ellipse(220,140,50,15);
ellipse(240,147,15,20);
stroke(243,234,185);
strokeWeight(3);
fill(64,63,65); //glasses
circle(130,175,65);
fill(64,63,65);
circle(220,175,65);
stroke(243,234,185); //glasses bridge
strokeWeight(3);
point(165,175);
point(170,172.5);
point(175,172);
point(180,172.5);
point(185,175);
strokeWeight(0);
fill(243,185,143); //ears
ellipse(75,195,45,80);
fill(243,185,143);
ellipse(277,195,45,80);
fill(46,38,34);
rect(90,50,170,50); //hair
circle(100,80,50);
circle(100,95,40);
ellipse(85,135,20,50);
circle(90,100,30);
circle(85,102,20);
circle(135,95,50);
circle(100,75,60);
circle(120,70,60);
circle(150,60,70);
circle(160,55,50);
circle(175,60,70);
circle(180,70,70);
circle(190,60,60);
circle(200,75,50);
circle(210,70,60);
circle(215,80,50);
circle(225,70,60);
circle(240,70,50);
circle(225,52,50);
circle(245,70,45);
circle(245,65,50);
circle(250,75,40);
circle(250,85,30);
circle(255,90,40);
ellipse(265,120,20,50);
circle(265,140,20);
circle(265,145,15);
circle(265,155,10);
circle(265,120,30);
circle(85,160,10);
circle(85,120,30);
circle(85,135,23);
fill(46,38,34);
ellipse(85,200,8,100); //beard
ellipse(265,200,8,100);
circle(87,245,10);
circle(87,247,13);
circle(87,250,15);
circle(85,240,10);
circle(89,255,17);
circle(91,260,18);
circle(94,270,20);
circle(95,275,22);
circle(96,280,24);
circle(98,285,26);
circle(100,290,27);
circle(101,295,27);
circle(102,300,28);
circle(105,305,28);
circle(110,310,28);
circle(112,315,29);
circle(115,318,29);
circle(120,322,30);
circle(125,328,31);
circle(128,335,31);
circle(135,337,32);
circle(140,338,32);
circle(145,339,32);
circle(150,340,33);
circle(160,341,34);
circle(165,342,34);
circle(170,341,34);
circle(175,341,33);
circle(180,340,33);
circle(185,339,33);
circle(190,338,33);
circle(195,336,32);
circle(200,335,32);
circle(205,332,32);
circle(210,330,32);
circle(215,328,32);
circle(220,325,31);
circle(225,320,31);
circle(230,315,31);
circle(235,310,34);
circle(240,305,30);
circle(235,300,28);
circle(240,295,28);
circle(245,290,28);
circle(245,285,27);
circle(246,280,27);
circle(247,275,26);
circle(248,270,24);
circle(249,265,23);
circle(250,260,22);
circle(252,265,22);
circle(253,260,22);
circle(254,255,20);
circle(255,250,19);
circle(260,245,15);
circle(258,240,15);
circle(258,235,14);
circle(259,230,12);
circle(262,225,10);
ellipse(145,260,40,13); //mustache
ellipse(200,260,40,13);
circle(159,258,13);
circle(185,258,13);
ellipse(127,268,10,20);
ellipse(218,268,10,20);
ellipse(172,300,8,20);
circle(172,290,10);
}
For this project, I spent a lot of time using trial and error to figure out how I wanted to create the hair. Overall, I’m happy with how it turned out, and I went for a more simplistic look.
]]>