2025年3月20日 星期四

12750840邱宇倫_week05

 week05_1

//week05_1_i_love_you
size(300, 300); //大小300*300視窗
stroke(255, 0, 0);
for(int xx=0; xx<300; xx++){ //大的x0..300
  for(int yy=0; yy<300; yy++){ //大的y0..300
    float x = (xx-150)/100.0; //減一半、除100
    float y = -(yy-150)/100.0; //減一半、除100
            // 0..300變-150..+150 變-1.5 ~ +15
    float d = x*x +y*y - 1;
    if( d*d*d - x*x*y*y*y < 0) 
    point(xx, yy);
    }
}

week05_1b
//week05_1b_i_love_you
size(300, 300); //大小300*300視窗
stroke(255, 0, 0);
translate(width/2, height/2);
for(int xx=-150; xx<150; xx++){ //大的x-150..150
  for(int yy=-150; yy<150; yy++){ //大的y-150..150
    float x = xx/100.0; //除100 -1.5..+1.5
    float y = -yy/100.0; //除100 -1.5..+1.5
            // 0..300變-150..+150 變-1.5 ~ +15
    float d = x*x +y*y - 1;
    if( d*d*d - x*x*y*y*y < 0) 
    point(xx, yy);
    }
}


week05_2
//week05_2_for_for_ellipse_arc_arc_radians_360
//角度 degress 度 vs. 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);
  }
}

week05_3
//week05_3_atan2_dy_dx_text_radians_degrees
//degrees vs. radians 結合week04_01和week05_02
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( 200, 200, 200, 200, 0, a, PIE);
  textSize(30);
  text( "radians: "+a, 100, 100);
  text( "degress: "+ degrees(a), 100, 130);
}

week05_3b
//week05_3b_atan2_dy_dx_text_radians_degrees
//degrees vs. radians 結合week04_01和week05_02
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
  //atan2()出來的值,介於-PI...+PI中間
  if(a<0) arc( 200, 200, 200, 200, a, 0, PIE);//負的...零
  else    arc( 200, 200, 200, 200, 0, a, PIE);//零...正的
  textSize(30);
  text( "radians: "+a, 100, 100);
  text( "degress: "+ degrees(a), 100, 130);
}

week05_4
  //week05_04_translate_mouseX_mouseY_rotate_radians_frameCount
  //比較rotate與translate的順序
  void setup(){
    size(400, 400);
  }
  void draw() {
    background(204);
    //請做以下測試 : 把下面兩行,調一下順序
    //會發現:畫東西之前的translate()才有效果
    //在電腦圖學理,畫圖時會照著之前累積的移動、來放東西
    translate(mouseX, mouseY);//移到mouse所在位置
    rotate(radians(frameCount));//1秒60個frame, 轉60度,要變radians單位
    rect(-50, -5, 100, 10); //寬度100的棒子,但放在左下角
  }

week05_5
  //week05_05_rotate_radians_frameCount_translate_mouseX_mouseY
  //比較rotate與translate的順序
  void setup(){
    size(400, 400);
  }
  void draw() {
    background(204);
    //請做以下測試 : 把下面兩行,調一下順序
    //會發現:畫東西之前的translate()才有效果
    //在電腦圖學理,畫圖時會照著之前累積的移動、來放東西-
    rotate(radians(frameCount)*10);//1秒60個frame, 轉60度,要變radians單位
    translate(mouseX, mouseY);//移到mouse所在位置
    rect(-50, -5, 100, 10); //寬度100的棒子,但放在左下角
  }

week05_6_bad
//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_good
week05_6_good
//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();
  }


week05_7
//week05_7_many_pushMatrix_popMatrix
void setup(){
  size(500, 500);
}
void draw(){
  background(204);
  for(int x = 50; x<500; x += 100){
    for(int y = 50; y<500; y+= 100){
      pushMatrix();
        translate(x, y);
        rotate(radians(frameCount));
        rect(-50, -5, 100, 10);
      popMatrix();
    }
  }
}


  

沒有留言:

張貼留言