2024年9月30日 星期一

周家地契-4















//week04 _1_PShape_loadShape_shape
PShape taiwan = loadShape("Taiwan-icon.svg");
PShape taiwan2 = loadShape("tw.svg");
size(500, 500);
shape(taiwan);
shape(taiwan2);

存svg檔

再用Pshape用出來


















//week04_2_pushMatrix_scale_popMatrix
size(500, 500);
PShape taiwan = loadShape("Taiwan-icon.svg");
PShape taiwan2 = loadShape("tw.svg");
pushMatrix();
  scale(10);
  shape(taiwan);
popMatrix();
pushMatrix();
  scale(0.5);
  shape(taiwan2);
popMatrix();

用電腦圖學學過的pushMatrix和popMatrix和scale來調整大小 






















//week04_3_void_setup_void_draw_void_wheelMouse
PShape taiwan, taiwan2;
void setup() {
  size(500, 500);
  taiwan = loadShape("Taiwan-icon.svg");
  taiwan2 = loadShape("tw.svg");
}
float taiwanScale = 1;
void  draw() {
  background(#92C2F5);
  pushMatrix();
    scale(10*taiwanScale);
    shape(taiwan);
  popMatrix();
  pushMatrix();
    scale(0.5*taiwanScale);
    shape(taiwan2);
  popMatrix();
}
void mouseWheel(MouseEvent e){
  float d = e.getCount();
  if(d>0) taiwanScale *=1.1;
  else taiwanScale *= 0.9;
}

用滾輪縮放



















//week04_4_world_svg_float_s_scale_s_void_mouseWheel_s
PShape world;
void setup(){
  size(800,400);
  world = loadShape("world.svg");
}
float s = 0.4;
void draw(){
  background(#92C2F5);
  scale(s);
  shape(world);
}
void mouseWheel(MouseEvent e){
  if(e.getCount()>0) s *= 1.1;
  else s *= 0.9;
}

比照上一個作業

只是地圖改成世界地圖

s就是上一個的scale





















加入Dragged來拖動

//week04_5_float_x_y_translate_x_y_void_mouseDragged
PShape world;
void setup(){
  size(800,400);
  world = loadShape("world.svg");
}
float s = 0.4, x=0, y=0;
void draw(){
  background(#92C2F5);
  translate(x, y);
  scale(s);
  shape(world);
}
void mouseDragged(){
  x += mouseY - pmouseX;
  y += mouseY - pmouseY;
}
void mouseWheel(MouseEvent e){
  if(e.getCount()>0) s *= 1.1;
  else s *= 0.9;
}


























//week04_6_better_scale
PShape world;
void setup(){
  size(800,400);
  world = loadShape("world.svg");
}
float s = 0.4, x=0, y=0;
float realX = 0, realY = 0;
void draw(){
  background(#92C2F5);
  translate(x, y);
  scale(s);
  shape(world);
  ellipse(realX, realY, 10, 10);
}
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; 
}
























用左鍵和右鍵來讓圓圈縮放























自動畫圓
//week04_a_carrot04_float_t_cos_t_sin_t
void setup(){
  size(600,500);
  background(0);
  stroke(255);
  fill(0);
}
void draw(){
  //ellipse(mouseX, mouseY, 100, 100);
}
float s = 25, t=0;

void mousePressed(){
  ellipse(300+200*cos(t),250+200*sin(t), s, s);
  t+=0.06;
  if(mouseButton==LEFT) s *= 1.1;
  if(mouseButton==RIGHT) s *= 0.9;
  
}

沒有留言:

張貼留言