2025年3月27日 星期四

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

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

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

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

  translate(width/2,height/2);

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

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

    pushMatrix(); // Step03 把程式往右縮排 

    translate(100,0); // Step01 發現放100,0

    //if(mousePressed) rotateZ(radians(frameCount));

    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

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

    

    pushMatrix(); 

      translate(x,y); // Step03 掛到手臂上面

      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); // 小手腕

      popMatrix();

    popMatrix(); 

  popMatrix(); // Step04

}

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) rotateZ(radians(frameCount)); // Step03 右鍵旋轉

    if(mousePressed && mouseButton==RIGHT) rotateY(radians(frameCount)); // Step02 右鍵旋轉

    translate(0,-100); // Step01 要往上抬升,到中心

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

    

    pushMatrix(); 

      translate(0,-100); // Step00 掛到手臂上面

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

}

float x=0,y=0; // 會動的位置

void mouseDragged(){

 x += mouseX - pmouseX;

 y += mouseY - pmouseY;

 println("x:" + x + " y:" + y); 

}



沒有留言:

張貼留言