2023年9月28日 星期四

chotwo_week03

 Week03 

week03_1_x_y_dx_dy

500*500視窗、設x,y、畫圓點 ▼


加速度dx,dy ▼

//1. 點線面
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;
}

 

week03_2_bg_random


random決定點往哪跑、background(0) ▼


碰到牆壁回彈(位移相反) ▼

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


Week03_3_array_for_loop


用陣列和迴圈做出20個點 ▼

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); //dx = random(-1,+1);
   dy[i] = random(-1,+1); //dy = random(-1,+1);
 }
}
float[]x = new float[20];//float x=250, y=250;
float[]y = new float[20];
float[]dx = new float[20];//float dx=1, dy=1;
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];
  }
}

 

    Week03_4_near_line


兩點距離<100 ,就連在一起 ▼

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); //dx = random(-1,+1);
   dy[i] = random(-1,+1); //dy = random(-1,+1);
 }
}
float[]x = new float[20];//float x=250, y=250;
float[]y = new float[20];
float[]dx = new float[20];//float dx=1, dy=1;
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];
  }
}


     Week03_5_stroke_array_size


數量設成N、顏色變紅 ▼

距離設d、顏色隨距離改變 ▼


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); //dx = random(-1,+1);
   dy[i] = random(-1,+1); //dy = random(-1,+1);
 }
}
int N = 40;
float[]x = new float[N];//float x=250, y=250;
float[]y = new float[N];
float[]dx = new float[N];//float dx=1, dy=1;
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];
  }
}

  Week03_6_attraction

增加吸引力 ▼

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); //dx = random(-1,+1);
   dy[i] = random(-1,+1); //dy = random(-1,+1);
 }
}
int N = 40;
float[]x = new float[N];//float x=250, y=250;
float[]y = new float[N];
float[]dx = new float[N];//float dx=1, dy=1;
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; //增加吸引力
        dy[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];
  }
}


Week03_7_color


在工具中使用色彩選擇器 ▼


H:色相(0°-360°) S:飽和度(0%~100%) B:明度(0%~100%) ▼
從0開始每換一幀就換一個顏色


void setup(){
  size(500,500); 
  colorMode(HSB, 360, 100, 100);
}//H:0-360', S:0-100%, B:0-100%
void draw(){
  background(frameCount%360, 22, 80);
}         // 從0開始每換一幀就換一個顏色

Week03_8_colorMode_HSB_stroke_point


用point( )畫豎的彩虹 ▼


亂數選擇圓圈的顏色 ▼


設定飽和度和亮度的最小值▼



size(400,400);
//noStroke();
colorMode(HSB, 400); //色相最大值400
for(int i=0; i<400; i++){
  for(int j =0; j<400; j++){
    stroke(i, 400, 400); //最濃
    point(i,j);
  }
}

week03_9_diff_color_random_colorMode


按下滑鼠就隨機決定不同顏色的位置▼

void setup(){   size(300,300);   colorMode(HSB, 360, 100, 100);   chooseColor(); } void mousePressed(){   chooseColor(); } int I, J; float h, s, b, dh, ds, db; void chooseColor(){   h = random(360);   s = random(50,100); //飽和度50+   b = random(50,100); //亮度50+   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);     }    } }

沒有留言:

張貼留言