Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import peasy.*;
- int numX = 10;
- int numY = 10;
- int maxH;
- PGraphics canvas;
- int count = 0;
- PeasyCam cam;
- boolean recording = false;
- float[][] z;
- float[][] zDir;
- PVector[][] points;
- float[] gaussian;
- void setup() {
- size(1000, 700, P3D);
- canvas = createGraphics(width, height, P3D);
- maxH = int(width*0.1);
- //cam = new PeasyCam(this, width/2, height/2, 0, 400);
- z = new float[numX][numY];
- zDir = new float[numX][numY];
- points = new PVector[numX][numY];
- gaussian = new float[maxH];
- beginShape();
- for (int i = 0; i < maxH; i++) {
- float x = map(i, 0, maxH, -5, 5);
- gaussian[i] = Gaussian(x, 0, 0.8);
- gaussian[i] = map(gaussian[i], 0.0, 1.0, 0.2, 1.0);
- }
- for (int i = 0; i < numX; i++) {
- for (int j = 0; j < numY; j++) {
- points[i][j] = new PVector(i*(width/numX), j*(width/numY), random(0, maxH));
- zDir[i][j] = random(-2, 2);
- if (zDir[i][j] < 0.2 && zDir[i][j] > -0.2) {
- if (zDir[i][j] <= 0.0) zDir[i][j] -= 0.2;
- else if (zDir[i][j] >= 0.0) zDir[i][j] += 0.2;
- }
- }
- }
- canvas.sphereDetail(6);
- canvas.lightSpecular(1, 1, 1);
- canvas.smooth(32);
- }
- void draw() {
- noStroke();
- fill(0);
- canvas.beginDraw();
- //canvas.directionalLight(255, 255, 255, 0, 0, -1);
- //canvas.lights();
- //for (int i = 0; i < numX; i++) {
- // for (int j = 0; j < numY; j++) {
- // float zee = points[i][j].z;
- // if (zee >= maxH) zDir[i][j] *= -1;
- // else if (zee <= 0.0) zDir[i][j] *= -1;
- // float gaus = gaussian[constrain(int(zee), 0, maxH-1)];
- // points[i][j].z += (zDir[i][j]*3.0)*gaus;
- // }
- //}
- //background(255);
- //for (int i = 0; i < numX; i++) {
- // for (int j = 0; j < numY; j++) {
- // //canvas.pushMatrix();
- // //canvas.translate(points[i][j].x, points[i][j].y, points[i][j].z);
- // //canvas.fill(255);
- // //canvas.noStroke();
- // //canvas.sphere(5);
- // //canvas.popMatrix();
- // //canvas.stroke(100);
- // if (i<numX-1 && j<numY-1) {
- // canvas.fill(54, 223, 255, map(points[i][j].z, 0, maxH, 150, 0));
- // canvas.beginShape(TRIANGLES);
- // canvas.vertex(points[i][j].x, points[i][j].y, points[i][j].z);
- // canvas.vertex(points[i][j+1].x, points[i][j+1].y, points[i][j+1].z);
- // canvas.vertex(points[i+1][j+1].x, points[i+1][j+1].y, points[i+1][j+1].z);
- // canvas.vertex(points[i][j].x, points[i][j].y, points[i][j].z);
- // canvas.vertex(points[i+1][j].x, points[i+1][j].y, points[i+1][j].z);
- // canvas.vertex(points[i+1][j+1].x, points[i+1][j+1].y, points[i+1][j+1].z);
- // canvas.endShape();
- // }
- // }
- //}
- canvas.endDraw();
- image(canvas, 0, 0);
- if (recording) {
- println(count++);
- }
- }
- float Gaussian(float x, float mean, float variance) {
- return (1 / sqrt(TWO_PI * variance)) * exp(-sq(x - mean) / (2 * variance));
- }
- void keyPressed() {
- if (!recording && key == 'h') {
- recording = true;
- } else if (key=='h') {
- recording = false;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement