2025年3月27日 星期四

week06

 


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(); // 第5週教過的 matrix 保護

    if(mousePressed) 

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

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

  popMatrix();

}

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();

}

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();

}

float x = 0,y = 0;

void mouseDragged(){

  x += mouseX - pmouseX;

  y += mouseY - pmouseY;

}

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 印出來

}

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 新的轉動

    // Step03 把程式往右縮排

    box(200,50,25); // Step05 手肘

    

    pushMatrix(); 

      translate(100,0); // Step01 把前一步發現的 100,0 放好

      //if(mousePressed) // Step02 把剛剛的 if(mousePressed) 刪掉

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

}

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

    // Step05 裡面要往右縮一個 TAB

    box(50,200,25); // Step03 手臂

    pushMatrix(); 

      translate(x,y); // Step03 掛到手臂上面,觀察到 0,-100

      if(mousePressed) rotateZ(radians(frameCount)); // Step02 把旋轉放入

      translate(100,0); // Step01 把手臂的移動量1000放入

      box(200,50,25); // 手肘

      

      pushMatrix(); 

        translate(100,0);  

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

}

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)); // Step02 右鍵旋轉
    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(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); // 小手腕
       popMatrix(); 
    popMatrix();
  popMatrix(); 
}
float x = 0,y = 0; // 會動的位置
void mouseDragged(){
 x += mouseX - pmouseX;
 y += mouseY - pmouseY;
 println("x:" + x + " y:" + y); 
}




沒有留言:

張貼留言