Willkommen auf unserem Seminar-Blog

Immer auf dem aktuellen Stand bleiben

Dieser Seminar-Blog befindet sich noch im Aufbau und wird in den kommenden Tagen entsprechend verfeinert.

Member Login

Lost your password?

Registration is closed

Sorry, you are not allowed to register by yourself on this site!

You must either be invited by one of our team member or request an invitation by email at viad.info {at} zhdk {dot} ch.

Processing, erster Tag seit mehreren Monaten

19. September 2012

Es sind ein paar Monate vergangen seitdem ich Processing das letzte Mal öffnete, das den Eindruck einer zum experimentieren gut geeigneten, jedoch nicht so performanten Sprache hinterliess. Nach Resonanz, einem Livemusikvisualisierungstool, steckte ich noch etwas Arbeit in eine webcambasierte Farbtrackingsoftware, die über OSC verarbeitete Daten an andere Software weitergeben konnte. Da ich also bereits etwas Erfahrung in Processing gesammelt habe Betrachtete ich Ext.Lextion 1 genauer, wobei ich es sich im wesentlichen um ein klassenbasiertes Particle System handelte. Wie in Objective-C (und anderen Programmiersprachen sicherlich auch), kann einem das Verwenden von Klassen erheblichen Arbeitsaufwand sparen. Klassen ähneln prinzipiell Funktionen, sie können (mit Parametern) Aufgerufen werden, führen irgendwas aus und geben unter Umständen etwas zurück. Allerdings kann eine Klasse als Unterklasse einer anderen Klasse definiert werden, die neue Klasse hat somit alle Eigenschaften der übergeordneten Superclass, kann diese allerdings nach belieben erweitern. Im gegebenen Beispiel konnte so eine Subclass der gegebenen Klasse "Particles" erstellt werden, um den prinzipielle Funktionsweise der Particle brauchte ich mich somit nicht mehr zu kümmern, konnte aber leicht eigene, z.B. explodierende Partikel integrieren. source:
// ParticleExplosion, extend the Particles

class ParticleExplosion extends Particle
{
    PVector _color;
    float   _size;
    float   _explosion;
    
    
    ParticleExplosion(PVector pos,PVector dir,int lifeTime,PVector objClr,float objSize, float explosion)
    {
        super(pos,dir,lifeTime);
        _color = objClr.get();
        _size = objSize;
        //int explosion=1;
        _explosion = explosion;
    }
    
    void draw()
    {
        stroke(256);
        
        
       // _pos.y=_pos.y+(5/_normTime);
        if(_normTime>0.2){
        ellipse(_pos.x,_pos.y, _normTime * _size, _normTime * _size);
        println(_normTime);
            fill(255,255,0,255.0 * _normTime);
        }else{
            _explosion+=1;
            
            fill(_color.x,_color.y,_color.z,255.0 * _normTime *4/_normTime);
            ellipse(_pos.x+4/_normTime,_pos.y, _normTime * _size *4/_normTime, _normTime * _size *4/_normTime);
             ellipse(_pos.x+4/_normTime*0.66,_pos.y+4/_normTime*0.66, _normTime * _size *4/_normTime, _normTime * _size *4/_normTime);
             ellipse(_pos.x+4/_normTime*0.66,_pos.y-4/_normTime*0.66, _normTime * _size *4/_normTime, _normTime * _size *4/_normTime);
             ellipse(_pos.x,_pos.y+4/_normTime, _normTime * _size *4/_normTime, _normTime * _size *4/_normTime);
             ellipse(_pos.x-4/_normTime,_pos.y, _normTime * _size *4/_normTime, _normTime * _size *4/_normTime);
             ellipse(_pos.x-4/_normTime*0.66,_pos.y-4/_normTime*0.66, _normTime * _size *4/_normTime, _normTime * _size *4/_normTime);
             ellipse(_pos.x-4/_normTime*0.66,_pos.y+4/_normTime*0.66, _normTime * _size *4/_normTime, _normTime * _size *4/_normTime);
            ellipse(_pos.x,_pos.y-4/_normTime, _normTime * _size *4/_normTime, _normTime * _size *4/_normTime);
            
           
        }
    }
    
    
}