要使物品的旋轉點跟圓形的旋轉中心重疊
//week06-1-ellipse-translate-push-rotate-box-pop
void setup(){ size(500,500,P3D); } void draw(){ background(142); ellipse(width/2,height/2,200,200); translate(width/2,height/2);//把東西,放到畫面中心 pushMatrix(); if(mousePressed)rotateZ(radians(frameCount));//對著下面中心旋轉 //press mouse to rotate box(100,30,30);//橫的棒子 popMatrix(); }//week06-2-ellipse-translate-push-rotate-box-pop void setup(){ size(500,500,P3D); } void draw(){ background(142); ellipse(width/2,height/2,200,200); translate(width/2,height/2);//把東西,放到畫面中心 pushMatrix(); if(mousePressed)rotateZ(radians(frameCount));//對著下面中心旋轉 //press mouse to rotate translate(-50,0,0); box(100,30,30);//橫的棒子 popMatrix(); }右鍵轉動,左鍵移動
//week06-3-push-translate-rotate-translate-box-pop void setup(){ size(500,500,P3D); } void draw(){ background(142); ellipse(width/2,height/2,200,200); translate(width/2,height/2);//把東西,放到畫面中心 pushMatrix(); translate(x,y); if(mousePressed && mouseButton == RIGHT){ rotateZ(radians(frameCount));//對著下面中心旋轉 } translate(-50,0,0);//把棒子往左移一半,讓右端放在正中心 box(100,30,30);//橫的棒子 popMatrix(); } float x=0,y=0; void mouseDragged(){ x += mouseX-pmouseX; y += mouseY-pmouseY; }機器手臂
//week06-4-sphere-box-push-T-R-T-box-pop //慢慢組合出機器手臂 void setup(){ size(500,400,P3D); } void draw(){ background(255);//step00 translate(width/2,height/2);//step00 sphere(10);//step04 放個小球,當參考 box(200,50,25);//手肘 fill(252,131,77); pushMatrix(); translate(x,y); if(mousePressed)rotateZ(radians(frameCount));//step03 translate(25,0,0);//step02往右推,讓左端放中心 box(50,25,50);//step01小手腕 popMatrix();//step03 } float x=0,y=0; void mouseDragged(){ x+=mouseX-pmouseX; y+=mouseY-pmouseY; println("x:" + x + "y:" + y);//step07 印出來 }//week06-5-push-T-box-push-T-R-T-box-pop-pop //慢慢組合出機器手臂 void setup(){ size(500,400,P3D); } void draw(){ background(255); translate(width/2,height/2); sphere(10); fill(252,131,77); pushMatrix();//step04 new team translate(x,y);//step05 新的轉動 //step03 把程式往右縮排 box(200,50,25);//step05手肘 pushMatrix();//step03 把程式往右縮排 translate(100,0);//step01 把前一步發現的 100,0 放好 //if(mousePressed)//把if(mousepressed)刪掉 rotateZ(radians(frameCount));//step02只轉動 translate(25,0,0);//往右推,讓左端放中心 box(50,25,50);//小手腕 popMatrix();//step03 把程式往右縮排 popMatrix();//step04 new team } float x=0,y=0; void mouseDragged(){ x+=mouseX-pmouseX; y+=mouseY-pmouseY; println("x:" + x + "y:" + y);// 印出來 }
//week06-6-push-box-push-TRT-box-push-TRT-box-pop-pop-pop //慢慢組合出機器手臂 void setup(){ size(500,400,P3D); } void draw(){ background(255); translate(width/2,height/2); sphere(10); fill(252,131,77); pushMatrix();//step04: push //step05 往右縮排 box(50,200,25);//step03 : arm pushMatrix(); translate(x,y);//step03:掛到手臂上面觀察到 0 ,-100 if(mousePressed) rotateZ(radians(frameCount));//step02: 把旋轉放入 translate(100,0);//step01: 把手肘的移動量100,0放入 box(200,50,25);//手肘 pushMatrix(); translate(100,0); rotateZ(radians(frameCount)); translate(25,0,0); box(50,25,50);//小手腕 popMatrix(); popMatrix(); popMatrix();//step04 pop } float x=0,y=0; void mouseDragged(){ x+=mouseX-pmouseX; y+=mouseY-pmouseY; println("x:" + x + "y:" + y); }
//week06-7-push-RRT-many-TRT-inside-pop //慢慢組合出機器手臂 void setup(){ size(500,800,P3D);//step00 把視窗拉長,看的時候比較完整 } void draw(){ background(255); translate(width/2,height/2); sphere(10); fill(252,131,77); pushMatrix(); if(mousePressed&& mouseButton == RIGHT) rotateY(radians(frameCount));//step02: 按右鍵旋轉 if(mousePressed&& mouseButton == RIGHT) rotateZ(radians(frameCount));//step02: 按右鍵旋轉 translate(0,-100);//step01 要往上抬升到中心 box(50,200,25); pushMatrix(); translate(0,-100);//step00 掛到手臂上面觀察到 0 ,-100 //if(mousePressed)//讓他一直轉 rotateZ(radians(frameCount)); translate(100,0); box(200,50,25);//手肘 pushMatrix(); translate(100,0); rotateZ(radians(frameCount)); translate(25,0,0); box(50,25,50);//小手腕 popMatrix(); popMatrix(); popMatrix(); } float x=0,y=0; void mouseDragged(){ x+=mouseX-pmouseX; y+=mouseY-pmouseY; println("x:" + x + "y:" + y); }







沒有留言:
張貼留言