2025年3月27日 星期四

12750530李忻穎_week06

 作業1:ellipse、translate、push、rotate、box、pop    有點模仿第4週的程式(太複雜),今天重新慢慢建出來 

  • 程式碼:

void setup(){

  size(500,500,P3D);

}

void draw(){

  background(142);

  ellipse(width/2, height/2,200 ,200);

  

  translate(width/2, height/2); //把東西,放到畫面中心

  pushMatrix();  //第5週教過的 Matrix保護

    rotateZ(radians(frameCount)); //對著下面中心旋轉

    box(100,30,30);  //橫的棒子

  popMatrix();  //第5週教過的 Matrix保護

}

  • 執行結果:會在畫面中心旋轉

























作業2:ellipse、translate、push、rotate、translate、box、pop    接續作業1,再加一個移動,把物體放到「轉盤的中心」
  • 程式碼:

//week06_2_ellipse_translate_push_rotate_translate_box_pop

//再加一個移動,把物體放到「轉盤的中心」
void setup(){
  size(500,500,P3D);
}
void draw(){
  background(142);
  ellipse(width/2, height/2,200 ,200);
  
  translate(width/2, height/2); //把東西,放到畫面中心
  pushMatrix();  //第5週教過的 Matrix保護
    if(mousePressed) rotateZ(radians(frameCount)); //對著下面中心旋轉
    translate(-50,0,0);
    box(100,30,30);  //橫的棒子
  popMatrix();  //第5週教過的 Matrix保護
}
  • 執行結果:按住滑鼠就會轉動























作業3:push、translate、rotate、translate、box、pop    接續作業2
  • 程式碼:
//week06_3_push_translate_rotate_translate_box_pop
void setup(){
  size(500,500,P3D);
}
void draw(){
  background(142);
  ellipse(width/2, height/2,200 ,200);
  translate(width/2, height/2); //把東西,放到畫面中心
  pushMatrix();  //第5週教過的 Matrix保護
    translate(x,y);
    if(mousePressed && mouseButton==RIGHT){
      rotateZ(radians(frameCount)); //對著下面中心旋轉
    }
    translate(-50,0,0);
    box(100,30,30);  //橫的棒子
  popMatrix();  //第5週教過的 Matrix保護
}
float x=0 , y=0;
void mouseDragged(){
  x+=mouseX- pmouseX;
  y+=mouseY- pmouseY;
}
  • 執行結果:按左鍵可以拖移方塊,按右鍵可以旋轉方塊

























作業4:sphere、box、push、T_R_T、box、pop    慢慢組合出機器手臂
  • 程式碼:
//week06_4_sphere_box_push_T_R_T_box_pop
//慢慢組合出機器手臂
void setup(){
  size(500,500,P3D);
}
void draw(){
  background(255);  //Step00
  translate(width/2, height/2);  //Step00
  sphere(10);  //Step04 放個圓球, 當世界中心的參考
  
  box(200, 50, 25);  //手肘
  
  fill(252,131,77);  //Step00
  pushMatrix();  //Step03
    translate(x,y);  //Step06 發現放100,0很好
    if(mousePressed) rotateZ(radians(frameCount));  //Step03
    translate(25, 0, 0);  //Step02 往右推,讓左端放中心
    box(50,25,50);  //Step01 小手腕
  popMatrix();  //Step03
}
float x=0, y=0;  //Step06 會動的位置
void mouseDragged(){ //Step06
  x+=mouseX- pmouseX;
  y+=mouseY - pmouseY;
  println("x:"+x+"y:"+y); //Step07印出來
}
  • 執行結果:按住滑鼠,可以拖移、旋轉小方塊


作業5:push、box、push、T_R_T、box、pop、pop    接續作業4
  • 程式碼:
