2018年9月27日 星期四

Week03_陳示珮

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)

程式碼 :

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){
     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;}
}







沒有留言:

張貼留言