2023年10月12日 星期四

m week05

 week05

畫出一個矩陣
void setup(){
  size(400,400,P3D); //Processind 的 3D 功能
}
void draw(){
  background(#FFFFF2);
  pushMatrix();//備分矩陣
    translate(mouseX, mouseY);//移動
    box(100);//3D的盒子、方塊
  popMatrix();//還原矩陣
}

讓矩形由Y軸轉動
void setup(){
  size(400,400,P3D); //Processind 的 3D 功能
}
void draw(){
  background(#FFFFF2);
  pushMatrix();//備分矩陣
    translate(mouseX, mouseY);//移動
    rotateY(radians(mouseX)); //對Y軸轉動
    box(100);//3D的盒子、方塊
  popMatrix();//還原矩陣
}

畫一個有顏色的矩形和一個沒顏色的矩形
void setup(){
  size(400,400,P3D); //Processind 的 3D 功能
}
void draw(){
  background(#FFFFF2);
  pushMatrix();//備分矩陣
    translate(mouseX, mouseY);//移動
    rotateY(radians(mouseX)); //對Y軸轉動
    fill(0,255,0);//面填成綠色
    box(100);//3D的盒子、方塊

    noFill();//面不要填
    scale(2);//放大2倍
    box(100);
  popMatrix();//還原矩陣
}

畫一個有填充色的三角形
size(400,400,P3D); //Processind 的 3D 功能
beginShape();
fill(255,0,0); vertex(200,0);
fill(0,255,0); vertex(0,400);
fill(0,0,255); vertex(400,400);
endShape();

讓三角形的線連起來
size(410,410,P3D);
noFill();
beginShape();
vertex(200,0);
vertex(0,400);
vertex(400,400);
endShape(CLOSE);

畫出頂點
ArrayList<PVector> pt;
void setup(){
  size(400,400,P3D);
  pt = new ArrayList<PVector>();
}
void draw(){
  background(#FFFFF2);
  for(PVector p : pt){
    ellipse(p.x, p.y, 10, 10);
  }
}
void mousePressed(){
  pt.add( new PVector(mouseX,mouseY) );
}

用點來使線畫出圖形
ArrayList<PVector> pt;
void setup(){
  size(400,400,P3D);
  pt = new ArrayList<PVector>();
}
void draw(){
  background(#FFFFF2);
  for(PVector p : pt){
    ellipse(p.x, p.y, 10, 10);
  }
  beginShape();
  for(PVector p : pt){
    vertex(p.x, p.y);
  }
  endShape();
}
void mousePressed(){
  pt.add( new PVector(mouseX,mouseY) );
}



畫出頂點後連線成圖形按下右鍵旋轉
ArrayList<PVector> pt;
void setup(){
  size(400,400,P3D);
  pt = new ArrayList<PVector>();
}
void draw(){
  background(#FFFFF2);
  pushMatrix();
  if(mousePressed && mouseButton==RIGHT){
    translate(200,200);
    rotateY(radians(frameCount));
    translate(-200,-200);
  }
    for(PVector p : pt){
      ellipse(p.x, p.y, 10, 10);
    }
    beginShape();
    for(PVector p : pt){
      vertex(p.x, p.y);
    }
    endShape();
  popMatrix();
}
void mousePressed(){
  if(mouseButton==LEFT){
    pt.add( new PVector(mouseX,mouseY) );
  }
}

利用滑鼠左鍵、中鍵和右鍵改變顏色
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);
}

用滑鼠選出點
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){
    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;
    } 
  }
}

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)) );
  }
}
void draw(){
  background(255);
  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;
      }
    } 
  }
}

按右鍵能把點刪除
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)) );
  }
}
void draw(){
  background(255);
  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);
      }
    }
  }
}










  


沒有留言:

張貼留言