Week03
利用三角函數畫出三角形
(1) x = cos(angle) , y = sin(angle)
程式碼 :
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)利用半徑來畫更多的三角形 最大半徑為240
程式碼 :
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));
}
}
}
利用程式碼畫出幾何圖形
(1)
程式碼 :
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){
mytriangle(cx,cy);
}
}
}
利用程式碼做出馬力歐
(1)上網找到png檔的馬力歐,並加入processing中(ctrl+k能看見資料夾)
(2)做出能利用上下左右鍵控制的馬力歐
程式碼 :
注意!!!!!!!
img=loadImage("pic.png");必須放在setup()內避免造成記憶體過大
PImage img;
float x=0,y=0;
void setup(){
size(500,500);
img=loadImage("pic.png");
}
void draw(){
background(255);
image(img,x,y,100,150);
}
void keyPressed(){
if(keyCode==UP){y-=5;}
if(keyCode==DOWN){y+=5;}
if(keyCode==LEFT){x-=5;}
if(keyCode==RIGHT){x+=5;}
}
(2)利用牛頓定理讓馬力歐有拋物線掉落的感覺
程式碼 :
PImage img;
float x=0,y=0,vx=2,vy=0,ax=0,ay=0.1;
void setup(){
size(500,500);
img=loadImage("pic.png");
}
void draw(){
background(255);
image(img,x,y,100,150);
x+=vx; y+=vy;
vx+=ax; vy+=ay;
}
void keyPressed(){
if(keyCode==UP){y-=5;}
if(keyCode==DOWN){y+=5;}
if(keyCode==LEFT){x-=5;}
if(keyCode==RIGHT){x+=5;}
}
(3) 做出能有彈跳效果的馬力歐
程式碼 :
PImage img;
float x=0,y=0,vx=2,vy=0,ax=0,ay=0.1;
void setup(){
size(500,500);
img=loadImage("pic.png");
}
void draw(){
background(255);
image(img,x,y,100,150);
x+=vx; y+=vy;
vx+=ax; vy+=0.98;
if(y>500-150)vy*=-0.9;
if(x>500-100)vx*=-1;
if(y<0)vy*=-0.9;
if(x<0)vx*=-1;
}
void keyPressed(){
if(keyCode==UP){y-=5;}
if(keyCode==DOWN){y+=5;}
if(keyCode==LEFT){x-=5;}
if(keyCode==RIGHT){x+=5;}
}
(4) 讓馬力歐反彈後慢慢減少速度
程式碼 :
PImage img;
float x=0,y=0,vx=2,vy=0,ax=0,ay=0.1;
void setup(){
size(500,500);
img=loadImage("pic.png");
}
void draw(){
background(255);
image(img,x,y,100,150);
x+=vx; y+=vy;
vx+=ax; vy+=0.98;
if(y>400){
vy=-vy*0.8;
y=400;
}
if(x>400)vx=-vx;
if(x<0)vx=-vx;
}
void keyPressed(){
if(keyCode==UP){y-=5;}
if(keyCode==DOWN){y+=5;}
if(keyCode==LEFT){x-=5;}
if(keyCode==RIGHT){x+=5;}
}
沒有留言:
張貼留言