2024年10月7日 星期一

周家契約5號





























到老師的github下載颱風雲圖
把圖匯入
顯示圖片:

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


















記得把老師給的list.txt加進來
//week_05_2_cwa_typhoon_array_loadStrings
int N = 299;//有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;
  background(imgs[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;
}


















可以拖曳
//week05_04_pendulum_mouseDragged
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;
}



















劃出x軸y軸
//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;
}


















用05的程式碼
把綠色加上去
//week05_07_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(){
  x = mouseX;
  y = mouseY;
}


















還沒完成
//week05_08_pendulum_not_OK_PVector_sub_velocity
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);
  stroke(0, 0, 255);
  line(x, y, x+N.x, y+N.y);
  
  x += N.x / 1000;
  y += N.y / 1000;
  x+= v.x;
  y+= v.y;
}
PVector v = new PVector();
void mouseDragged(){
  x = mouseX;
  y = mouseY;
}










沒有留言:

張貼留言