2025年3月27日 星期四

week06-12750724

 課堂作業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();//week05 教過的 matrix 保護
    if(mousePressed)//按下 mouse 才轉動
    rotateZ(radians(frameCount));//對著下面中心旋轉
    box(100, 30, 30);//week05 教過的 matrix 保護
  popMatrix();
}

 課堂作業2

//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();//week05 教過的 matrix 保護
    if(mousePressed)//按下 mouse 才轉動
    rotateZ(radians(frameCount));//對著下面中心旋轉
    translate(-50, 0, 0);//把棒子往左移一半,讓右端放在種中心
    box(100, 30, 30);//week05 教過的 matrix 保護
  popMatrix();
}

 課堂作業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();//week05 教過的 matrix 保護
    translate(x, y);
    if(mousePressed && mouseButton == RIGHT)//按下 mouse右鍵 才轉動
    {
      rotateZ(radians(frameCount));//對著下面中心旋轉
    }
    translate(-50, 0, 0);//把棒子往左移一半,讓右端放在種中心
    box(100, 30, 30);//week05 教過的 matrix 保護
  popMatrix();
}
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);//手肘
  
  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
//慢慢組出機器手臂
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) 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);//印出來
}

 課堂作業6
//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();//step04
    box(50, 200, 25);//step03 手臂
    pushMatrix();
      translate(x, y);//step03 掛到手臂上
      if(mousePressed) rotateZ(radians(frameCount));//step02 把旋轉放入
      translate(100, 0);//step01 把手肘移動量放入
      box(200, 50, 25);//手肘
        
      pushMatrix();
        translate(100, 0);//step01 把前一步發現的 100, 0 放好
        //if(mousePressed) rotateZ(radians(frameCount));
        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);
}


 課堂作業7
//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));
    translate(x, y);//step01 往上抬升,把「關節」移到中心
    
    box(50, 200, 25);//手臂
    pushMatrix();
      translate(0, -100);//step00 掛到手臂上
      //if(mousePressed) step00 註解掉,讓它一直轉
      rotateZ(radians(frameCount));
      translate(100, 0);
      box(200, 50, 25);//手肘
        
      pushMatrix();
        translate(100, 0);
        //if(mousePressed) rotateZ(radians(frameCount));
        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);
}

沒有留言:

張貼留言