2024年10月7日 星期一

Emily Week05

 ##week05_01_cwa_typhoon_images

PImage img = loadImage("TWI_IR1_CR_800-2024-10-02-09-00.jpg");
size(800, 800);
background(img);



##week05_02_cwa_typhoon_array_loadStrings

int N = 299;//剛好有299張圖
PImage [] imgs = new PImage[299];//準備好299張圖 對應的陣列
void setup() {
  size(800, 800);
  //把list.txt的299行,放入filenames裡
  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張圖
}


##week05_03_cwa_typhoon_2750
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() {//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;
  if (x>0)x=0;
  if (y>0)y=0;
  if (s<0.2) {
    x=0;
    y=0;
    s=0.2;
  }
}


##week05_04_pendulum_mouseDragged_x_y
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;
}



##week05_05_pendulum_cos_sin_draw_line
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;
}


##week05_6_PVector_new_PVector_x_y
void setup() {
  size(400, 600);
  c=new PVector(200, 100);
  p=new PVector(200, 130);
}
PVector c, p;
void draw() {
  background(255);
  ellipse(c.x, c.y, 10, 10);
  ellipse(p.x, p.y, 10, 10);
}


##week05_7_pendulum_PVector_normalize_dot_mult
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)));
  stroke(0, 0, 255);
  line(x, y, x+N.x, y+N.y);
}
void mouseDragged() {//void mouseDragged()
  x=mouseX ;
  y=mouseY;
}


##week05_8_pendulum_not_OK_PVector_sub_veiocity
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);
  //N.mult(100*sin(acos(g)));
  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();
void mouseDragged() {//void mouseDragged()
  x=mouseX ;
  y=mouseY;
}

##上傳github!!


沒有留言:

張貼留言