//ece pala 28.10.20003 gesture Vec3D v[]; int num=10; float mouseZ; float newTime,oldTime,diffTime; float cnt; float xOffs,yOffs,zOffs,rotX,rotY,rotZ; void setup() { size(500,500); background(255); cnt=0; xOffs=0; yOffs=20; zOffs=0; rotX=-10; rotY=-10; rotZ=-10; ellipseMode(CENTER_DIAMETER); oldTime=0; newTime=0; v=new Vec3D[num]; for(int i=0; i50) background(255); diffTime=newTime-oldTime; noStroke(); fill(random(51,255),random(0,255),random(0,102)); stroke(56,56,56); for(int i=0; i0; i--) v[i].set(v[i-1]); v[0].set(mouseX,mouseY,mouseZ); } // General vector class for 3D vectors class Vec3D { float x,y,z; // Constructor with no parameters Vec3D() { x=0; y=0; z=0;} Vec3D(float _x,float _y,float _z) { x=_x; y=_y; z=_z; } Vec3D(Vec3D v) { x=v.x; y=v.y; z=v.z; } void set(float _x,float _y,float _z) { x=_x; y=_y; z=_z; } void set(Vec3D v) { x=v.x; y=v.y; z=v.z; } void add(float _x,float _y,float _z) { x+=_x; y+=_y; z+=_z; } void add(Vec3D v) { x+=v.x; y+=v.y; z+=v.z; } void sub(float _x,float _y,float _z) { x-=_x; y-=_y; z-=_z; } void sub(Vec3D v) { x-=v.x; y-=v.y; z-=v.z; } void mult(float m) { x*=m; y*=m; z*=m; } void div(float m) { x/=m; y/=m; z/=m; } float length() { return sqrt(x*x+y*y+z*z); } void normalise() { float l=length(); if(l!=0) { x/=l; y/=l; z/=l; } } void rotateX(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 tmp1=y*cosval - z*sinval; double tmp2=y*sinval + z*cosval; y=(float)tmp1; z=(float)tmp2; } void rotateY(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 tmp1=x*cosval - z*sinval; double tmp2=x*sinval + z*cosval; x=(float)tmp1; z=(float)tmp2; } void rotateZ(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 tmp1=x*cosval - y*sinval; double tmp2=x*sinval + y*cosval; x=(float)tmp1; y=(float)tmp2; } }