2025年3月20日 星期四

week05

 

week05_1_i_love_you

size(300,300); // 大小300x300

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_1b_i_love_you

size(300,300); // 大小300x300

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);

  }

week05_2_for_for_ellipse_arc_arc_radians_360

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_atan2_dy_dx_text_radians_degrees

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("degrees: "+degrees(a),100,130);

}

week05_3b_atan2_dy_dx_text_radians_degrees

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);

  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("degrees: "+degrees(a),100,130);

}

week05_4_translate_mouseX_mouseY_rotate_radians_frameCount

void setup(){

  size(400,400);

}

void draw(){

  background(204);

  // 在電腦圖學裡,畫圖時,會照著(累積的移動、旋轉)來放東西

  translate(mouseX,mouseY); // 移到mouse所在位置

  rotate(radians(frameCount)*10);

  rect(-50,-5,100,10); // 寬度100的棒子,但放在左上角

}

week05_5_rotate_radians_frameCount_translate_mouseX_mouseY

void setup(){

  size(400,400);

}

void draw(){

  background(204);

  // 在電腦圖學裡,畫圖時,會照著(累積的移動、旋轉)來放東西

  rotate(radians(frameCount)*10);

  translate(mouseX,mouseY); // 移到mouse所在位置

  rect(-50,-5,100,10); // 寬度100的棒子,但放在左上角

}

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();

}

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();

    }

  }

}

week05_7b_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);

      float a = (y*500+x)/50000.0;

      rotate(radians(frameCount)*a);

      rect(-50,-5,100,10);

      popMatrix();

    }

  }

}



沒有留言:

張貼留言