課堂作業1
//week05_1_i_love_you size(300, 300);//300 * 300 stroke(255, 0, 0);//紅色線條 for(int xx = 0; xx < 300; xx++)//大的X 0..300 { for(int yy = 0; yy < 300; yy++)//大的Y 0..300 { float x = (xx - 150) / 100.0;//減一半、除100 float y = -(yy - 150) / 100.0;//減一半、除100 float d = x * x + y * y - 1; if(d * d * d - x * x * y * y * y < 0) point(xx, yy); } }
//week05_1_i_love_you size(300, 300);//300 * 300 stroke(255, 0, 0);//紅色線條 translate(width / 2, height / 2);//translate(150, 150); for(int xx = -150; xx < 150; xx++)//大的X 0..300 { for(int yy = -150; yy < 150; yy++)//大的Y 0..300 { float x = xx / 100.0;//減一半、除100 float y = -yy / 100.0;//減一半、除100 float d = x * x + y * y - 1; if(d * d * d - x * x * y * y * y < 0) point(xx, yy); } }
課堂作業2//week05_2_for_for_ellipse_arc_arc_radians_360 //角度 degrees v.s. radians size(600, 600); background(0); for (int i = 0; i < 6; i ++) { for(int j = 0; j < 6; j ++) { int now = i * 6 + j;//每個圓的編號 ellipse(50 + j * 100, 50 + i * 100, 80, 80); arc(50 + j * 100, 50 + i * 100, 60, 60, 0, now, PIE); arc(50 + j * 100, 50 + i * 100, 40, 40, 0, radians(now * 10), PIE); text(now, j * 100, i * 100 + 30); } }課堂作業3//week05_3_atan2_dy_dx_text_radians_degrees //degrees v.s. radians 結合 week04_1,week05_2 void setup() { size(400, 400); } void draw() { background(128); line(200, 200, 400, 200); line(200, 200, mouseX, mouseY); float dx = mouseX - 200, dy = mouseY - 200; float a = atan2(dy, dx);//可找到 arc radians arc(200, 200, 200, 200, 0, a, PIE);//把 arc radians 拿來用 textSize(30); text("radians: " + a, 100, 100);//radians 弧度/弳度 text("degrees: " + degrees(a), 100, 130);//degrees度 }//week05_3b_atan2_dy_dx_text_radians_degrees //degrees v.s. radians 結合 week04_1,week05_2 void setup() { size(400, 400); } void draw() { background(128); line(200, 200, 400, 200); line(200, 200, mouseX, mouseY); float dx = mouseX - 200, dy = mouseY - 200; float a = atan2(dy, dx);//可找到 arc radians if(a < 0) arc(200, 200, 200, 200, a, 0, PIE);//負~0 else arc(200, 200, 200, 200, 0, a, PIE);//0~正 //arc(200, 200, 200, 200, 0, a, PIE);//把 arc radians 拿來用 textSize(30); text("radians: " + a, 100, 100);//radians 弧度/弳度 text("degrees: " + degrees(a), 100, 130);//degrees度 }課堂作業4//week05_4_translate_mouseX_mouseY_rotate_radians //比較 rotate 與 translate 的順序 void setup() { size(400, 400); } void draw() { background(204); //做以下測試: 下面兩行調換順序 //畫東西之前 translate() 才有效果 //在電腦圖學裡,畫圖時會照著之前「累積的移動、旋轉」來放東西 translate(mouseX, mouseY);//移到 mouse 所在位子 rotate(radians(frameCount)); rect(-50, -5, 100, 10);//寬度100的棒子,放左上角 }課堂作業5//week05_5_rotate_radians_frameCount_translate_mouseX_mouseY //比較 rotate 與 translate 的順序 void setup() { size(400, 400); } void draw() { background(204); //做以下測試: 下面兩行調換順序 //兩行順序不同,一個是自轉,一個是公轉 //在電腦圖學裡,畫圖時會照著之前「累積的移動、旋轉」來放東西 rotate(radians(frameCount) * 10);//1秒60frame,轉60度,要變 radians 單位 translate(mouseX, mouseY);//移到 mouse 所在位子 rect(-50, -5, 100, 10);//寬度100的棒子,放左上角 }
課堂作業6//week05_6_pushMatrix_popMatrix_bad //因為有很多的移動、旋轉,所以用「分階層」做事 void setup() { size(400, 400); } void draw() { background(204); translate(width / 2, height / 2);//移到畫面中心 rotate(radians(frameCount) * 10); rect(-50, -5, 100, 10); translate(width / 2 - 100, height / 2);//移到畫面中心 rotate(radians(frameCount) * 10); rect(-50, -5, 100, 10); }//week05_6_pushMatrix_popMatrix_good //因為有很多的移動、旋轉,所以用「分階層」做事 void setup() { size(400, 400); } void draw() { background(204); pushMatrix(); translate(width / 2, height / 2);//移到畫面中心 rotate(radians(frameCount) * 10); rect(-50, -5, 100, 10); popMatrix(); pushMatrix(); translate(width / 2 - 100, height / 2);//移到畫面中心 rotate(radians(frameCount) * 10); rect(-50, -5, 100, 10); popMatrix(); }課堂作業7//week05_7_many_pushMatrix_popMatrix void setup() { size(500, 500); } void draw() { background(204); for(int x = 50; x < 500; x += 100)//每個距離100 { for(int y = 50; y < 500; y += 100)//每個距離100 { pushMatrix();//會往右縮排 translate(x, y);//移到對應位子 rotate(radians(frameCount)); rect(-50, -5, 100, 10);//長度100的棒子 popMatrix(); } } }










沒有留言:
張貼留言