1.第一個:基礎旋轉盒子
//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)); // 沿著 Z 軸旋轉 box(100,30,30); popMatrix(); }
2.第二個:移動盒子的位置以對準中心
//week06-2_ellipse_translate_push_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(); if(mousePressed)//按下滑鼠才會動 rotateZ(radians(frameCount));//對著下面中心旋轉 translate(-50,0,0);//向左平移,讓立方體右側位於圓心 box(100,30,30); popMatrix(); }
3.第三個:滑鼠拖曳控制物體移動
//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));//對著Z旋轉 translate(-50,0,0);// 向左平移,讓立方體右側位於圓心 box(100,30,30); popMatrix(); } float x=0,y=0; void mouseDragged(){ x+=mouseX-pmouseX;// 計算滑鼠水平拖曳距離 y+=mouseY-pmouseY;// 計算滑鼠垂直拖曳距離 }4.第四個:加入中心球體與手肘
// week06-4_sphere_box_push_T_R_T_box_popvoid setup(){ size(500,400,P3D); } void draw(){ background(255); // Step00 設定背景顏色 translate(width/2,height/2); // Step01 將原點移至畫面中心 sphere(10); // Step02 繪製中心參考球體 box(200,50,25); // Step03 繪製手肘 fill(252,131,77); // Step04 設定手腕顏色 pushMatrix(); translate(x,y); // Step05 根據滑鼠拖曳位置移動 if(mousePressed) rotateZ(radians(frameCount)); // Step06 沿著 Z 軸旋轉 translate(25,0,0); // Step07 向右平移,將手腕左端放置於圓心 box(50,25,50); // Step08 繪製小手腕 popMatrix(); } float x=0,y=0; void mouseDragged(){ x+=mouseX-pmouseX; y+=mouseY-pmouseY; }5.第五個:組合兩層關節的手臂
// week06-5_push_T_box_push_T_R_T_box_pop_popvoid setup(){ size(500,400,P3D); } void draw(){ background(255); // Step00 設定背景顏色 translate(width/2,height/2); // Step01 將原點移至畫面中心 sphere(10); // Step02 繪製中心參考球體 fill(252,131,77); // Step03 設定手臂顏色 pushMatrix(); translate(x,y); // Step04 根據滑鼠拖曳位置移動 box(200,50,25); // Step05 繪製手肘 pushMatrix(); translate(100,0); // Step06 移動至手肘右端 rotateZ(radians(frameCount)); // Step07 沿著 Z 軸旋轉 translate(25,0,0); // Step08 向右平移,將手腕左端放置於圓心 box(50,25,50); // Step09 繪製手腕 popMatrix(); popMatrix(); } float x=0,y=0; void mouseDragged(){ x+=mouseX-pmouseX; y+=mouseY-pmouseY; }6.第六個:三層關節的手臂
// week06-6_push_box_push_TRT_box_push_TRT_box_pop_pop_popvoid setup(){ size(500,400,P3D); } void draw(){ background(255); // Step00 設定背景顏色 translate(width/2,height/2); // Step01 將原點移至畫面中心 sphere(10); // Step02 繪製中心參考球體 fill(252,131,77); // Step03 設定手臂顏色 pushMatrix(); box(50,200,25); // Step04 繪製手臂 pushMatrix(); translate(x,y); // Step05 根據滑鼠拖曳位置移動 if(mousePressed) rotateZ(radians(frameCount)); // Step06 沿著 Z 軸旋轉 translate(100,0); // Step07 移動至手肘右端 box(200,50,25); // Step08 繪製手肘 pushMatrix(); translate(100,0); // Step09 移動至手腕右端 rotateZ(radians(frameCount)); // Step10 沿著 Z 軸旋轉 translate(25,0,0); // Step11 向右平移,將手腕左端放置於圓心 box(50,25,50); // Step12 繪製手腕 popMatrix(); popMatrix(); popMatrix(); } float x=0,y=0; void mouseDragged(){ x+=mouseX-pmouseX; y+=mouseY-pmouseY; }7.第七個:多層旋轉手臂
// week06-7_push_RRT_many_TRT_inside_popvoid setup(){ size(500,800,P3D); } void draw(){ background(255); // Step00 設定背景顏色 translate(width/2,height/2); // Step01 將原點移至畫面中心 sphere(10); // Step02 繪製中心參考球體 fill(252,131,77); // Step03 設定手臂顏色 pushMatrix(); if(mousePressed && mouseButton==RIGHT) rotateY(radians(frameCount)); // Step04 沿著 Y 軸旋轉 if(mousePressed && mouseButton==RIGHT) rotateZ(radians(frameCount)); // Step05 沿著 Z 軸旋轉 translate(0,-100); // Step06 向上平移,調整手臂位置 box(50,200,25); // Step07 繪製手臂 pushMatrix(); translate(0,-100); // Step08 移動至手臂頂端 rotateZ(radians(frameCount)); // Step09 沿著 Z 軸旋轉 translate(100,0); // Step10 移動至手肘右端 box(200,50,25); // Step11 繪製手肘 pushMatrix(); translate(100,0); // Step12 移動至手腕右端 rotateZ(radians(frameCount)); // Step13 沿著 Z 軸旋轉 translate(25,0,0); // Step14 向右平移,將手腕左端放置於圓心 box(50,25,50); // Step15 繪製手腕 popMatrix(); popMatrix(); popMatrix(); } float x=0,y=0; void mouseDragged(){ x+=mouseX-pmouseX; y+=mouseY-pmouseY; }
沒有留言:
張貼留言