// UdK Computational design // Marius Watz 2003 // http://www.evolutionzone.com/udk/ // // GE01_ // by Janek Jonas Vec2D v[],D,v1[],D1[],v2,D2; int num=100; float newTime,oldTime,diffTime,rad,x,y; void setup() { size(400,400); ellipseMode(CENTER_DIAMETER); rectMode(CENTER_DIAMETER); background(255,255,255); oldTime=0; newTime=0; rad=10; v2=new Vec2D(random(width),random(height)); D=new Vec2D(); v=new Vec2D[num]; for(int i=0; iwidth) v1[i].x=0; if(v1[i].y<0) v1[i].y=height; else if(v1[i].y>height) v1[i].y=0; v1[i].add(D1[i].x/50, D1[i].y/50); stroke(255,i*2,i*2); fill(200,i*2,i*2); ellipse(v1[i].x, v1[i].y,rad,rad); } } void mouseMoved() { for(int i=num-1; i>0; i--) v[i].set(v[i-1]); v[0].set(mouseX,mouseY); } void mousePressed() { oldTime=newTime; noStroke(); fill(255,255,255); rect(width/2,height/2,width+2,height+2); rad=10; } void mouseDragged() { for(int i=num-1; i>0; i--) v[i].set(v[i-1]); v[0].set(mouseX,mouseY); rad=rad+diffTime/10000; if (rad>100) rad=0; } // General vector class for 2D vectors class Vec2D { float x,y; // Constructor with no parameters Vec2D() { x=0; y=0; } Vec2D(float _x,float _y) { x=_x; y=_y; } Vec2D(Vec2D v) { x=v.x; y=v.y; } void set(float _x,float _y) { x=_x; y=_y; } void set(Vec2D v) { x=v.x; y=v.y; } void add(float _x,float _y) { x+=_x; y+=_y; } void add(Vec2D v) { x+=v.x; y+=v.y; } void sub(float _x,float _y) { x-=_x; y-=_y; } void sub(Vec2D v) { x-=v.x; y-=v.y; } void mult(float m) { x*=m; y*=m; } void div(float m) { x/=m; y/=m; } float length() { return sqrt(x*x+y*y); } float angle() { return atan2(y,x); } void normalise() { float l=length(); if(l!=0) { x/=l; y/=l; } } Vec2D tangent() { return new Vec2D(-y,x); } void rotate(float val) { // Due to float not being precise enough, double is used for the calculations double cosval=Math.cos(val); double sinval=Math.sin(val); double tmpx=x*cosval - y*sinval; double tmpy=x*sinval + y*cosval; x=(float)tmpx; y=(float)tmpy; } }