2025年4月17日 星期四

week09_呱

week09-1

PShape body,head;

void setup(){

   size(400,400,P3D); 

   body=loadShape("body.obj");

   head=loadShape("head.obj");

}

void draw(){

   background(204);

   translate(200,300);

   sphere(10); //原點的球

    

   scale(10,-10,10); //y要上下反過來

   shape(body,0,0);

   shape(head,0,0);

}





week09-2

//week09-2_gundam_head_body_push_trt_pop
PShape body,head;
void setup(){
   size(400,400,P3D); 
   body=loadShape("body.obj");
   head=loadShape("head.obj");
}
void draw(){
   background(204);
   translate(200,300);
   sphere(10); //原點的球
    
   scale(10,-10,10); //y要上下反過來
   shape(body,0,0);
   pushMatrix();
     translate(0,22);
     rotateY(radians(mouseX-200));
     rotateX(radians(mouseY-60));
     translate(0,-22);
   shape(head,0,0);
   popMatrix();
}



week09-3

PShape uparm1,upuparm1;

void setup(){

   size(400,400,P3D); 

   uparm1=loadShape("uparm1.obj");

   upuparm1=loadShape("upuparm1.obj");

}


void draw(){

   background(204);

   translate(200,300);

   sphere(3); //原點的球

    

   scale(10,-10,10); //y要上下反過來

   

   shape(upuparm1,0,0); //上上手臂

   pushMatrix();

     translate(-4.1,19.9); //掛回原本的位置

     rotateX(radians(mouseY));

     translate(4.1,-19.9); //把物體旋轉中心放到座標中心

     //translate(mouseX/10,-mouseY/10); //移動、找數值

     //println(mouseX/10,-mouseY/10); //印出適合的數值

     shape(uparm1,0,0); //上手臂

   popMatrix();

}



week09-4

//week09-4_gundam_uparm_upuparm_hand

PShape uparm1,upuparm1,hand1;

void setup(){

   size(400,400,P3D); 

   uparm1=loadShape("uparm1.obj");

   upuparm1=loadShape("upuparm1.obj");

   hand1=loadShape("hand1.obj");

}


void draw(){

   background(204);

   translate(200,300);

   sphere(3); //原點的球

    

   scale(10,-10,10); //y要上下反過來

   

   shape(upuparm1,0,0); //上上手臂

   pushMatrix();

     translate(-4.1,19.9); //掛回原本的位置

     rotateZ(radians(mouseX));

     translate(4.5,-19.9); //把物體旋轉中心放到座標中

     shape(uparm1,0,0); //上手臂

     pushMatrix();

       translate(-4.5,16.9);

       rotateX(radians(mouseY));

       translate(4.5,-16.9);

       //translate(mouseX/10,-mouseY/10); //移動、找數值

       //println(mouseX/10,-mouseY/10); //印出適合的數值

       shape(hand1,0,0);

     popMatrix();

   popMatrix();

}



week09-5

//week09-5_gundam_uparm_upuparm_hand

PShape uparm1,upuparm1,hand1;

void setup(){

   size(400,400,P3D); 

   uparm1=loadShape("uparm1.obj");

   upuparm1=loadShape("upuparm1.obj");

   hand1=loadShape("hand1.obj");

}

float[]angle=new float[20];

int ID=0;

void keyPressed(){

   if(key=='1') ID=1;

   if(key=='2') ID=2;

}

void mouseDragged(){

   angle[ID]+=mouseX-pmouseX; 

}


void draw(){

   background(204);

   translate(200,300);

   sphere(3); //原點的球

    

   scale(10,-10,10); //y要上下反過來

   

   shape(upuparm1,0,0); //上上手臂

   pushMatrix();

     translate(-4.1,19.9); //掛回原本的位置

     rotateZ(radians(angle[1]));

     translate(4.5,-19.9); //把物體旋轉中心放到座標中

     shape(uparm1,0,0); //上手臂

     pushMatrix();

       translate(-4.5,16.9);

       rotateX(radians(angle[2]));

       translate(4.5,-16.9);

       //translate(mouseX/10,-mouseY/10); //移動、找數值

       //println(mouseX/10,-mouseY/10); //印出適合的數值

       shape(hand1,0,0);

     popMatrix();

   popMatrix();

}





week09-6

//week09-6_save_saveString_loadString

void setup(){

  size(300,300);

  rect(10,10,80,80);

  rect(110,110,80,80);

  save("file.png"); //可把某個畫面存檔

  another = loadStrings("lines.txt"); //如果讀到了,就有陣列

}

int x=10,y=10,ID=0;

void draw(){

   background(204);

   rect(x,y,80,80);

   if(another != null){

      int[] now=int(split(another[ID],' ')); 

      rect(now[0],now[1],80,80);

      ID=(ID+1)%another.length;

   }

}

void mouseDragged(){

   x += mouseX - pmouseX;

   y += mouseY - pmouseY;

   String now = x + " " + y; //現在座標的字串

   lines.add(now); //印出來

}

ArrayList<String> lines = new ArrayList<String>(); //ArrayList資料結構

String [] another; //另外一個讀到的字串資料(一開始沒有東西)

void keyPressed(){

    String [] arr = new String[lines.size()]; //傳統Java陣列的資料結構

    lines.toArray(arr); //把ArrayLis轉換成傳統的陣列,以便存檔

    if(key=='s') saveStrings("lines.txt",arr); //按下英文小寫s會存檔

}

會動欸







沒有留言:

張貼留言