//week06_5_push_box_push_T_R_T_box_pop_pop
//慢慢組合出機器手臂
void setup(){
  size(500,500,P3D);
}
void draw(){
  background(255);  //Step00
  translate(width/2, height/2);  //Step00
  sphere(10);  //Step04 放個圓球, 當世界中心的參考
  
  fill(252,131,77);
  pushMatrix();  //Step04 新的一組
    translate(x,y);  //Steop05 新的轉動
    //Step03 把程式往右縮排
    box(200, 50, 25);  //Step05 手肘(剛剛放錯位置)
    
    pushMatrix();  //Step03 把程式往右縮排
      translate(100,0);  //Step06 把前一步發現放100,0放好
      //if(mousePressed) rotateZ(radians(frameCount));  //Step02把剛剛的if(mousePressed) 刪掉
      rotateZ(radians(frameCount));  //Step02 只轉動
      translate(25, 0, 0);  //Step02 往右推,讓左端放中心
      box(50,25,50);  //Step01 小手腕
    popMatrix();  //Step03 把程式往右縮排
  popMatrix();  //新的一組
}
float x=0, y=0;  //Step06 會動的位置
void mouseDragged(){ //Step06
  x+=mouseX- pmouseX;
  y+=mouseY - pmouseY;
  println("x:"+x+"y:"+y); //Step07印出來
}
  • 執行結果:小方塊會一直轉動,按住滑鼠可以拖移整個方塊




作業6:push、box、push、T_R_T、box、pop、pop    接續作業5
  • 程式碼:
//week06_6_push_box_push_T_R_T_box_pop_pop
//慢慢組合出機器手臂
void setup(){
  size(500,500,P3D);
}
void draw(){
  background(255);
  translate(width/2, height/2);
  sphere(10);
  
  fill(252,131,77);
  pushMatrix();  //Step04 push
    //Step05 裡面要往右縮一個TAB
    box(50,200,25);  //Step03:手臂
    
    pushMatrix();
      translate(x,y);  //Step03 掛到手臂上面, 觀察到0,-100
      if(mousePressed) rotateZ(radians(frameCount));  //Step02: 把旋轉放入
      translate(100,0);  //Step01:把手肘的移動量100,0放入
      box(200, 50, 25);  //手肘
      
      pushMatrix();
        translate(100,0);
        rotateZ(radians(frameCount));
        translate(25, 0, 0);
        box(50,25,50);  //Step01 小手腕
      popMatrix();
    popMatrix();
  popMatrix();  //Step04 pop
}
float x=0, y=0;  //Step06 會動的位置
void mouseDragged(){ //Step06
  x+=mouseX- pmouseX;
  y+=mouseY - pmouseY;
  println("x:"+x+"y:"+y); //Step07印出來
}
  • 執行結果:



作業7:push、RRT、many、TRT、inside、pop 接續作業6
  • 程式碼:
//week06_7_push_RRT_many_TRT_inside_pop
//慢慢組合出機器手臂
void setup(){
  size(500,800,P3D);  //Step00: 把視窗變長一點,看起來比較完整
}
void draw(){
  background(255);
  translate(width/2, height/2);
  sphere(10);  //黑球是中心
  
  fill(252,131,77);
  pushMatrix();
    if(mousePressed && mouseButton==RIGHT) rotateY(radians(frameCount));  //Step03: 右鍵旋轉
    if(mousePressed && mouseButton==RIGHT) rotateZ(radians(frameCount));  //Step02: 右鍵旋轉
    translate(0,-100);  //Step01: 要往上抬升,把關節到中心
    box(50,200,25);  //手臂
    pushMatrix();
      translate(0,-100);  //Step00 掛到手臂上面, 觀察到0,-100
      //if(mousePressed) rotateZ(radians(frameCount));  //Step00: 把if(mousePressed)刪掉,讓他一直轉
      rotateZ(radians(frameCount));
      translate(100,0);
      box(200, 50, 25);  //手肘
      
      pushMatrix();
        translate(100,0);
        rotateZ(radians(frameCount));
        translate(25, 0, 0);
        box(50,25,50);  //Step01 小手腕
      popMatrix();
    popMatrix();
  popMatrix();  //Step04 pop
}
float x=0, y=0;  //Step06 會動的位置
void mouseDragged(){ //Step06
  x+=mouseX- pmouseX;
  y+=mouseY - pmouseY;
  println("x:"+x+"y:"+y); //Step07印出來
}
  • 執行結果:按右鍵整個手臂都會轉動




沒有留言:

張貼留言