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();
    if(mousePressed)rotateZ(radians(frameCount));//對著下面中心旋轉
    //press mouse to rotate
    box(100,30,30);//橫的棒子
   popMatrix();
}

//week06-2-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));//對著下面中心旋轉
    //press mouse to rotate
    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);//step00
  translate(width/2,height/2);//step00
  sphere(10);//step04 放個小球,當參考
  box(200,50,25);//手肘
  fill(252,131,77);
  pushMatrix();
    translate(x,y);
    if(mousePressed)rotateZ(radians(frameCount));//step03
    translate(25,0,0);//step02往右推,讓左端放中心
    box(50,25,50);//step01小手腕
   popMatrix();//step03
 }
 float x=0,y=0;
 void mouseDragged(){
   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 new team
    translate(x,y);//step05 新的轉動
    //step03 把程式往右縮排
    box(200,50,25);//step05手肘
    
    pushMatrix();//step03 把程式往右縮排
      translate(100,0);//step01 把前一步發現的 100,0 放好
      //if(mousePressed)//把if(mousepressed)刪掉
      rotateZ(radians(frameCount));//step02只轉動
      translate(25,0,0);//往右推,讓左端放中心
      box(50,25,50);//小手腕
     popMatrix();//step03 把程式往右縮排
   popMatrix();//step04 new team
 }
 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 往右縮排
    box(50,200,25);//step03 : arm
    
    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();//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 要往上抬升到中心
    box(50,200,25);
    pushMatrix();
      
      translate(0,-100);//step00 掛到手臂上面觀察到 0 ,-100
      //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);
 }

沒有留言:

張貼留言