2025年4月10日 星期四

12750272_陳昱瑄,week05

week05

 //week05-1-i-love-you

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

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

    //

    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++){ //大的x0..300
  for(int yy=-150;yy<150;yy++){ //大的y0..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-radians-360
//角度degrees 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-atan2-dy-dx-text-radians-degrees
//degrees vs. 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( 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
//degrees vs. 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
  //atan2() 出來的值
  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
//比較rotate 與 translate 的順序
void setup(){
  size(400,400);
}
void draw(){
  background(204);
  //請我做以下測試:把下面2行 調一下順序
  //會發現:畫東西之前的 translate()才有效果
  //在電腦圖學理 畫圖時會照之前 累積的移動、旋轉來放東西
  translate(mouseX,mouseY);//移到mouse所在位置
  rotate(radians(frameCount)*10);
  rect(-50,-5,100,10);//寬度100的棒子 但放在左上角
}
//week05-5-rotate-radians-frameCount-translate-mouseX-mouseY
//比較rotate 與 translate 的順序
void setup(){
  size(400,400);
}
void draw(){
  background(204);
  //請我做以下測試:把下面2行 調一下順序
  //會發現:畫東西之前的 translate()才有效果
  //在電腦圖學理 畫圖時會照之前 累積的移動、旋轉來放東西
  rotate(radians(frameCount)*10);
  translate(mouseX,mouseY);//移到mouse所在位置
  rect(-50,-5,100,10);//寬度100的棒子 但放在左上角
}
//week05-6-pushMatrix-popMatrix
//因為有很多移動 旋轉 大腦會亂掉 所以用分階層做事
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+=50){
    for(int y=50;y<500;y+=50){
      pushMatrix();
      translate(x,y);
      rotate(radians(frameCount));
      rect(-50,-5,100,10);
     popMatrix();
    }
  }
}














沒有留言:

張貼留言