My Variable Portrait

Eamonn Burke Variable Portrait
var eyeSize = 10;
var faceWidth = 100;
var faceHeight = 400;
var mouthWidth = 75;
var mouthHeight = 50;
var noseWidth = 20;
var noseHeight = 75;
var eyeballLeft = 5;
var eyeballRight = 5;

function setup() {
    createCanvas(640, 480);

}

function draw() {
	if (mouseX > width/2 & mouseY > height/2){
		background (0,255,77);		//bright green
	} else if (mouseX < width/2 & mouseY <= height/2){		
		background (0,239,255); 		//bright blue
	} else if (mouseX > width/2 & mouseY < height/2){
		background (255,0,230);			//bright pink
	} else {
		background (255,255,0); 		//bright yellow
	}


		fill(255,204,153);		//beige
	ellipse(width/2,height/2,faceWidth,faceHeight);		//face
		fill(209,109,202);		//pink
		
if (faceHeight <  250) {
  line (width/2, height/2 +faceHeight/3.5, width/2 + faceHeight/3.5, height/2 + faceHeight/3.5);		//straight mouth
} else if (faceHeight < 300) {
	beginShape();		//smile
		curveVertex (width/2,height/2 + faceHeight/3.5);
		curveVertex (width/2,height/2 + faceHeight/3.5);
		curveVertex (width/2 + faceWidth/10, height/2 + faceHeight/3);
		curveVertex (width/2 + faceWidth/5, height/2 + faceHeight/3);
		curveVertex (width/2 + faceWidth/3.5, height/2 + faceHeight/3.5);
		curveVertex (width/2 + faceWidth/3.5, height/2 + faceHeight/3.5);
		endShape();	
} else if (faceHeight < 370) {
	ellipse(width/2,height/2 + faceHeight/3.5,mouthWidth,mouthHeight);		//open mouth
} else {
	fill(0,0,0);		//black
	circle(width/2, height/2 + mouthHeight*1.69, mouthHeight/3.75)		//round mouth dark
	fill(255,46,130);		//pink-red
	beginShape();		//tongue
		curveVertex(width/2 - mouthWidth/10, height/2 + mouthHeight*1.75);
		curveVertex(width/2 - mouthWidth/10, height/2 + mouthHeight*1.75);
		curveVertex(width/2 + mouthWidth/5, height/2 + mouthHeight*2);
		curveVertex(width/2 + mouthWidth/2.5, height/2 + mouthHeight*2.25);
		curveVertex(width/2 + mouthWidth/2, height/2 + mouthHeight *2);
		curveVertex(width/2 + mouthWidth/10, height/2 + mouthHeight*1.75);
		curveVertex(width/2 + mouthWidth/10, height/2 + mouthHeight*1.75);
	endShape();
}

		fill(255,192,129);		//dark beige
	beginShape();		//nose
		curveVertex(width/2 - noseWidth/2.5, height/2 - noseHeight);
		curveVertex(width/2 - noseWidth/2.5, height/2 - noseHeight);
		curveVertex(width/2, height/2 + noseHeight);
		curveVertex(width/2 - noseWidth, height/2 + noseHeight*2);
		curveVertex(width/2 - noseWidth*2, height/2 + noseHeight);
		curveVertex(width/2 - noseWidth*0.7, height/2 - noseHeight);
		curveVertex(width/2 - noseWidth*0.7, height/2 - noseHeight);
	endShape();

if (noseHeight < 30) {		
	fill(0,0,0)
	var nostrilSize = 15
	ellipse (width/2-noseWidth * 1.6, height/2 + noseHeight, nostrilSize, nostrilSize);			//left nostril
	ellipse (width/2 - noseWidth * 0.5, height/2 + noseHeight, nostrilSize, nostrilSize);		//right nostril
}

if (faceWidth < 200) {
		var eyeLX = width/2 - faceWidth/4;		//spread apart eyes
		var eyeRX = width/2 + faceWidth/4;
} else {
		var eyeLX = width/2 - faceWidth * 0.35;		//normal
		var eyeRX = width/2; - faceWidth * 0.2;		//normal
}

		var eyeLY = height/2 - faceHeight * 0.3;
		var eyeRY = height/2 - faceHeight * 0.3;

		fill(255,255,255);		//white
	ellipse(eyeLX,eyeLY,eyeSize,eyeSize);		//left eye
	ellipse(eyeRX,eyeRY,eyeSize,eyeSize);		//right eye
		
if (eyeSize > 50) {		
		fill(3,129,75);		//green
	ellipse(eyeLX,eyeLY,eyeballLeft, eyeballLeft);		//left pupil
	ellipse (eyeRX,eyeRY, eyeballRight, eyeballRight);		//right pupil
} else {
		fill(3,129,75);		//green
		var x = constrain(mouseX,eyeLX - eyeSize/2 + eyeSize/4,eyeLX + eyeSize/2 - eyeSize/4);		//eyeball constraint
	ellipse (x,eyeLY, eyeSize/4, eyeSize/4);		//moving left pupil
		var y = constrain(mouseX,eyeRX - eyeSize/2 + eyeSize/4,eyeRX + eyeSize/2 - eyeSize/4);		//eyeball constraint
	ellipse (y, eyeRY, eyeSize/3, eyeSize/3);		//moving right pupil
}
		
		fill(0,0,0);		//black
if (faceHeight > 300) {
	rect(eyeLX - eyeSize/2,eyeLY - eyeSize/2 - faceHeight/10, eyeSize, eyeSize/4);		//left eyebrow
} else {
	rect(eyeLX - eyeSize/2,eyeLY - eyeSize/1.3- faceHeight/10, eyeSize, eyeSize/4);		//raised left eyebrow
}	
	rect(eyeRX - eyeSize/2,eyeRY - eyeSize/2 - faceHeight/10, eyeSize, eyeSize/4);		//right eyebrow

}





