主題:用編程方式創(chuàng)作一幅介紹自己的作品
要求:
編程語言與工具:編程可以用p5,processing赏淌,若想用其他語言或工具筛严,提前向老師說明情況腮考;
作品: 一件編程創(chuàng)意作品挺勿,必須實現(xiàn)動態(tài)效果或交互效果曲横;作品錄制一段一分鐘內(nèi)的視頻;作品可以是具象化地描繪自己的形象,也可以是任何形式表現(xiàn)自己的興趣禾嫉、追求灾杰、特色、經(jīng)歷等熙参;
報告:寫一篇文章艳吠,發(fā)表為博文/推文等形式,描述運(yùn)用的規(guī)律孽椰,若用到了數(shù)學(xué)/物理/化學(xué)等學(xué)科中的知識昭娩,要用平實易懂的語言介紹原理,嘗試運(yùn)用凝練的數(shù)學(xué)語言表達(dá)(公式黍匾、方程栏渺、推導(dǎo)等),特別要描述出這些原理如何在作品中呈現(xiàn)的锐涯。
代碼:
function setup() {
? createCanvas(500, 500);
? rectMode(CENTER);
}
function draw() {
? noStroke();
? background(16,30,70);
? stars();
? planet();
drawme();
? flower();
? //tools();
}
///工具函數(shù)磕诊,便于讀取坐標(biāo)
function tools(){
? for(var i=10;i<500;i=i+10){
? ? stroke(250,170,240,100);
? ? line(0,i,500,i);
? ? line(i,0,i,500);
? }
? fill(0,0,0);
? text(mouseY,mouseX+25,mouseY);
? text(mouseX,mouseX,mouseY);
}
function stars(){
? var cycle =millis()/5;
? fill(254,231,138);
? circle(cycle%500,cycle%500,20);
? circle((cycle-100)%500+200,(cycle-100)%500,20);
? circle((cycle-200)%500,(cycle-100)%500+100,10);
? circle((cycle-50)%500,(cycle-100)%500+100,12);
? circle((cycle-200)%500+50,(cycle-200)%500,20);
? circle((cycle-300)%500+150,(cycle-100)%500+100,20);
? circle((cycle-300)%500+150,(cycle-400)%500+100,15);
? circle((cycle-300)%500+150,(cycle-400)%500,20);
? circle((cycle-400)%500+250,(cycle-350)%500+50,20);
? circle((cycle-400)%500+50,(cycle-350)%500+50,5);
? circle((cycle-300)%500+0,(cycle-400)%500+400,20);
? circle((cycle-100)%500,(cycle-400)%500+100,20);
? circle((cycle-100)%500+150,(cycle-400)%500+100,10);
? circle((cycle-300)%500+150,(cycle-450)%500+100,5);
? circle((cycle-50)%500+150,(cycle-450)%500+100,5);
? circle((cycle-450)%500+450,(cycle-450)%500+300,15);
}
function planet(){
? fill(246,231,102);
? ellipse(250,900,1000,1000);
? fill(244,192,91);
? ellipse(90,470,30,20);
? ellipse(350,490,100,50);
? ellipse(170,430,50,35);
? ellipse(480,490,30,20);
}
function cloth(){
? var deltax=(mouseX-250)/250*7.5;
? var deltay=(mouseY-150)/350*7.5;
? fill(241,162,26);//披風(fēng)
? quad(180+deltax,300+deltay,260,200,300,200,230,280);//根據(jù)鼠標(biāo)位置的不同該點(diǎn)的位置發(fā)生變化產(chǎn)生舞動的效果
}
function drawme()
{
? //左腿
? ? fill(255, 245, 238);
? ? beginShape();
? ? vertex(264, 275);
? ? vertex(268, 290);
? ? vertex(245, 330);
? ? vertex(260, 360);
? ? vertex(285, 290);
? ? vertex(283, 275);
? ? endShape(CLOSE);
? ? //右腿
? ? beginShape();
? ? vertex(310, 275);
? ? vertex(314, 290);
? ? vertex(291, 330);
? ? vertex(306, 360);
? ? vertex(331, 290);
? ? vertex(329, 275);
? ? endShape(CLOSE);
? cloth();
? //衣服
? ? fill(130,255,150);
? ? triangle(300,190,240,288, 360,288);
? fill(253, 229, 93);
? ? ellipse(300, 150, 110, 110);
? ? //臉
? ? fill(255, 245, 238);
? ? ellipse(300, 150, 80, 85);
? ? //劉海中
? ? fill(253, 229, 93);
? ? beginShape();
? ? vertex(270, 110);
? ? vertex(290, 140);
? ? vertex(300,128);
? ? vertex(306,137);
? ? vertex(310, 124);
vertex(325,132);
? vertex(330,120);
? vertex(320, 104);
? ? endShape(CLOSE);
? ? //劉海左1
? ? beginShape();
? ? vertex(280, 110);
? ? vertex(280, 140);
? ? vertex(260, 120);
? ? endShape(CLOSE);
? ? //眼睛
? ? fill(54, 54, 54);
? ? ellipse(317, 150, 10, 15);
ellipse(285, 150, 10, 15);
? //手
? ? fill(255, 245, 238);
? ? ellipse(255, 239, 45, 20);
? ? ellipse(280, 240, 20, 30);
? ? ellipse(350, 239, 45, 20);
? ? ellipse(330, 240, 20, 30);
fill(245,218,79);//圍巾
? rect(300,200,100,20);
? circle(250,200,20);
? circle(350,200,20);
}
function flower(){
? fill(51,186,111);
? rect(120,430,10,60);
? fill(208,50,25);
? circle(120,400,25);
? ellipse(120,390,30,15);
? fill(116,0,0);
? ellipse(120,390,20,5);
}
效果展示:
靈感來自童話故事小王子
人物造型:小王子、標(biāo)志性玫瑰花
背后其他小型的黃色行星是動態(tài)的
圍巾可以隨著鼠標(biāo)的移動飄動