2025年5月22日 星期四

week14_呱

 week14-1

size(300,300);

textSize(50);

text("hello",10,50);

PFont font=createFont("Times New Roman",50);

textFont(font);

text("hello",10,100);

//print(PFont.list()); 列出現在所有可用的字型

for(String name : PFont.list()) println(name);





week14-2

//week14-2

PFont font1,font2,font3;

void setup(){

   size(300,300);

   font1=createFont("Times New Roman Bold Italic",50);

   font2=createFont("微軟正黑體 Bold",50);

   font3=createFont("elffont-rock.otf",50);

}

void draw(){

   background(0);

   cursor(CROSS);

   fill(255);

   textFont(font1);

   text("hello 中文",mouseX+20,mouseY-20);

   fill(#FF8E8E);

   textFont(font2);

   text("hello 中文",mouseX+20,mouseY+50);

   textFont(font3);

   text("ㄋㄏ",mouseX+20,mouseY+120);

}




//week14-3

void setup(){

   size(400,400); 

}

float [] angle=new float[5];

void draw(){

   background(255);

   translate(200,350);

   ellipse(0,0,12,12);

   

   pushMatrix();

     rotate(radians(angle[0]));

     rect(0,-5,50,10);

   popMatrix();

}

void mouseDragged(){

   angle[ID]+=mouseX-pmouseX; 

}

int ID=0;

void keyPressed(){

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

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

}



//week14-4

void setup(){

   size(400,400); 

}

float [] angle=new float[5];

void draw(){

   background(255);

   translate(200,350);

   ellipse(0,0,12,12);

   

   pushMatrix();

     rotate(radians(angle[0]));

     rect(0,-5,50,10);

     pushMatrix();

       translate(50,0);

       rotate(radians(angle[1]));

       rect(0,-5,50,10);

     popMatrix();

   popMatrix();

}

void mouseDragged(){

   angle[ID]+=mouseX-pmouseX; 

}

int ID=0;

void keyPressed(){

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

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

}





//week14-5

void setup(){

   size(400,400); 

   for(int i=0;i<2;i++){

      p[i]=new PVector(200,350-50*i); 

   }

}

PVector [] p=new PVector[6];

void draw(){

   background(255);

   for(int i=0;i<2;i++){

      if(i>0) line(p[i-1].x,p[i-1].y,p[i].x,p[i].y);

      fill(255,0,0);

      ellipse(p[i].x,p[i].y,8,8);

      fill(0);

      text("p:"+i,p[i].x+10,p[i].y);

   }

   ellipse(mouseX,mouseY,6,6);

   line(p[0].x,p[0].y,mouseX,mouseY);

}




//week14-6

void setup(){

   size(400,400); 

   for(int i=0;i<2;i++){

      p[i]=new PVector(200,350-50*i); 

   }

}

PVector [] p=new PVector[6];

void draw(){

   background(255);

   for(int i=0;i<2;i++){

      if(i>0) line(p[i-1].x,p[i-1].y,p[i].x,p[i].y);

      fill(255,0,0);

      ellipse(p[i].x,p[i].y,8,8);

      fill(0);

      text("p:"+i,p[i].x+10,p[i].y);

   }

   PVector now=new PVector(mouseX,mouseY); //現在位置

   PVector v=PVector.sub(now,p[0]).normalize().mult(50); //短向量

   //因為長度限制50,所以長向量 先長度變成1 再乘上50

   p[1].x=p[0].x+v.x; //新的位置,是中心,再加上長度50

   p[1].y=p[0].y+v.y; //新的位置,是中心,再加上長度50

   ellipse(mouseX,mouseY,6,6);

   line(p[0].x,p[0].y,mouseX,mouseY);

}



//week14-7

void setup(){

   size(400,400); 

   for(int i=0;i<6;i++){

      p[i]=new PVector(200,350-50*i); 

   }

}

PVector [] p=new PVector[6];

void draw(){

   background(255);

   for(int i=0;i<6;i++){

      if(i>0) line(p[i-1].x,p[i-1].y,p[i].x,p[i].y);

      fill(255,0,0);

      ellipse(p[i].x,p[i].y,8,8);

      fill(0);

      text("p:"+i,p[i].x+10,p[i].y);

   }

   PVector now=new PVector(mouseX,mouseY); //現在位置

   PVector v=PVector.sub(now,p[4]).normalize().mult(50); //短向量

   //因為長度限制50,所以長向量 先長度變成1 再乘上50

   p[5].x=p[4].x+v.x; //新的位置,是中心,再加上長度50

   p[5].y=p[4].y+v.y; //新的位置,是中心,再加上長度50

   ellipse(mouseX,mouseY,6,6);

   line(p[4].x,p[4].y,mouseX,mouseY);

}




//week14-8

void setup(){

   size(400,400); 

   for(int i=0;i<6;i++){

      p[i]=new PVector(200,350-50*i); 

   }

}

PVector [] p=new PVector[6];

void draw(){

   background(255);

   for(int i=0;i<6;i++){

      if(i>0) line(p[i-1].x,p[i-1].y,p[i].x,p[i].y);

      fill(255,0,0);

      ellipse(p[i].x,p[i].y,8,8);

      fill(0);

      text("p:"+i,p[i].x+10,p[i].y);

   }

   PVector now=new PVector(mouseX,mouseY); //現在位置

   for(int i=5;i>0;i--){

     PVector v=PVector.sub(now,p[i]).normalize().mult(50); //短向量

     //因為長度限制50,所以長向量 先長度變成1 再乘上50

     p[i].x=now.x-v.x; //新的位置,是中心,再加上長度50

     p[i].y=now.y-v.y; //新的位置,是中心,再加上長度50

     now=p[i];

   }

   ellipse(mouseX,mouseY,6,6);

   //line(p[4].x,p[4].y,mouseX,mouseY);

}



//week14-9

void setup(){

   size(400,400); 

   for(int i=0;i<6;i++){

      p[i]=new PVector(200,350-50*i); 

   }

}

PVector [] p=new PVector[6];

void draw(){

   background(255);

   for(int i=0;i<6;i++){

      if(i>0) line(p[i-1].x,p[i-1].y,p[i].x,p[i].y);

      fill(255,0,0);

      ellipse(p[i].x,p[i].y,8,8);

      fill(0);

      text("p:"+i,p[i].x+10,p[i].y);

   }

   PVector now=new PVector(mouseX,mouseY); //現在位置

   p[5].x=now.x;

   p[5].y=now.y;

   for(int i=4;i>0;i--){

     PVector v=PVector.sub(p[i+1],p[i]).normalize().mult(50); //短向量

     //因為長度限制50,所以長向量 先長度變成1 再乘上50

     p[i].x=p[i+1].x-v.x; //新的位置,是中心,再加上長度50

     p[i].y=p[i+1].y-v.y; //新的位置,是中心,再加上長度50

     now=p[i];

   }

   for(int i=1;i<=5;i++){

      PVector v=PVector.sub(p[i],p[i-1]).normalize().mult(50);

      p[i].x=p[i-1].x+v.x;

      p[i].y=p[i-1].y+v.y;

   }

   ellipse(mouseX,mouseY,6,6);

   //line(p[4].x,p[4].y,mouseX,mouseY);

}



//week14-9

void setup(){

   size(400,800); 

   for(int i=0;i<N;i++){

      p[i]=new PVector(200,350-L*i); 

   }

}

int N=100,L=300/N;

PVector [] p=new PVector[N];

void draw(){

   background(255);

   for(int i=0;i<N;i++){

      if(i>0) line(p[i-1].x,p[i-1].y,p[i].x,p[i].y);

      fill(255,0,0);

      ellipse(p[i].x,p[i].y,5,5);

      fill(0);

      text("p:"+i,p[i].x+10,p[i].y);

   }

   //PVector now=new PVector(mouseX,mouseY); //現在位置

   p[N-1].x=mouseX;

   p[N-1].y=mouseY;

   for(int i=N-2;i>0;i--){

     PVector v=PVector.sub(p[i+1],p[i]).normalize().mult(10); //短向量

     //因為長度限制50,所以長向量 先長度變成1 再乘上50

     p[i].x=p[i+1].x-v.x; //新的位置,是中心,再加上長度50

     p[i].y=p[i+1].y-v.y; //新的位置,是中心,再加上長度50

     //now=p[i];

   }

   for(int i=1;i<=N-1;i++){

      PVector v=PVector.sub(p[i],p[i-1]).normalize().mult(10);

      p[i].x=p[i-1].x+v.x;

      p[i].y=p[i-1].y+v.y;

   }

   ellipse(mouseX,mouseY,5,5);

   //line(p[4].x,p[4].y,mouseX,mouseY);

}






沒有留言:

張貼留言