function mousePressed(){		
	faceWidth = random(100,400);
	faceHeight = random(200, 500);
	eyeSize =  random(30,80);
	mouthWidth = random (50,80);
	mouthHeight = random (50,80);
	noseWidth = random (20,50);
	noseHeight = random (20,65);
	eyeballRight = random (5,30);
	eyeballLeft = random (5,30);
	nostrilSize = random (10,15);
	}

noLoop();

My self portrait contains variables such as face height, face width, mouth height and width, eye size, and more. I used lots of conditionals so as to try to make the face as unique as possible each time. I also used constraints, but was not able to include motion, so I want to figure out how to integrate that soon soon.

Aaron Koblin – Flight Paths

Flight Patterns – Aaron Koblin

Koblin’s map of the United States flight paths for a day.
A motion visualization of the paths.

I am combining economic, psychological and creative studies as a Behavioral Economics major and an architecture and (hopefully) design minor. My combined vision of these two fields is actually exactly what is being manifested in this project. I love that in economics, human behavior is solidified and represented in a graph (hence the BePO major). The design comes in for most effectively representing this data to a viewer, and I think that Koblin used design perfectly to emulate the nature of flight paths. His sensibility comes in when making decisions about how to use brightness to suggest crowded areas, color for flight type, and opacity to enhance movement. So, this artwork essentially captures the type of work I want to be involved in. The team used Processing, a software designed to mimic hand-drawn visuals, to visualize the data. I would guess that the algorithm uses the start and endpoints of flights, as well as the speed, height, and time of day. There may be code that provides the most efficient and safe route using engine science and other air traffic to generate paths.

My Portrait

I came into this project with no specific idea or image in my head, so I put in a random shape that turned out to look like a cat‘s head. To add a mouth I thought I would just duplicate the shape but with the bottom point skewed so as to create an “open” mouth. Recalling my past origami obsession, I noted it looked like it was a paper folding, and so I took that theme and ran with it.’

Eamonn Burke
function setup() {
    createCanvas(750, 750);
    background(220);
    text("p5.js vers 0.9.0 test.", 10, 15);
}

function draw() {
	background(128,222,250);
		fill(236,174,66);    //light blue
	rect(200,300,70,700);	//neck
	quad(100,200,300,600,600,100,400,100);	//vhin
		fill(246,111,255);    //pink
	quad(125,200,305,580,550,100);    //mouth
	line(400,100,300,600);    //mouth center line
		fill(236,174,66);    //orange
	quad(100,200,450,600,600,100,400,100);    //head
	triangle(100,200,250,150,200,50);	 //left ear
	triangle(600,100,500,100,520,30);    //right ear
		fill(255,255,255);    //white 
		strokeWeight(3)
	ellipse(300,300,100,100);    //left eye
	ellipse (525,300,65,100);	//right eye
	strokeWeight(1)
	line(400,100,450,600);    //head center line
		fill(6,165,1);    //green
		strokeWeight(10);
	ellipse(300,300,50,50);    //left eye pupil
	    fill(52,100,212);    //blue
	 ellipse (525,300,32.5,50);    //right eye pupil
	 	fill(236,174,66);
	 	strokeWeight(1);
	arc(300,300,100,100,0,PI);    //eyelid
	    fill(246,111,255);
	triangle(130,180,210,140,200,70);    //left inner ear
	triangle(582,92,515,87,525,45);    //right inner ear
	    fill(0,0,0);
	triangle(408,550,467,540,450,600);    //nose
		fill(226,226,226,200);    //light gray
		stroke(186,186,186);    //gray
		strokeWeight(5);
	circle(100,750,250);	//clouds
	circle(300,750,275);
	circle(450,750,230);
	circle(650,750,250);
		fill(0,0,0);	//white
		noLoop()
	

}

LO: My Inspiration

One of a series of visuals advertising the abilities of the Wacom Cintiq Pro creative tablet for texture and material.

David McLeod – Wacom Cintiq Pro Visuals

David McLeod is a Australian digital artist who does mostly 3D animation and modeling and who I’ve followed on social media for multiple years.
As a lover and studier of architecture, I have always been fascinated with models, especially with varying textures.
What I admire so much about this piece is how he was able to really bring to life one of these models, which really opened my eyes to the power of digital art.
Much of his other art inspires me as well. McLeod does a lot of exploratory simulations with different materials and textures, which can be incredibly satisfying or incredibly disturbing.
I think that’s where this kind of art holds its power, in its ability to provide as close to a tactile experience as possible, which can facilitate visceral reactions and inform design and material choices. I could certainly see this kind of exploration coming closer and closer to reality by possibly incorporating virtual reality to create an experience that activates all sensory facets.

To my knowledge, David McLeod is a solo artist, who works from a studio in Manhattan.
I would guess that each project takes a week at the least to reach its final form.
He says that he uses mostly Cinema4D for his work, which is a commercialized software.

As far as inspiration goes, I think McLeod is influenced largely by surrealism.
I can definitely see a connection to Salvador Dali’s work, in terms of playing with material and the rules of reality.
Even some Picasso, although more rigid than McLeod, are reminiscent of his work.
And of course, legendary animators like Hayao Miyazaki, in his very texturally oriented anime work, as well as anime as a general animation style.