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)); // 對著下面中心旋轉
box(100,30,30); // 橫的棒子
popMatrix();
}
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();
}
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);
translate(width/2,height/2);
sphere(10); // Step04 放個圓球,當世界中心的參考
box(200,50,25); // Step05 手肘
fill(252,131,77);
pushMatrix(); // Step03
translate(x,y); // Step06 發現放100,0
if(mousePressed) rotateZ(radians(frameCount)); // Step03
translate(25,0,0); // Step02 往右推,讓左端放中心
box(50,25,50); // Step01 小手腕
popMatrix(); // Step03
}
float x=0,y=0; // Step06 會動的位置
void mouseDragged(){// Step06
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 新的一組
translate(x,y); // Step05 新的轉動
box(200,50,25); // Step05 手肘
pushMatrix(); // Step03 把程式往右縮排
translate(100,0); // Step01 發現放100,0
//if(mousePressed) rotateZ(radians(frameCount));
rotateZ(radians(frameCount)); // Step02 只轉動
translate(25,0,0); // 往右推,讓左端放中心
box(50,25,50); // 小手腕
popMatrix(); // Step03 把程式往右縮排
popMatrix(); // Step04 新的一組
}
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
box(50,200,25); // Step03 手臂
pushMatrix();
translate(x,y); // Step03 掛到手臂上面
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
}
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) rotateZ(radians(frameCount)); // Step03 右鍵旋轉
if(mousePressed && mouseButton==RIGHT) rotateY(radians(frameCount)); // Step02 右鍵旋轉
translate(0,-100); // Step01 要往上抬升,到中心
box(50,200,25); // 手臂
pushMatrix();
translate(0,-100); // Step00 掛到手臂上面
//if(mousePressed) // Step00 把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(); // Step04
}
float x=0,y=0; // 會動的位置
void mouseDragged(){
x += mouseX - pmouseX;
y += mouseY - pmouseY;
println("x:" + x + " y:" + y);
}







沒有留言:
張貼留言