2025年3月20日 星期四

12750290-week05

 //week05-1-i-love-you

利用數學公式算出愛心的線條然後畫出愛心

size(300,300);
stroke(255,0,0);
for(int xx=0;xx<300;xx++){//大的X 0..300
  for(int yy=0;yy<300;yy++){//大的Y0..300
    float x=(xx-150)/100.0;//減一半,除一半
    float y=-(yy-150)/100.0;
    // 0..300便-150..+150便-1.5-+1.5
    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);//transalte(150,150)
for(int xx=-150;xx<150;xx++){//大的X 0..300
  for(int yy=-150;yy<150;yy++){//大的Y0..300
    float x=xx/100.0;//除100-1.5..+1.5
    float y=-yy/100.0;
    // 0..300便-150..+150便-1.5-+1.5
    float d=x*x+y*y-1;
    if(d*d*d-x*x*y*y*y<0) point(xx,yy);
  }
}


//week05-2
//角度 degress vs radans 弧度/徑度
先劃出很多個圓,再給他編號,再加上角度
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 vs radians
劃出有角度和徑度的線
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 vs radians
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
//比較rotate與translate的順序
void setup(){
  size(400,400);
}
void draw(){
  background(204);
  translate(mouseX,mouseY);
  rotate(radians(frameCount));
  rect(-50,-5,100,10);
}

//week05-5 //比較rotate與translate的順序 void setup(){ size(400,400); } void draw(){ background(204); rotate(radians(frameCount)*10); translate(mouseX,mouseY); rect(-50,-5,100,10); }

//week05-6-push-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-push-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();
    }
  }
 }



















沒有留言:

張貼留言