function setup() {
createCanvas(600, 600);
}
var shirtColor1 = 255
var faceRound = 300; /*100, 300*/
var hairX = 130; /*120, 135*/
var noseHeight = 295; /*295, 315*/
var noseTip = 20; /*10, 25*/
var mouth1 = 120; /*30, 120*/
var mouth2 = 30; /*1, 30*/
var eyebrow1 = 250; /*220, 255*/
var eyebrow2 = 230; /*200, 240*/
var eyeHeight = 60; /*50 , 80*/
var eyeballX = 230; /*210, 250*/
var eyeballY = 290; /* 290-eyeHeight/2-15, 290 + eyeHeigh/2 + 15*/
function draw() {
background(227,252,207);
//body
noStroke();
fill(shirtColor1,14,14);
rect(100, 450, 400, 140, 100, 100, 0,0);
noStroke();
fill(199,158,95);
triangle(240, 450, 300, 530, 360, 450);
//ear
noStroke();
fill(252,226,177);
circle(130, 300, 50);
noStroke();
fill(252, 226,177);
circle(470, 300, 50);
// face
noStroke();
fill(240,210,180);
rect(130,200, 340, 300, 0,0,faceRound, faceRound);
noStroke();
fill(252,226,177);
rect(150,200,300,290,0,0,faceRound, faceRound);
// hat
strokeWeight(1);
stroke(20);
fill(135,171,230);
arc(300, 200, 340, 250, PI, TWO_PI, PIE);
strokeWeight(1);
noStroke();
fill(93,129,186);
arc(300, 200, 300, 225, PI, TWO_PI,PIE);
// hat rim
strokeWeight(8);
stroke("black");
fill(240,217,180);
arc(300,210, 200,80, PI, TWO_PI, OPEN);
// eyes
noStroke();
fill("white");
ellipse(220, 290, 95, eyeHeight);
noStroke();
fill("white");
ellipse(380, 290, 95, eyeHeight);
//eyeball
stroke(100);
strokeWeight(3);
fill("black");
circle(eyeballX, eyeballY, 30);
stroke(100);
strokeWeight(3);
fill("black");
circle(eyeballX + 140, eyeballY, 30);
//hair
stroke(50);
strokeWeight(3);
fill(30);
triangle(130,200, 175, 200, hairX, 300);
stroke(50);
strokeWeight(3);
fill(30);
triangle(470,200, 425,200, 600-hairX ,300);
// eyebrow
stroke("black");
strokeWeight(5);
noFill();
beginShape();
curveVertex(150, 245);
curveVertex(150,245);
curveVertex(190, eyebrow2);
curveVertex(210, eyebrow2);
curveVertex(240, eyebrow1);
curveVertex(240, eyebrow1);
endShape();
stroke("black");
strokeWeight(5);
noFill();
beginShape();
curveVertex(450, 245);
curveVertex(450,245);
curveVertex(410, eyebrow2);
curveVertex(390, eyebrow2);
curveVertex(360, eyebrow1);
curveVertex(360, eyebrow1);
endShape();
//nose
fill(209,173,107);
noStroke();
triangle(300, noseHeight - 8, 280, 350, 320, 350);
fill(237,225,183);
noStroke();
triangle(300, noseHeight, 280, 350, 320, 350);
fill(237,225,183);
stroke(217,187,132);
strokeWeight(1);
arc(300, 350, 40, noseTip, 0, PI, OPEN);
// mouth
noStroke();
fill(217,108,102);
arc(300, 390, 180, mouth1, 0, PI, PIE);
noStroke();
fill(252,226,177);
arc(300, 390, 180, mouth2, 0, PI, PIE);
}
function mousePressed(){
shirtColor1 = random(10, 255);
faceRound = random(100,300); /*100, 300*/
hairX = random(120,135); /*120, 135*/
noseHeight = random(295,315); /*295, 315*/
noseTip = random(10,25); /*10, 25*/
mouth1 = random(30,120); /*30, 120*/
mouth2 = random(1,30); /*1, 30*/
eyebrow1 = random(220,255); /*220, 255*/
eyebrow2 = random(200,240); /*200, 240*/
eyeHeight = random(50,80); /*50 , 80*/
eyeballX = random(210,250); /*210, 250*/
eyeballY = random(290 - (eyeHeight/2) + 15, 290 + (eyeHeight/2) - 15); /* 290-eyeHeight/2-15, 290 + eyeHeigh/2 + 15*/
}
Author: Steven
Steven Fei – Looking Outwards – 02
With the development of algorithms, even artistic ideas can be developed and turned into reality with great efficiency. When designing architecture, I always put a lot of manual adjustings and editings for linework drawings and overal layouts of the rooms. However, an architecture studio Wallgren Arkitekter has created some programs embedded in the architectural parametric modeling tool Grasshopper.
Once the site constraints and several specific requirements such as wall thickness and architecture type are set, the program will automatically create elegant drawings for the plans and sections. Meanwhile, the building models are created with great detail. When the user makes changes to the settings, changes in the drawings are laid out instantly. Such an algorithm provides an insight into modern healthy and safe living, and it also takes advantage of the site to generate the most ideal and economic layout for the rooms. Moreover, when combined with other programs that deal with weather and transportation proximities, the algorithm will also produce a map analyzing which house or suite will be most wanted. Such a new program inspires me to compare my own design with what the machine produces and to see which design factors I have considered or not. In addition, the program greatly facilitates the design efficiency and enables us to think in a wider picture for forms and environment.
Click here to see the introduction of the software
Official website for the software:http://finch3d.com/#
Steven Fei-Project01- Face
function setup() {
createCanvas(600, 600);
background(147,201,149);
}
function draw() {
//body
fill(120,29,29);
strokeWeight(1);
rect(110,445,420,400,95,80);
strokeWeight(1)
fill(225,183,129);
triangle(230,450,330,700,430,450);
strokeWeight(0);
fill(242,206,160);
triangle(240,450,330,650,415,450);
fill(255);
arc(200,550,40,40,0.5*PI,PI+0.5*PI,CHORD);
fill(0);
arc(200,550,40,40,PI+0.5*PI,0.5*PI,CHORD);
fill(255);
arc(200,540,20,20,PI+0.5*PI,0.5*PI,CHORD);
fill(0);
arc(200,560,20,20,0.5*PI,PI+0.5*PI,CHORD);
fill(255);
ellipse(200,560,5,5);
fill(0);
ellipse(200,540,5,5);
//ear
strokeWeight(0);
fill(255,220,169);
ellipse(130,294,50,60);
ellipse(505,294,50,60);
//noStroke();
//face
strokeWeight(1);
stroke(0);
fill(255,222,171);
ellipse(322,280,340,453);
//nose
noFill();
strokeWeight(1);
stroke(34,34,34);
line(320,240,350,333);
stroke(0);
line(350,333,330,345);
strokeWeight(1.5);
stroke(0);
line(330,345,315,348);
//mouth
arc(327,380,80,20,0-0.1*PI,PI,OPEN);
//eyes
stroke(0.5);
fill(255);
arc(242,230,100,40,PI,TWO_PI,OPEN);
stroke(1);
noFill();
arc(242,230,100,40,0,QUARTER_PI,OPEN);
noStroke();
fill(255,222,171);
ellipse(242,230,95,35);
fill(0);
ellipse(260,230,16,16);
noStroke();
fill(255);
arc(390,230,100,40,PI,TWO_PI,OPEN);
stroke(1);
noFill();
arc(390,230,100,40,PI,PI-QUARTER_PI,OPEN);
noStroke();
fill(255,222,171);
ellipse(390,230,95,35);
fill(0);
ellipse(360,230,16,16);
//hair
fill(0);
quad(137,157,127,260,150,297,170,200);
//hat
strokeWeight(1);
fill(71,74,90);
arc(290,140,350,250,PI-0.19*PI,TWO_PI,PIE);
strokeWeight(9);
stroke(7,15,55);
fill(255,222,171);
arc(360,160,200,120,PI,TWO_PI,OPEN);
//eyebrow
stroke(0)
strokeWeight(8);
line(215,180,306,175);
line(345,179,430,175);
}
Steven Fei-Looking Outwards-01
Maths and computations lend creative power to artistic and architectural designs.
Three years ago, I was amazed by Zaha Hadid’s design of the Mathematics Gallery at the Science Museum in London. Inspired by aircrafts, the interior membrane installation stands elegantly and shows a strong sense of movement and evolution. Such a practice indicates the strong influence of technology on the environment and the space that people experience. Designed by a team of more than ten people, the form was scripted and paramatrically controlled to achieve an ideally continuous and complex shape. Moreover, the design suggests an enlightening future for artistic creations aided by algorithms. Strongly influenced by such new technology, I use an algorithmic design tool called Grasshopper a lot in my architectural designs and formal explorations.
Article for more information from Archdaily