processing做遨遊星空效果
阿新 • • 發佈:2020-07-18
sketch_200718a檔案
Star[] stars = new Star[600]; float speed; void setup(){ size(400, 400); for(int i = 0; i < stars.length; i++){ stars[i] = new Star(); } } void draw(){ speed = map(mouseX, 0, width, 0, 20); background(0); translate(width / 2, height / 2); for(int i = 0; i < stars.length; i++){ stars[i].update(); stars[i].show(); } }
Star檔案
class Star{ float x; float y; float z; float pz; Star(){ x = random(-width, width); y = random(-height, height); z = random(width); pz = z; } void update(){ z = z - speed; if(z < 1){ x = random(-width, width); y = random(-height, height); z = width; pz = z; } } void show(){ fill(255); noStroke(); float sx = map(x / z, 0, 1, 0, width); float sy = map(y / z, 0, 1, 0, height); float r = map(z, 0, width, 16, 0); float px = map(x / pz, 0, 1, 0, width); float py = map(y / pz, 0, 1, 0, height); pz = z; ellipse(sx, sy, r, r); stroke(255); line(px, py, sx, sy); } }
效果圖: