2023年9月28日 星期四

jason1230 week03

 1-1

設定點、線、面


void setup(){
  size(500,500);
}
float x=250,y=250;
void draw(){
  ellipse(x,y,5,5);
}

1-1-2

新增兩行程式,會從中心的點往右下角畫一條線

void setup(){
  size(500,500);
}
float x=250,y=250;
float dx=1,dy=1;
void draw(){
  ellipse(x,y,5,5);
  x+=dx;
  y+=dy;
}

1-2

新增亂數,讓點能夠隨機移動,再增加限制,讓點碰到邊界可以彈回來

void setup(){
  size(500,500);
  dx=random(-1,+1);//亂數
  dy=random(-1,+1);//亂數
}
float x=250,y=250;
float dx=1,dy=1;
void draw(){
  background(0);
  ellipse(x,y,5,5);
  x+=dx;
  y+=dy;
  if(x<0 || x>500)dx=-dx;
  if(y<0 || y>500)dy=-dy;
}

1-3

把原本只設一個點,改成矩陣數量更多,利用迴圈使每一點的原點位置都是隨機
void setup(){
  size(500,500);
  for(int i=0;i<20;i++){
    x[i]=random(500);
    y[i]=random(500);
    dx[i]=random(-1,+1);//亂數
    dy[i]=random(-1,+1);//亂數
  }
}
float []x=new float[20];
float []y=new float[20];
float []dx=new float[20];
float []dy=new float[20];
void draw(){
  background(0);
  for(int i=0;i<20;i++){
    ellipse(x[i],y[i],5,5);
    x[i]+=dx[i];
    y[i]+=dy[i];
    if(x[i]<0 || x[i]>500)dx[i]=-dx[i];
    if(y[i]<0 || y[i]>500)dy[i]=-dy[i];
  }
}

1-4

新增線條,新增迴圈
void setup(){
  size(500,500);
  for(int i=0;i<20;i++){
    x[i]=random(500);
    y[i]=random(500);
    dx[i]=random(-1,+1);//亂數
    dy[i]=random(-1,+1);//亂數
  }
}
float []x=new float[20];
float []y=new float[20];
float []dx=new float[20];
float []dy=new float[20];
void draw(){
  background(0);
  for(int i=0;i<20;i++){
    ellipse(x[i],y[i],5,5);
    for(int k=0;k<20;k++){
      stroke(255,0,0);
      if(dist(x[i],y[i],x[k],y[k])<100)
        line(x[i],y[i],x[k],y[k]);
    }
    x[i]+=dx[i];
    y[i]+=dy[i];
    if(x[i]<0 || x[i]>500)dx[i]=-dx[i];
    if(y[i]<0 || y[i]>500)dy[i]=-dy[i];
  }
}

2-1

增加點的數量,更改顏色
void setup(){
  size(500,500);
  for(int i=0;i<N;i++){
    x[i]=random(500);
    y[i]=random(500);
    dx[i]=random(-1,+1);//亂數
    dy[i]=random(-1,+1);//亂數
  }
}
int N=40;
float []x=new float[N];
float []y=new float[N];
float []dx=new float[N];
float []dy=new float[N];
void draw(){
  background(0);
  for(int i=0;i<N;i++){
    ellipse(x[i],y[i],5,5);
    for(int k=0;k<N;k++){
      float d=dist(x[i],y[i],x[k],y[k]);
      stroke(2.55*(100-d));
      if(d<100)
        line(x[i],y[i],x[k],y[k]);
    }
    x[i]+=dx[i];
    y[i]+=dy[i];
    if(x[i]<0 || x[i]>500)dx[i]=-dx[i];
    if(y[i]<0 || y[i]>500)dy[i]=-dy[i];
  }
}

2-2

增加吸引力

void setup(){
  size(500,500);
  for(int i=0;i<N;i++){
    x[i]=random(500);
    y[i]=random(500);
    dx[i]=random(-1,+1);//亂數
    dy[i]=random(-1,+1);//亂數
  }
}
int N=40;
float []x=new float[N];
float []y=new float[N];
float []dx=new float[N];
float []dy=new float[N];
void draw(){
  background(0);
  for(int i=0;i<N;i++){
    ellipse(x[i],y[i],5,5);
    for(int k=0;k<N;k++){
      float d=dist(x[i],y[i],x[k],y[k]);
      stroke(2.55*(100-d));
      if(d<100){
        line(x[i],y[i],x[k],y[k]);
        dx[i]+=(x[k]-x[i])*0.00003;
        dx[i]+=(y[k]-y[i])*0.00003;
      }
    }
    x[i]+=dx[i];
    y[i]+=dy[i];
    if(x[i]<0 || x[i]>500)dx[i]=-dx[i];
    if(y[i]<0 || y[i]>500)dy[i]=-dy[i];
  }
}

3-1


做顏色挑選
void setup(){
  size(500,500);
}

void draw(){
  background(#FC2119);
}

3-1-2

增加色彩模式,增加飽和度、亮度,frameCount 可以將同色溫的顏色輪流展現


void setup(){
  size(500,500);
  colorMode(HSB,360,100,100);
}

void draw(){
  background(frameCount%360,83,95);
}

3-2

設顏色的最大值,做一個彩虹的背景

size(400,400);
noStroke();
colorMode(HSB,400);
for(int i=0;i<400;i++){
  for(int j=0;j<400;j++){
    stroke(i,400,400);
    point(i,j);
  }
}

3-3

chooseColor讓顏色隨機變化

void setup(){
  size(300,300);
  colorMode(HSB,360,100,100);
  choseColor();
}
float h,s,b;
void choseColor(){
  h=random(360);
  s=random(100);
  b=random(100);
}
void draw(){
  background(203,63,65);
  for(int i=0;i<5;i++){
    for(int j=0;j<5;j++){
      fill(h,s,b);
      ellipse(30+j*60,30+i*60,60,60);
    }
  }
}

3-3-2

增加用滑鼠點擊,會變更色彩

void setup(){
  size(300,300);
  colorMode(HSB,360,100,100);
  choseColor();
}
void mousePressed(){
  choseColor();
}
float h,s,b;
void choseColor(){
  h=random(360);
  s=random(100);
  b=random(100);
}
void draw(){
  background(203,63,65);
  for(int i=0;i<5;i++){
    for(int j=0;j<5;j++){
      fill(h,s,b);
      ellipse(30+j*60,30+i*60,60,60);
    }
  }
}

3-3-3


void setup(){
  size(300,300);
  colorMode(HSB,360,100,100);
  choseColor();
}
void mousePressed(){
  choseColor();
}
int I,J;
float h,s,b,dh,ds,db;
void choseColor(){
  h=random(360);
  s=random(50,100);
  b=random(50,100);
  I=int (random(5));
  J=int (random(5));
  dh=random(-10,+10);
  ds=random(-10,+10);
  db=random(-10,+10);
}
void draw(){
  background(203,63,65);
  for(int i=0;i<5;i++){
    for(int j=0;j<5;j++){
      if(i==I && j==J)fill(h+dh,s+ds,b+db);
      else fill(h,s,b);
      ellipse(30+j*60,30+i*60,60,60);
    }
  }
}

沒有留言:

張貼留言