2023年10月12日 星期四

Week05

 void setup(){

  size(400,400,P3D);//p語言的3D功能

}

void draw(){

  background(#114514);

  pushMatrix();

    translate(mouseX,mouseY);

    box(100);//正方形

  popMatrix();

}


void setup(){
  size(400,400,P3D);//p語言的3D功能
}
void draw(){
  background(#114514);
  pushMatrix();//備份矩陣
    translate(mouseX,mouseY);
    rotateY(radians(mouseX));//對Y軸轉動
    rotateX(radians(mouseY));//對X軸轉動
    fill(145,0,145);
    box(100);
    
    noFill();//透明
    scale(2);//放大2倍
    box(100);//雖然是100,但是被放大了
  popMatrix();//還原矩陣
}
ArrayList<PVector> pt;//大的資料結構
void setup(){
  size(410,410,P3D);
  pt = new ArrayList<PVector>();
}//初始化,把大的資料結構準備好(裡面放小的資料結構)
void draw(){
  background(#FF0000);
  for(PVector p : pt){
    ellipse(p.x,p.y,10,10);
  }
  beginShape();
  for(PVector p : pt){//特殊FOR迴圈,得小資料結構
    vertex(p.x,p.y);
  }
  endShape();
}
void mousePressed(){
  pt.add(new PVector(mouseX,mouseY));
}//大的資料結構裡加入小PVector物件

最終程式
ArrayList<PVector> pt;//大的資料結構
void setup(){
  size(410,410,P3D);
  pt = new ArrayList<PVector>();
  for(int i=0;i<37;i++){
     pt.add(new PVector(random(400),random(400)));
  }
}
void draw(){
  background(#FFFFFF);
    for(PVector p : pt){
    ellipse(p.x,p.y,10,10);
  }
  if(ans!=null) ellipse(ans.x,ans.y,15,15);
}
PVector ans =null;
void mouseDragged(){
  if(mouseButton==CENTER && ans!=null){
    ans.x=mouseX;
    ans.y=mouseY;
  }
}
void mousePressed(){
  if(mouseButton==LEFT) pt.add(new PVector(mouseX,mouseY));
  else if(mouseButton==CENTER){
    for(PVector p : pt){
     if(dist(p.x,p.y,mouseX,mouseY)<5){
       ans=p;
     }
    }
  }else if(mouseButton==RIGHT){
    for(int i=0;i<pt.size();i++){
      PVector p = pt.get(i);
      if(dist(p.x,p.y,mouseX,mouseY)<5){
        pt.remove(i);
      }
    }
  }
}


沒有留言:

張貼留言