解壓縮新版processing4.3
生成一個3D立體的盒子、鵝黃色背景,有移動popMatrix pushMatrix:
void setup(){ size(400,400,P3D); } void draw(){ background(#FFFFF2); pushMatrix(); translate(mouseX,mouseY); box(100); popMatrix(); } 轉動盒子,對Y軸轉動:
void setup(){ size(400,400,P3D); } void draw(){ background(#FFFFF2); pushMatrix(); translate(mouseX,mouseY); rotateY(radians(mouseX));//對Y軸轉動 box(100); popMatrix(); } 透明外盒放大兩倍,內盒綠色:void setup(){ size(400,400,P3D); } void draw(){ background(#FFFFF2); pushMatrix(); translate(mouseX,mouseY); rotateY(radians(mouseX));//對Y軸轉動 fill(0,255,0); box(100); noFill(); scale(2); box(100); popMatrix(); } 三角形畫線少了封閉曲線,點線面三角形彩色:size(400,400,P3D); beginShape(); fill(255,0,0); vertex(200,0); fill(0,255,0); vertex(0,400); fill(0,0,255); vertex(400,400); endShape(); 增加close到endshape裡面:size(410,410,P3D); noFill(); beginShape(); vertex(200,0); vertex(0,400); vertex(400,400); endShape(CLOSE); 可大可小的陣列,大的資料結構準備好裡面放小的資料結購,特殊的for迴圈得到小資料結構:ArrayList<PVector> pt; void setup(){ size(400,400,P3D); pt=new ArrayList<PVector>(); } void draw(){ background(#FFFFF2); for(PVector p:pt){ ellipse(p.x,p.y,10,10); } } void mousePressed(){ pt.add(new PVector(mouseX,mouseY)); } 畫線,做出形狀:ArrayList<PVector> pt; void setup(){ size(400,400,P3D); pt=new ArrayList<PVector>(); } void draw(){ background(#FFFFF2); for(PVector p:pt){ ellipse(p.x,p.y,10,10); } beginShape(); for(PVector p:pt){ vertex(p.x,p.y); } endShape(); } void mousePressed(){ pt.add(new PVector(mouseX,mouseY)); } 增加旋轉,左鍵畫線,右鍵旋轉:ArrayList<PVector> pt; void setup(){ size(400,400,P3D); pt=new ArrayList<PVector>(); } void draw(){ background(#FFFFF2); pushMatrix(); if(mousePressed&&mouseButton==RIGHT){ translate(200,200); rotateY(radians(frameCount)); translate(-200,-200); } for(PVector p:pt){ ellipse(p.x,p.y,10,10); } beginShape(); for(PVector p:pt){ vertex(p.x,p.y); } endShape(); popMatrix(); } void mousePressed(){ if(mouseButton==LEFT){ pt.add(new PVector(mouseX,mouseY)); } } 左中右鍵變顏色:void setup(){ size(400,400,P3D); } void draw(){ background(255); if(mousePressed&&mouseButton==LEFT) background(255,0,0); if(mousePressed&&mouseButton==CENTER) background(0,255,0); if(mousePressed&&mouseButton==RIGHT) background(0,0,255); } 選擇滑鼠點擊的點:ArrayList<PVector> pt; void setup(){ size(400,400,P3D); pt=new ArrayList<PVector>(); for(int i=0;i<20;i++){ pt.add(new PVector(i*20,20)); } } void draw(){ background(255); for(PVector p:pt){ ellipse(p.x,p.y,10,10); } if(ans!=null) ellipse(ans.x,ans.y,15,15); } PVector ans=null; void mousePressed(){ for(PVector p:pt){ if(dist(p.x,p.y,mouseX,mouseY)<5){ ans=p; } } } 亂數生成點點,滑鼠中鍵可以拖曳點點,左鍵新增點點:ArrayList<PVector> pt; void setup(){ size(400,400,P3D); pt=new ArrayList<PVector>(); for(int i=0;i<37;i++){ pt.add(new PVector(random(400),random(400))); } } void draw(){ background(255); for(PVector p:pt){ ellipse(p.x,p.y,10,10); } if(ans!=null) ellipse(ans.x,ans.y,15,15); } PVector ans=null; void mouseDragged(){ if(mouseButton==CENTER && ans!=null){ ans.x=mouseX; ans.y=mouseY; } } void mousePressed(){ if(mouseButton==LEFT) pt.add(new PVector(mouseX,mouseY)); else if(mouseButton==CENTER){ for(PVector p:pt){ if(dist(p.x,p.y,mouseX,mouseY)<5){ ans=p; } } } } 右鍵刪除點點,使用remove,找到夠進的點就把第i個點刪掉:ArrayList<PVector> pt; void setup(){ size(400,400,P3D); pt=new ArrayList<PVector>(); for(int i=0;i<37;i++){ pt.add(new PVector(random(400),random(400))); } } void draw(){ background(255); for(PVector p:pt){ ellipse(p.x,p.y,10,10); } if(ans!=null) ellipse(ans.x,ans.y,15,15); } PVector ans=null; void mouseDragged(){ if(mouseButton==CENTER && ans!=null){ ans.x=mouseX; ans.y=mouseY; } } void mousePressed(){ if(mouseButton==LEFT) pt.add(new PVector(mouseX,mouseY)); else if(mouseButton==CENTER){ for(PVector p:pt){ if(dist(p.x,p.y,mouseX,mouseY)<5){ ans=p; } } }else if(mouseButton==RIGHT){ for(int i=0;i<pt.size();i++){ PVector p=pt.get(i); if(dist(p.x,p.y,mouseX,mouseY)<5){ pt.remove(i); } } } }











沒有留言:
張貼留言