2025年3月20日 星期四

電腦圖學week05

 // week05_1_i_love_you

size(300,300);

stroke(255,0,0);

for(int xx=0; xx<300; xx++){

  for(int yy=0; yy<300; yy++){

    float x = (xx-150)/100.0;

    float y = -(yy-150)/100.0;

    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);
stroke(255,0,0);
translate(width/2,height/2);
for(int xx=-150; xx<150; xx++){
  for(int yy=-150; yy<150; yy++){
    float x = xx/100.0;
    float y = -yy/100.0;
    float d = x*x + y*y -1;
    if( d*d*d - x*x*y*y*y < 0) point(xx,yy);
  }
}


//week05_2_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("degress:"+ 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, 0, a, 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_translaye_mouseX_mouseY_rotate_radians
void setup(){
  size(400, 400);
}
void draw(){
  background(204);
  translate(mouseX, mouseY);
  rotate(radians(frameCount));
  rect(-50,-5, 100, 10);
}



week05-5_translaye_mouseX_mouseY_rotate_radians
void setup(){
  size(400, 400);
}
void draw(){
  background(204);
  rotate(radians(frameCount*10));
  translate(mouseX, mouseY);
  rect(-50,-5, 100, 10);
}

//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_pishMatrix_popMatrixgood
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();
    }
  }
}








 











沒有留言:

張貼留言