也給我們看了一個70幾歲,卻對程式還很有熱忱的老人,陳舒舒的作品,讓我們思考,是不是也能做出這樣的作品。
(1)先簡單的寫出一格圖形
void setup(){
size(500,500);
}
void draw(){
ellipse(250,250, 480,480);
for(float angle=0; angle<PI*2; angle+=PI/3){
triangle(250,250,250+240*cos(angle), 250+240*sin(angle),
250+240*cos(angle+PI/3),250+240*sin(angle+PI/3));
}
}
(2)在寫出更精緻的圖片
void setup(){
size(500,500);
}
void draw(){
ellipse(250,250, 480,480);
for(float angle=0; angle<PI*2; angle+=PI/3){
for(int R=0; R<=240; R+=20){
noFill();
triangle(250,250,250+R*cos(angle), 250+R*sin(angle),
250+R*cos(angle+PI/3),250+R*sin(angle+PI/3));
}
}
}
(3)試試能不能把旋轉的圖畫出來,改變三個頂點來畫出橢圓的軌跡
(4)參考別人的圖案,來試著畫出圖形
void setup(){
size(800,400);
}
void myTriangle(int cx, int cy){
float a= -PI/2;
for(int R=15;R>0;R-=5){
triangle( cx+R*cos(a), cy+R*sin(a),
cx+R*cos(a+2*PI/3), cy+R*sin(a+2*PI/3),
cx+R*cos(a-2*PI/3), cy+R*sin(a-2*PI/3));
}
}
void draw(){
background(255);
for(int cx=20;cx<800;cx+=40){
for(int cy=20;cy<400;cy+=40){
//ellipse(cx,cy,30,30);
myTriangle(cx,cy);
}
}
}
(5)試著寫出會動的馬力歐
PImage imgMario;
float marioX=0, marioY=0;
void setup(){
size(400,600);
imgMario = loadImage("mario.jpg");
}
void draw(){
background(255);
image(imgMario, marioX, marioY, 100, 150);
}
void keyPressed(){
if(keyCode==UP) {marioY-=5;}
if(keyCode==DOWN) {marioY+=5;}
if(keyCode==LEFT) {marioX-=5;}
if(keyCode==RIGHT) {marioX+=5;}
}
(6)寫出會跳動的馬力歐
PImage imgMario;
float marioX=0, marioY=100, marioVX=5, marioVX=0, marioAX=0, marioAY=0.1;
void setup(){
size(400,600);
imgMario = loadImage("mario.jpg");
}
void draw(){
background(255);
image(imgMario, marioX, marioY, 100, 150);
marioX += marioVX; marioY += marioVY;
marioVX+= marioAX; marioVY+= 0.98;
if(marioY>600-150) marioVY*=-0.9;
if(marioY>600-150) marioVY*=-0.9;
}
void keyPressed(){
if(keyCode==UP) {marioY-=5;}
if(keyCode==DOWN) {marioY+=5;}
if(keyCode==LEFT) {marioX-=5;}
if(keyCode==RIGHT) {marioX+=5;}
}


沒有留言:
張貼留言