2024年10月7日 星期一

WEEK05山陀兒一生就這樣散了

 //week05_01_cwa_typhoon_imges

//存檔後,Ctrl-開檔案總管,看data目錄裡,一堆圖檔

PImage img = loadImage("TWI_IR1_CR_800-2024-10-02-08-00.jpg");

size(800,800);

background(img);//若圖的大小,與size()相同,可直接把圖當背景



//week05_02_cwa_typhoon_array_loadStrings

//老師準備list.txt裡面有299行(很多圖檔的檔名)

int N =299;//剛好有299張圖

PImage [] imges = new PImage[299];

void setup()

{

  size(800, 800);

  //把list.txt的299行,放入filenames裡

  String []filenames = loadStrings("list.txt");

  for (int i=0; i<N; i++)

  {//把每一張圖都讀進來

   imges[i]= loadImage(filenames[i]);

  }

}

void draw() {

  int i = frameCount%N;

  background(imges[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() {
  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_x_y

void setup(){

  size(400,600);

}

float x = 200,y = 300;

void draw(){

background(255);

line(200,100,x,y);

ellipse(x, y, 40,40);

}

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, 40,40);
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_06_PVector_new_PVector_x_y
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);
}





// 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, 40, 40);
  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;
}



// 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, 40, 40);

  stroke(255, 0, 0);//紅色往下的線

  line(x, y, x, y+100);


  PVector d = new PVector(x-200, y-100).normalize();//長度1

  PVector d2 = new PVector(0, 1);//cos(a)

  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)));//g是 cos(a),acos(g)就是角度 a

  stroke(0, 0, 255);//藍色線往右下

  line(x, y, x+N.x, y+N.y);


  v.x += N.x /1000; // x+= N.x / 100;

  v.y += N.y /1000; // y +=N.y /100;

  x += v.x;

  y += v.y;

}

PVector v = new PVector();//球的速度,一開始是0

void mouseDragged() {

  x = mouseX;

  y = mouseY;

}









沒有留言:

張貼留言