mirror of
https://github.com/dyne/FreeJ.git
synced 2026-02-05 12:39:15 +01:00
processing-js 0.4 has been merged in some relevant parts basic and topic scripts added for test color handling fixed, more scripts show up now
48 lines
1.3 KiB
Plaintext
48 lines
1.3 KiB
Plaintext
int xspacing = 8; // How far apart should each horizontal location be spaced
|
|
int w; // Width of entire wave
|
|
|
|
float theta = 0.0; // Start angle at 0
|
|
float amplitude = 75.0; // Height of wave
|
|
float period = 500.0; // 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)
|
|
|
|
void setup() {
|
|
size(200,200);
|
|
frameRate(30);
|
|
colorMode(RGB,255,255,255,100);
|
|
smooth();
|
|
w = width+16;
|
|
dx = (TWO_PI / period) * xspacing;
|
|
yvalues = new float[w/xspacing];
|
|
}
|
|
|
|
void draw() {
|
|
background(0);
|
|
calcWave();
|
|
renderWave();
|
|
|
|
}
|
|
|
|
void calcWave() {
|
|
// 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 < yvalues.length; i++) {
|
|
yvalues[i] = sin(x)*amplitude;
|
|
x+=dx;
|
|
}
|
|
}
|
|
|
|
void renderWave() {
|
|
// A simple way to draw the wave with an ellipse at each location
|
|
for (int x = 0; x < yvalues.length; x++) {
|
|
noStroke();
|
|
fill(255,50);
|
|
ellipseMode(CENTER);
|
|
ellipse(x*xspacing,width/2+yvalues[x],16,16);
|
|
}
|
|
}
|