2025年3月27日 星期四

12750671_week06

// week06_01_ellipse_translate_push_rotate_bax_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)); //對著下面中心旋轉 按下mouse才會旋轉

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

  popMatrix(); //matrix保護

}


// week06_02_ellipse_translate_push_rotate_translate_box_pop

// 再加1個移動,把物體放到「轉盤的中心」

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(); //matrix保護

}

延續week06_1的程式碼 加上移動把物體移到中心


// week06_03_push_translate_rotate_translate_box_pop

// 再加1個移動,把物體放到「轉盤的中心」

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(); //matrix保護

}

float x=0,y=0;

void mouseDragged(){

  x+=mouseX-pmouseX;

  y+=mouseY-pmouseY;

}

week06_3 增加程式碼改為左鍵可將物體移動 右鍵旋轉


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

  sphere(10); //Step04 放個圓球,當世界中心的參考

  

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

  

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

}

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_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); // 手肘

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

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

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

      rotateZ(radians(frameCount)); //Step02 只轉動

      translate(25,0,0);

      box(50,25,50); //Step01 小手腕

    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_T_R_T_box_push_T_R_T_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(); //step:04 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); //小手腕

      popMatrix();

    popMatrix();

  popMatrix(); //step:04 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)); //step03: 旋轉

    if(mousePressed && mouseButton==RIGHT) rotateZ(radians(frameCount)); //step02: 旋轉

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

}




沒有留言:

張貼留言