課堂作業1
// week14-1-PFont-createFont-textSize-text size(300,300); textSize(50); text("Hello",10,50);//預設字型 PFont font = createFont("Times New Roman",50); textFont(font);//change 字型 text("Hello",10,100); //print(PFont.list());//print all style of 字型 for(String name : PFont.list()) println(name);
課堂作業2
// week14_2_PFont_font1_font2_chinese_font_textFont_cursor PFont font1, font2, font3; void setup(){ size(300,300); font1 = createFont("Times New Roman Bold Italic", 50); font2 = createFont("微軟正黑體", 50); font3 = createFont("elffont-rock.otf", 50); } void draw(){ background(0); cursor(CROSS); fill(255); textFont(font1); text("Hello 中文",mouseX+20,mouseY-20); fill(#FF8E8E); textFont(font2); text("Hello 中文",mouseX+20,mouseY+50); textFont(font3); text("ㄅㄆㄇ",mouseX+20,mouseY+100); }課堂作業3-1// week14_3_ik_inverse_kinematics_part1 void setup(){ size(400, 400); //先用2D } float [] angle = new float[5]; //有5個關節 void draw(){ background(255); translate(200, 350); //放下面一點 ellipse(0, 0, 12, 12); //(0,0)放圓 pushMatrix(); rotate(radians(angle[0])); //2D對Z軸轉 rect(0, -5, 50, 10); //直的棒子 popMatrix(); } void mouseDragged(){ angle[0] += mouseX - pmouseX; }課堂作業4// week14_4_ik_inverse_kinematics_part2 void setup(){ size(400, 400); //先用2D } float [] angle = new float[5]; //有5個關節 void draw(){ background(255); translate(200, 350); //放下面一點 ellipse(0, 0, 12, 12); //(0,0)放圓 pushMatrix(); rotate(radians(angle[0])); //2D對Z軸轉 rect(0, -5, 50, 10); //直的棒子 pushMatrix(); translate(50, 0); rotate(radians(angle[1])); rect(0, -5, 50, 10); popMatrix(); popMatrix(); } void mouseDragged(){ angle[ID] += mouseX - pmouseX; } int ID = 0; void keyPressed(){ if(key=='0') ID = 0; if(key=='1') ID = 1; //小心注音輸入法 }課堂作業5// week14_5_ik_inverse_kinematics_part3 // 用簡單的線段,來解真的 ID 的運算 void setup(){ size(400, 400); //先用2D for(int i=0; i<2; i++){ //把頂點從下到上放好 p[i] = new PVector(200, 350-50*i); } } PVector [] p = new PVector[6]; //有6個頂點 void draw(){ background(255); for(int i=0; i<2; i++){ // 用迴圈,畫點、畫字 if(i>0) line(p[i-1].x, p[i-1].y, p[i].x, p[i].y); fill(255, 0, 0); //紅色的圈圈 ellipse(p[i].x, p[i].y, 8, 8); fill(0); text("p:"+i, p[i].x+10, p[i].y); //字往右一點點 } ellipse(mouseX, mouseY, 6, 6); //滑鼠也有1個小點,要控制座標移動 line(p[0].x, p[0].y, mouseX, mouseY); }課堂作業6// week14_6_ik_inverse_kinematics_part4 // 用簡單的線段,來解真的 ID 的運算 void setup(){ size(400, 400); for(int i=0; i<2; i++){ //把頂點從下到上放好 p[i] = new PVector(200, 350-50*i); } } PVector [] p = new PVector[6]; //有6個頂點 void draw(){ background(255); for(int i=0; i<2; i++){ // 用迴圈,畫點、畫字 if(i>0) line(p[i-1].x, p[i-1].y, p[i].x, p[i].y); fill(255, 0, 0); //紅色的圈圈 ellipse(p[i].x, p[i].y, 8, 8); fill(0); text("p:"+i, p[i].x+10, p[i].y); //字往右一點點 } PVector now = new PVector(mouseX, mouseY); //現在的位置 PVector v = PVector.sub(now, p[0]).normalize().mult(50); //短向量 // 因為長度限制為50,所以長向量 先長度變成1 再乘上50 p[1].x = p[0].x + v.x; // 新的位置,是中心,在加長度50的這小段 p[1].y = p[0].y + v.y; // 新的位置,是中心,在加長度50的這小段 ellipse(mouseX, mouseY, 6, 6); //滑鼠也有1個小點,要控制座標移動 line(p[0].x, p[0].y, mouseX, mouseY); }課堂作業7// week14_7_ik_inverse_kinematics_part5 // 用簡單的線段,來解真的 ID 的運算 void setup(){ size(400, 400); for(int i=0; i<6; i++){ //把頂點從下到上放好 p[i] = new PVector(200, 350-50*i); } } PVector [] p = new PVector[6]; //有6個頂點 void draw(){ background(255); for(int i=0; i<6; i++){ // 用迴圈,畫點、畫字 if(i>0) line(p[i-1].x, p[i-1].y, p[i].x, p[i].y); fill(255, 0, 0); //紅色的圈圈 ellipse(p[i].x, p[i].y, 8, 8); fill(0); text("p:"+i, p[i].x+10, p[i].y); //字往右一點點 } PVector now = new PVector(mouseX, mouseY); //現在的位置 PVector v = PVector.sub(now, p[5]).normalize().mult(50); //短向量 // 因為長度限制為50,所以長向量 先長度變成1 再乘上50 p[5].x = p[4].x + v.x; // 新的位置,是中心,在加長度50的這小段 p[5].y = p[4].y + v.y; // 新的位置,是中心,在加長度50的這小段 ellipse(mouseX, mouseY, 6, 6); //滑鼠也有1個小點,要控制座標移動 line(p[4].x, p[4].y, mouseX, mouseY); }課堂作業8// week14_8_ik_inverse_kinematics_part6 // 用簡單的線段,來解真的 ID 的運算 void setup(){ size(400, 400); for(int i=0; i<6; i++){ //把頂點從下到上放好 p[i] = new PVector(200, 350-50*i); } } PVector [] p = new PVector[6]; //有6個頂點 void draw(){ background(255); for(int i=0; i<6; i++){ // 用迴圈,畫點、畫字 if(i>0) line(p[i-1].x, p[i-1].y, p[i].x, p[i].y); fill(255, 0, 0); //紅色的圈圈 ellipse(p[i].x, p[i].y, 8, 8); fill(0); text("p:"+i, p[i].x+10, p[i].y); //字往右一點點 } PVector now = new PVector(mouseX, mouseY); //現在的位置 for(int i=5; i>0; i--){ PVector v = PVector.sub(now, p[i]).normalize().mult(50); //短向量 // 因為長度限制為50,所以長向量 先長度變成1 再乘上50 p[i].x = now.x - v.x; // 新的位置,是中心,在加長度50的這小段 p[i].y = now.y - v.y; // 新的位置,是中心,在加長度50的這小段 now = p[i]; } ellipse(mouseX, mouseY, 6, 6); //滑鼠也有1個小點,要控制座標移動 //line(p[4].x, p[4].y, mouseX, mouseY); }課堂作業9// week14_9_ik_inverse_kinematics_part7 // 用簡單的線段,來解真的 ID 的運算 void setup(){ size(400, 400); for(int i=0; i<6; i++){ //把頂點從下到上放好 p[i] = new PVector(200, 350-50*i); } } PVector [] p = new PVector[6]; //有6個頂點 void draw(){ background(255); for(int i=0; i<6; i++){ // 用迴圈,畫點、畫字 if(i>0) line(p[i-1].x, p[i-1].y, p[i].x, p[i].y); fill(255, 0, 0); //紅色的圈圈 ellipse(p[i].x, p[i].y, 8, 8); fill(0); text("p:"+i, p[i].x+10, p[i].y); //字往右一點點 } PVector now = new PVector(mouseX, mouseY); //現在的位置 p[5].x = now.x; p[5].y = now.y; for(int i=4; i>0; i--){ PVector v = PVector.sub(p[i+1], p[i]).normalize().mult(50); //短向量 // 因為長度限制為50,所以長向量 先長度變成1 再乘上50 p[i].x = p[i+1].x - v.x; // 新的位置,是中心,在加長度50的這小段 p[i].y = p[i+1].y - v.y; // 新的位置,是中心,在加長度50的這小段 } for(int i=1; i<5; i++){ PVector v = PVector.sub(p[i], p[i-1]).normalize().mult(50); p[i].x = p[i-1].x + v.x; p[i].y = p[i-1].y + v.y; } ellipse(mouseX, mouseY, 6, 6); //滑鼠也有1個小點,要控制座標移動 //line(p[4].x, p[4].y, mouseX, mouseY); }課堂作業9b// week14_9b_ik_inverse_kinematics_part8 // 用簡單的線段,來解真的 ID 的運算 void setup(){ size(400, 400); for(int i=0; i<N; i++){ //把頂點從下到上放好 p[i] = new PVector(200, 350-L*i); } } int N = 20, L = 300/N; //本來是6點,距離50 PVector [] p = new PVector[N]; //有6個頂點 void draw(){ background(255); for(int i=0; i<N; i++){ // 用迴圈,畫點、畫字 if(i>0) line(p[i-1].x, p[i-1].y, p[i].x, p[i].y); fill(255, 0, 0); //紅色的圈圈 ellipse(p[i].x, p[i].y, 8, 8); fill(0); text("p:"+i, p[i].x+10, p[i].y); //字往右一點點 } p[N-1].x = mouseX; //照著mouse位置,把最後的點移過去 p[N-1].y = mouseY; for(int i=N-2; i>0; i--){ PVector v = PVector.sub(p[i+1], p[i]).normalize().mult(L); //短向量 // 因為長度限制為L,所以長向量 先長度變成1 再乘上L p[i].x = p[i+1].x - v.x; // 新的位置,是中心,在加長度50的這小段 p[i].y = p[i+1].y - v.y; // 新的位置,是中心,在加長度50的這小段 } for(int i=1; i<N; i++){ PVector v = PVector.sub(p[i], p[i-1]).normalize().mult(L); p[i].x = p[i-1].x + v.x; p[i].y = p[i-1].y + v.y; } ellipse(mouseX, mouseY, 6, 6); //滑鼠也有1個小點,要控制座標移動 //line(p[4].x, p[4].y, mouseX, mouseY); }
沒有留言:
張貼留言