//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; }
沒有留言:
張貼留言