Files
sunny9898/task8/_ref/noc-examples-processing-master/chp03_oscillation/OOPWaveParticles/Wave.pde
louiscklaw 5637fbf94f update,
2025-02-01 02:07:58 +08:00

57 lines
1.6 KiB
Plaintext

// The Nature of Code
// Daniel Shiffman
// http://natureofcode.com
class Wave {
int xspacing = 8; // How far apart should each horizontal position be spaced
int w; // Width of entire wave
PVector origin; // Where does the wave's first point start
float theta = 0.0; // Start angle at 0
float amplitude; // Height of wave
float period; // How many pixels before the wave repeats
float dx; // Value for incrementing X, to be calculated as a function of period and xspacing
//float[] yvalues; // Using an array to store height values for the wave (not entirely necessary)
Particle[] particles;
Wave(PVector o, int w_, float a, float p) {
origin = o.get();
w = w_;
period = p;
amplitude = a;
dx = (TWO_PI / period) * xspacing;
particles = new Particle[w/xspacing];
for (int i = 0; i < particles.length; i++) {
particles[i] = new Particle();
}
}
void calculate() {
// Increment theta (try different values for 'angular velocity' here
theta += 0.02;
// For every x value, calculate a y value with sine function
float x = theta;
for (int i = 0; i < particles.length; i++) {
particles[i].setposition(origin.x+i*xspacing,origin.y+sin(x)*amplitude);
x+=dx;
}
}
void manipulate() {
// Loop through the array of particles and check stuff regarding the mouse
}
void display() {
// A simple way to draw the wave with an ellipse at each position
for (int i = 0; i < particles.length; i++) {
particles[i].display();
}
}
}