balls
parent
b60556dc6b
commit
b153c7ed22
@ -0,0 +1,57 @@
|
|||||||
|
class Ball {
|
||||||
|
PVector position;
|
||||||
|
float heading;
|
||||||
|
boolean odd;
|
||||||
|
|
||||||
|
Ball(float x, float y, float heading, boolean odd) {
|
||||||
|
this.position = new PVector(x, y);
|
||||||
|
this.heading = heading;
|
||||||
|
this.odd = odd;
|
||||||
|
}
|
||||||
|
|
||||||
|
void draw() {
|
||||||
|
this.updatePosition();
|
||||||
|
pushMatrix();
|
||||||
|
translate(this.position.x, this.position.y, this.position.z);
|
||||||
|
rotate(noise(this.position.x, this.position.y));
|
||||||
|
noStroke();
|
||||||
|
sphere(20);
|
||||||
|
popMatrix();
|
||||||
|
}
|
||||||
|
|
||||||
|
void updatePosition() {
|
||||||
|
PVector velocity = new PVector(1, 0);
|
||||||
|
velocity.rotate(this.heading);
|
||||||
|
this.position.add(velocity);
|
||||||
|
float n = norm(frameCount % 240, 0, 240);
|
||||||
|
if (odd) {
|
||||||
|
this.position.z = 50 * sin(n * TWO_PI);
|
||||||
|
} else {
|
||||||
|
this.position.z = 50 * sin(-n * TWO_PI);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ArrayList<Ball> balls;
|
||||||
|
|
||||||
|
void setup() {
|
||||||
|
size(1025, 768, P3D);
|
||||||
|
balls = new ArrayList<Ball>();
|
||||||
|
int n = 10;
|
||||||
|
for (int i = 0; i < n; i++) {
|
||||||
|
float y = map(i, 0, n, 0, height);
|
||||||
|
balls.add(new Ball(0, y, 0, i % 2 == 0));
|
||||||
|
}
|
||||||
|
// for (int i = 0; i < n; i++) {
|
||||||
|
// float x = map(i, 0, n, 0, width);
|
||||||
|
// balls.add(new Ball(x, 0, PI * 0.5, i % 2 == 0));
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
|
||||||
|
void draw() {
|
||||||
|
// background(255);
|
||||||
|
lights();
|
||||||
|
for (Ball ball : balls) {
|
||||||
|
ball.draw();
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue