2023年10月12日 星期四

10160756 廖云瑄 week05

 week05

week05_1
劃出一個3D方塊 讓他跟著滑鼠移動
void setup(){
  size(400,400,P3D);//processing 的3D功能
}
void draw(){
  background(#FFFFF2);//鵝黃色背景
  pushMatrix();//備份矩陣
  translate(mouseX,mouseY);//移動
  box(100);//3D的方塊
  popMatrix();//還原矩陣
}
















week05_2
讓方塊對著Y軸轉
把方塊填上綠色
再加入一個方塊 兩倍大 面不填色
void setup(){
  size(400,400,P3D);//processing 的3D功能
}
void draw(){
  background(#FFFFF2);//鵝黃色背景
  pushMatrix();//備份矩陣
  translate(mouseX,mouseY);//移動
  rotateY(radians(mouseX));//對Y軸轉動
  fill(0,255,0);//填綠色
  box(100);//3D的方塊
  
  noFill();///面不填色
  scale(2);//放大兩倍
  box(100);//第二個方塊 放大兩倍
  
  popMatrix();//還原矩陣
}
















week05_3
三個頂點套上顏色
size(410,410,P3D);
beginShape();
fill(255,0,0); vertex(200,0);
fill(0,255,0); vertex(0,400);
fill(0,0,255); vertex(400,400);
endShape();















week05_4
ArrayList<PVector>pt;///大的資料結構ArrayList
void setup(){
  size(400,400,P3D);
  pt=new ArrayList<PVector>();
  
}///初始化,把大的資料結構準備好(裡面放小的資料結構)
void draw(){
  background(#FFFFF2);
  for(PVector p:pt){///特殊的FOR迴圈 得小的資料結構
    ellipse(p.x,p.y,10,10);
  }
}
void mousePressed(){
  pt.add(new PVector(mouseX,mouseY));
  
}///大的資料結構加入小的PVector的物件















week_05_5
ArrayList<PVector>pt;///大的資料結構ArrayList
void setup(){
  size(400,400,P3D);
  pt=new ArrayList<PVector>();
  
}///初始化,把大的資料結構準備好(裡面放小的資料結構)
void draw(){
  pushMatrix();
  if(mousePressed && mouseButton==RIGHT){
    translate(200,200);
    rotate(radians(frameCount));
    translate(-200,-200);
  }
  background(#FFFFF2);
  for(PVector p: pt){
    ellipse(p.x,p.y,10,10);
  }
  beginShape();
  for(PVector p:pt){///特殊的FOR迴圈 得小的資料結構
   vertex(p.x,p.y);
  }
endShape();
popMatrix();
}
void mousePressed(){
  if(mouseButton==LEFT){
    pt.add(new PVector(mouseX,mouseY));
  }
  pt.add(new PVector(mouseX,mouseY));
  
}///大的資料結構加入小的PVector的物件














week05_6
按左鍵紅 按中鍵綠 按右鍵藍
void setup(){
  size(400,400,P3D);
}
void draw(){
  background(255);
  if(mousePressed && mouseButton==LEFT) background(255,0,0);
  if(mousePressed && mouseButton==CENTER) background(0,255,0);
  if(mousePressed && mouseButton==RIGHT) background(0,0,255);
}
void mousePressed(){
  if(mouseButton==LEFT)println("LEFT");
  if(mouseButton==LEFT)println("CENTER");
  if(mouseButton==LEFT)println("RIGHT");
}














week05_7
ArrayList<PVector> pt;
void setup(){
size(400,400,P3D);
pt= new ArrayList<PVector>();
for(int i=0;i<20;i++){
  pt.add(new PVector(i*20,20));
    }
}
void draw(){
  background(255);
  for(PVector p: pt){//劃出20個頂點
    ellipse(p.x,p.y,10,10);
  }
  if(ans!=null)ellipse(ans.x,ans.y,15,15);
}
PVector ans=null;
void mousePressed(){
  for(PVector p: pt){
    if(dist(p.x,p.y,mouseX,mouseY)<5){
      ans=p;
      }
    }
  }














week05_8
ArrayList<PVector> pt;
void setup(){
size(400,400,P3D);
pt= new ArrayList<PVector>();
for(int i=0;i<37;i++){
  pt.add(new PVector(random(400),random(400)) );
}///假設畫面中已經點好37個點
}
void draw(){
  background(255);
  for(PVector p: pt){//劃出20個頂點
    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;
      }
    }
  }
}















week05_9
ArrayList<PVector> pt;
void setup(){
size(400,400,P3D);
pt= new ArrayList<PVector>();
for(int i=0;i<37;i++){
  pt.add(new PVector(random(400),random(400)) );
}///假設畫面中已經點好37個點
}
void draw(){
  background(255);
  for(PVector p: pt){//劃出20個頂點
    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){//厲害的for迴圈 不能增刪裡面的東西
    if(dist(p.x,p.y,mouseX,mouseY)<5){
      ans=p;
        }
      }
    }else if(mouseButton==RIGHT){//右鍵要刪掉 使用傳統for迴圈
      for(int i=0;i<pt.size();i++){
        PVector p=pt.get(i);//要寫2行
         if(dist(p.x,p.y,mouseX,mouseY)<5){
           pt.remove(i);//就把第i個點刪掉
      }
  }
}
}


沒有留言:

張貼留言