beautiful vision- generate a universe of particle network- Help!
              in 
             Programming Questions 
              •  
              6 months ago    
            
 
           
             Dear all processing masters,
            
             
            
            
             
            
            
             
            
            
             
              
             
             
                
             
             
                
             
             
              
             
             
                
             
             
               
             
             
                
             
             
              
             
             
              
             
             
              
             
             
              
             
             
              
             
             
              
             
             
              
             
             
              
             
             
              
             
             
                 
             
             
                   
             
             
                 
             
             
                 
             
             
              
             
             
                 
             
             
                  
             
             
                
             
             
              
             
             
              
             
             
              
             
             
              
             
             
              
             
             
              
             
             
              
             
             
              
             
             
              
             
             
              
             
             
                    
             
             
                
             
             
                  
             
             
              
             
             
                  
             
             
                
             
             
            
             
            
            
             
            
            
             
            
            
             
            
            
 
            
           
             I am new to this amazing tool and designing a conceptual social network prototype, basically want to create an interface where user generated particles can be stored into one big vision, and individual particles can also connected/grouped with lines according to their color/alpha/velocity value's similarity, therefore to create a particle network-
            
            
             sounds kind of complicated but I have tried to create this customizable particle system where user can play with and sort of expressing their feelings with the motion visualization:
            
            
              ParticleSystem ps;
             
             
               int pHue = 255;
             
             
               int pSat = 255;
             
             
               int pSize = 8;
             
             
               int pShape= 1;
             
             
               float pSpeed = 1;
             
             
              float xo;
             
             
              float yo;
             
             
              void setup() {
             
             
                xo = width/2;
             
             
                yo = height/2;
             
             
                size(800,800);
             
             
                smooth();
             
             
                ps = new ParticleSystem(new PVector(width/2,width/2));
             
             
                frameRate = 24;
             
             
                colorMode(HSB);
             
             
              }
             
             
              void draw() {
             
             
                smooth();
             
             
              //  translate(xo, yo);
             
             
                pHue = mouseX/3;
             
             
                pSat = mouseY/2;
             
             
                background(0);
             
             
                ps.addParticle();
             
             
                ps.run();
             
             
              }
             
             
              // A simple Particle class
             
             
              class Particle {
             
             
                PVector location;
             
             
                PVector velocity;
             
             
                PVector acceleration;
             
             
                float lifespan;
             
             
                Particle(PVector l) {
             
             
                  acceleration = new PVector(0,0.00);
             
             
                  velocity = new PVector(random(-pSpeed,pSpeed),random(-pSpeed,pSpeed));
             
             
                  location = l.get();
             
             
                  lifespan = 200.0;
             
             
                }
             
             
                void run() {
             
             
                  update();
             
             
                  display();
             
             
                }
             
             
                // Method to update location
             
             
                void update() {
             
             
                  velocity.add(acceleration);
             
             
                  location.add(velocity);
             
             
                  lifespan -= 1.0;
             
             
                }
             
             
                // Method to display
             
             
                void display() {
             
             
                  stroke(255, 255,lifespan,0);
             
             
                  fill(pHue,pSat,lifespan,200);
             
             
                 //decide and create shape
             
             
                 if (pShape == 1) {
             
             
                 ellipse(location.x,location.y,pSize,pSize);
             
             
                 }
             
             
                 if (pShape == 2) {
             
             
                 rect(location.x,location.y,pSize,pSize);
             
             
                 }
             
             
                 if (pShape == 3) {
             
             
                 triangle(location.x-pSize,location.y-pSize,location.x+pSize, location.y-pSize,location.x,location.y);
             
             
                 }
             
             
                  }
             
             
                // Is the particle still useful?
             
             
                boolean isDead() {
             
             
                  if (lifespan < 0.0) {
             
             
                    return true;
             
             
                  } else {
             
             
                    return false;
             
             
                  }
             
             
                }
             
             
              }
             
             
              //void mouseDragged() {
             
             
              //  xo = xo + (mouseX - pmouseX);
             
             
              //  yo = yo + (mouseY - pmouseY);
             
             
              //}
             
             
              // A class to describe a group of Particles
             
             
              // An ArrayList is used to manage the list of Particles 
             
             
              class ParticleSystem {
             
             
                ArrayList<Particle> particles;
             
             
                PVector origin;
             
             
                ParticleSystem(PVector location) {
             
             
                  origin = location.get();
             
             
                  particles = new ArrayList<Particle>();
             
             
                }
             
             
                void addParticle() {
             
             
                  particles.add(new Particle(origin));
             
             
                }
             
             
                void run() {
             
             
                  Iterator<Particle> it = particles.iterator();
             
             
                  while (it.hasNext()) {
             
             
                    Particle p = it.next();
             
             
                    p.run();
             
             
                    if (p.isDead()) {
             
             
                      it.remove(); 
             
             
                    }
             
             
                  }
             
             
                }
             
             
              }
             
             
              void keyPressed () {
             
             
                if (key == CODED) {
             
             
                  if (keyCode == UP) {
             
             
                    pSize++;
             
             
                    } 
             
             
                    else if (keyCode == DOWN) {
             
             
                    pSize -= 1;
             
             
                    }
             
             
                    else if (keyCode == RIGHT) {
             
             
                    pSpeed += 0.2;
             
             
                    } 
             
             
                    else if (keyCode == LEFT) {
             
             
                    pSpeed -= 0.2;
             
             
                    }
             
             
                    else if (keyCode == SHIFT) {
             
             
                    pShape = 1;
             
             
                    }
             
             
                    else if (keyCode == CONTROL) {
             
             
                    pShape = 2;
             
             
                    }
             
             
                    else if (keyCode == ALT) {
             
             
                    pShape = 3;    
             
             
                }
             
             
              }
             
             
              }
             
            
             it's very basic at the moment, but it will be really cool if people can save the result after modifying the shape/color/velocity etc. and a collection of particles network would be generated in one space...
            
            
             Please help build up this beautiful vision of people's feelings network using simply customizable particle systems...
            
            
             Thanks a lot!
            
            
             - Madscien
            
 
            
              
              1  
            
 
             
 
          