class Rotar { int t,tt; int winSize = 640; int upto = 800; int mid = winSize/2; int rad = winSize/4; int rad2 = winSize/4; int[] xy = {mid,mid}; int[] nxy = xy; int[] orgxy = {mid,mid}; int[] orgxy2 = {mid,mid}; float fxy[] = {1.0, 1.0}; float dfxy[] = {0, 0}; float fxy2[] = {1, 1}; float dfxy2[] = {0, 0}; float[] phxy={0, 0}; float[] dphxy = {0,0}; float fR = 4; boolean bLine=false; public Rotar(){ } public void resetPhase(){ phxy[0] = 0; phxy[1] = 0; } public void setR1(float R){ rad = int(R); } public void setR2(float R){ rad2 = int(R); } public void setF1x(float f){ fxy[0] = f; } public void setF1y(float f){ fxy[1] = f; } public void setdF1x(float f){ dfxy[0] = f; } public void setdF1y(float f){ dfxy[1] = f; } public void setdPhf1x(float f){ dphxy[0] = f; } public void setdPhf1y(float f){ dphxy[1] = f; } public void setF2x(float f){ fxy2[0] = f; } public void setF2y(float f){ fxy2[1] = f; } public void setdF2x(float f){ dfxy2[0] = f; } public void setdF2y(float f){ dfxy2[1] = f; } public void setLine(boolean b){ bLine = b; } void draw() { background(0); //rad2++; fxy[0] += dfxy[0]; fxy[1] += dfxy[1]; fxy2[0] += dfxy2[0]; fxy2[1] += dfxy2[1]; phxy[0] += dphxy[0]; phxy[1] += dphxy[1]; //upto++; display(upto); } void display(int too) { for (int t = 0; t< too; t++) { orgxy2 = vec(orgxy ,xy, rad, t, fxy, phxy); nxy = vec(orgxy2 ,xy, rad2, t, fxy2, phxy); stroke (orgxy[0],nxy[0], nxy[1]); if (bLine) line(orgxy[0],orgxy[1],nxy[0],nxy[1] ); else point(nxy[0],nxy[1]); } } int[] vec(int[] dorgxy, int[] dxy, int drad, int t, float[] dfxy,float[] phxy) { dxy[0] = dorgxy[0] + int(drad*sin(t*dfxy[0] + phxy[0])); dxy[1] = dorgxy[1] + int(drad*cos(t*dfxy[1] + phxy[1])); return dxy; } float varSine(float amp,int t,float f) { f = amp + amp*sin(t*f); return f; } }