2024年10月7日 星期一

WEEK05你劈我瓜是吧!?

 Week05

顯示一張圖
PImage img = loadImage("TWI_IR1_CR_800-2024-10-02-08-00.jpg");
size(800, 800);
background(img);

依時間顯示圖片
int N = 299;
PImage[] imgs = new PImage[299];
void setup(){
  size(800, 800);
  String[]filenames = loadStrings("list.txt");
  for(int i=0; i<N; i++){//把每一張圖都讀進來
    imgs[i] = loadImage(filenames[i]);
  }
}
void draw(){
  int i = frameCount % N;//照時間輪%N取餘數,避免超過陣列大小
  background(imgs[i]);//顯示第i張圖
}
 
節和上週week04_6_better_scale&今天的程式,可以進行拖曳、縮放
PImage img;
void setup() {
  size(500, 500);
  img =loadImage("LCC_VIS_TRGB_2750-2024-10-02-07-40.jpg");
}
float s = 1.0, x = 0, y = 0;
float realX = 0, realY = 0;
void draw() {
  background(255);
  translate(x, y);
  scale(s);
  image(img, 0, 0);
}
void mouseDragged(){
  x += mouseX - pmouseX;
  y += mouseY - pmouseY;
}
void mouseWheel(MouseEvent e) {
  realX = (mouseX - x) / s;
  realY = (mouseY - y) / s;
  float oldS = s;
  if (e.getCount()<0) s *= 1.1;//大於、小於決定縮放方向
  else s *= 0.9;
  x = x + realX*oldS - realX*s;
  y = y + realY*oldS - realY*s;
}



畫出一個不會動,可以滑鼠拖曳的單擺
void setup(){
  size(400, 600);
}
float x = 200, y=300;
void draw(){
   background(255);
   line(200, 100, x, y);
   ellipse(x, y, 30, 30);
}

void mouseDragged(){
   x = mouseX;
   y = mouseY;
}

多了兩條線用來兩角度的
void setup(){
  size(400, 600);
}
float x = 200, y=300;
void draw(){
   background(255);
   stroke(0);
   line(200, 100, x, y);
   ellipse(x, y, 30, 30);
   stroke(255, 0, 0);
   line(x, y, x, y+100);
   PVector d = new PVector(x-200, y-100).normalize();
   PVector d2 = new PVector(0,1);
   float g = PVector.dot(d,d2);
   d.mult(100*g);
   stroke(0, 255, 0);
   line(x, y, x+d.x, y+d.y);
}

void mouseDragged(){
   x = mouseX;
   y = mouseY;
}
void setup(){
   size(400, 600); 
   c = new PVector(200, 100);// new出新的物件
   p = new PVector(200, 130);// new出新的物件
}
PVector c, p;
void draw(){
   background(255);
   ellipse(c.x, c.y, 10, 10);//使用物件的c.x
   ellipse(p.x, p.y, 10, 10);
}



void setup(){
  size(400, 600);
}
float x = 200, y=300;
void draw(){
   background(255);
   stroke(0);
   line(200, 100, x, y);
   ellipse(x, y, 30, 30);
   stroke(255, 0, 0);
   line(x, y, x, y+100);
   PVector d = new PVector(x-200, y-100).normalize();
   PVector d2 = new PVector(0,1);
   float g = PVector.dot(d,d2);
   d.mult(100*g);
   stroke(0, 255, 0);
   line(x, y, x+d.x, y+d.y);
   
   PVector N = new PVector(d.y, -d.x).normalize();
   N.mult(100*sin(acos(g)));//g是cos(a),acos(g)就是角度a
   stroke(0,0,255);
   line(x, y, x+N.x, y+N.y);
}

void mouseDragged(){
   x = mouseX;
   y = mouseY;
}



會左右擺動但會無限拉長
void setup(){
  size(400, 600);
}
float x = 200, y=300;
void draw(){
   background(255);
   stroke(0);
   line(200, 100, x, y);
   ellipse(x, y, 30, 30);
   stroke(255, 0, 0);
   line(x, y, x, y+100);
   
   PVector d = new PVector(x-200, y-100).normalize();
   PVector d2 = new PVector(0,1);
   float g = PVector.dot(d,d2);
   d.mult(100*g);
   stroke(0, 255, 0);
   line(x, y, x+d.x, y+d.y);
   
   PVector N = PVector.sub(d2.mult(100), d);//PVector N = new PVector(d.y, -d.x).normalize();
   //N.mult(100*sin(acos(g)));//g是cos(a),acos(g)就是角度a
   stroke(0,0,255);
   line(x, y, x+N.x, y+N.y);
   v.x += N.x / 1000;
   v.y += N.y / 1000;
   x += v.x;
   y += v.y;
}
PVector v = new PVector();//球的速度,一開始是0
void mouseDragged(){
   x = mouseX;
   y = mouseY;
}



沒有留言:

張貼留言