2025年3月27日 星期四

week06_11131301賴珮語

2025-03-27 Week06
1. T-R-T
2. 組合出機器手臂
3. HW2:利用方塊,組合出自己的機器人
4. 故事

課堂練習1
當滑鼠點擊時 中間的長方形會轉動
//week06_1_ellipse_translate_push_rotate_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(); //第五周教過的 matrix 保護
    //要按下滑鼠才會轉動
    if(mousePressed)rotateZ(radians(frameCount));//對著下面的中心旋轉
    box(100, 30, 30);//橫的棒子
  popMatrix(); //第五周教過的 matrix 保護
}

課堂練習2
與上一個練習很相似 不過這次加了一個translate讓旋轉的中心點不是在長方形的中間而是在右端
//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(); //第五周教過的 matrix 保護
    //要按下mouse才轉給你看
    if(mousePressed)rotateZ(radians(frameCount));//對著下面的中心旋轉
    translate(-50,0,0); //把棒子往左移一半 讓右端放在正中心
    box(100, 30, 30);//橫的棒子
  popMatrix(); //第五周教過的 matrix 保護
}

課堂練習3
左鍵移動棒子 右鍵旋轉棒子 
//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(); //第五周教過的 matrix 保護
  translate(x,y);
    //要按下mouse才轉給你看
    if(mousePressed && mouseButton==RIGHT){
      rotateZ(radians(frameCount));//對著下面的中心旋轉
    }
    translate(-50,0,0); //把棒子往左移一半 讓右端放在正中心
    box(100, 30, 30);//橫的棒子
  popMatrix(); //第五周教過的 matrix 保護
}
float x=0,y=0;
void mouseDragged(){
  x+=mouseX-pmouseX;
  y+=mouseY-pmouseY;
}


課堂練習4
//week06_4_sphere_box_push_T_R_T_box_pop
//慢慢組合出機器手臂
void setup(){
  size(500, 400, P3D);
}
void draw(){
  background(255); //step00
  translate(width/2,height/2); //step00
  sphere(10); //step04放個圓球 當作世界中心參考
  
  box(200, 50, 25); //step05手肘
  
  fill(252,131,77);
  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
//week06_5_push_T_box_push_T_R_T_box_pop_pop
//慢慢組合出機器手臂
void setup(){
  size(500, 400, P3D);
}
void draw(){
  background(255); 
  translate(width/2,height/2); 
  sphere(10); 
 
  fill(252,131,77);
  pushMatrix(); //step04 新的一組
    translate(x,y); //step05 新的轉動
    box(200, 50, 25); //step05 手肘
    
    //step03 把程式往右縮排
    pushMatrix(); //step03 把程式往右縮排
      translate(100,0); //step01 把前一部發現的 100,0 放好
      //if(mousePressed) //step02 把剛剛的if刪掉
      rotateZ(radians(frameCount)); //step02 一直轉動
      translate(25,0,0); //往右推 讓左端放中心
      box(50,25,50); //小手腕
    popMatrix(); //step03 把程式往右縮排
   
  popMatrix(); //step04 新的一組
}
float x=0,y=0; //會動的位置
void mouseDragged(){ 
  x+=mouseX-pmouseX; //新的位置減舊的位置
  y+=mouseY-pmouseY;
  println("x:"+x+"y:"+y); 
}


課堂練習6
//week06_6_push_box_push_TRT_box_push_TRT_box_pop_pop_pop
//慢慢組合出機器手臂
void setup(){
  size(500, 400, P3D);
}
void draw(){
  background(255); 
  translate(width/2,height/2); 
  sphere(10); 
 
  fill(252,131,77);
  pushMatrix(); //step04 push
  box(50,200,25); //手臂
  
    //step05裡面要往右縮排
    pushMatrix();
      translate(x,y); //step03 掛到手臂上面 觀察到0,-100
      if(mousePressed)rotateZ(radians(frameCount)); //step02 把旋轉放入
      translate(100,0);  //step01 把手肘的移動量放入
      box(200, 50, 25); //手肘
      
      pushMatrix(); 
        translate(100,0); 
        //if(mousePressed) 
        rotateZ(radians(frameCount)); 
        translate(25,0,0); 
        box(50,25,50); //小手腕
      popMatrix(); 
    popMatrix();
  popMatrix(); //step04 pop
}
float x=0,y=0; //會動的位置
void mouseDragged(){ 
  x+=mouseX-pmouseX; //新的位置減舊的位置
  y+=mouseY-pmouseY;
  println("x:"+x+"y:"+y); 
}


課堂練習7
//week06_7_push_RRT_many_TRT_insides_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));
  if(mousePressed&& mouseButton==RIGHT)rotateZ(radians(frameCount)); //step02 右鍵旋轉
  translate(0,-100); //step01 要往上抬升0,-100 把關節移到中心
  box(50,200,25); //手臂
  
    pushMatrix();
      translate(0,-100); //step00 掛到手臂上面 觀察到0,-100
      //if(mousePressed) //step00 把if刪掉 讓他一直轉
      rotateZ(radians(frameCount)); 
      translate(100,0);  
      box(200, 50, 25); //手肘
      
      pushMatrix(); 
        translate(100,0); 
        //if(mousePressed) 
        rotateZ(radians(frameCount)); 
        translate(25,0,0); 
        box(50,25,50); //小手腕
      popMatrix(); 
    popMatrix();
  popMatrix(); 
}
float x=0,y=0; //會動的位置
void mouseDragged(){ 
  x+=mouseX-pmouseX; //新的位置減舊的位置
  y+=mouseY-pmouseY;
  println("x:"+x+"y:"+y); 
}





沒有留言:

張貼留言