Processing에서 달과 별이 빛나는 하늘을 표현
2885 단어 processing
개요
Processing에서 달과 별이 빛나는 하늘을 표현하는 방법
코드
/////Sunny///////
Shape[] s = new Shape[10];
class Shape { //class
float x;//横方向の位置座標
float y;//縦方向の位置座標
float dx; //横方向の移動速度
float dy; //縦方向の異動速度
float d; //直径
float ds; //直径の拡大速度
int r;//赤色
int g;//緑色
int b;//青色;
int dr; //赤色の変更速度
int dg; //緑色の変更速度
int db; //青色の変更速度
//オブジェクトを作る関数
Shape(float nd,int nr, int ng, int nb,float ndx, float ndy,float nds,int ndr, int ndg,int ndb) {
//属性の初期化. 1.直径,2-4.RGB初期値,5.x方向の移動速度,6.y方向の移動速度,7.直径の拡大速度,8-10.RGBの変更速度
x = random(width);
y = random(height);
d = nd; //直径
r = nr; //赤の初期値
g = ng; //緑の初期値
b = nb; //青の初期値
dx = ndx; //横方向の移動速度
dy = ndy; //縦方向の移動速度
ds = nds; //直径の拡大速度
dr = ndr; //赤の変更速度
dg = ndg; //緑の変更速度
db = ndb; //青の変更速度
}
void move(float nx, float ny, float nd,int nr,int ng,int nb) { //指定位置まで移動
//移動
x = nx;
y = ny;
d = nd;
r = nr;
g = ng;
b = nb;
//もし円が画面の壁に当たったら,移動方向を逆転
if (x > width - (d/2) || x < (d/2)) dx = -dx;
if (y > height - (d/2) || y < (d/2)) dy = -dy;
//もし円のサイズが大きくなったら,拡大方向を逆転
if (d > 15.0 || d < 0.1) ds = -ds;
//もし色のサイズが大きくなったら,拡大方向を逆転
if(r<=252 || 255 < r) dr = -dr;
if(g<=250 || 255 < g) dg = -dg;
if(b<=70 || 255 < b) db = -db;
//表現
noStroke();
fill(r,g,b,100);
ellipse(x, y, d,d);
}
}
void setup() { //準備
size (600,600);
noCursor();
s[0] = new Shape(7,255,248,226,0.1,1.0,0.1,1,1,1); //最初のオブジェクトを作る
s[1] = new Shape(10,255,245,206,1.0,0.5,0.8,2,1,0); //2つめを作る
s[2] = new Shape(1,253,240,221,0.3,0.5,0.1,1,2,1); //3つめを作る
s[3] = new Shape(10,252,251,181,0.7,0.5,0.5,1,1,2); //4つめを作る
s[4] = new Shape(10,255,250,199,0.1,0.7,0.8,1,1,3); //5つめを作る
s[5] = new Shape(10,253,251,79,0.2,0.7,1.0,1,2,1); //6つめを作る
s[6] = new Shape(12,255,254,132,0.1,1.7,0.9,2,1,2); //7つめを作る
s[7] = new Shape(8,252,252,89,1.4,1.0,0.7,0,1,3); //8つめを作る
s[8] = new Shape(12,254,241,188,1.2,0.8,0.2,1,2,1); //9つめを作る
s[9] = new Shape(10,255,255,210,1.0,0.5,0.4,1,1,1); //10つめを作る
}
void draw() {
background(4,21,41);
for (int i = 0; i < 10; i++) {
s[i].move(s[i].x + s[i].dx, s[i].y + s[i].dy,s[i].d + s[i].ds,s[i].r + s[i].dr,s[i].g + s[i].dg,s[i].b + s[i].db);
}
noStroke();
fill(255,255,255,200);
ellipse(width/5,height/12,180,180);
}
결과
Reference
이 문제에 관하여(Processing에서 달과 별이 빛나는 하늘을 표현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mhomma/items/33e5e82cbe6bc31055ff텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)