Slice through torus embedded van der pol attractor animation using POVRAY of 3 cover of torus embedded van der pol attractor. To be discussed in future journal article by Letelliere, Gilmore, and Jones.
A torus is outlined by a quasiperiodic flow on it. This flow is on the ''ima$
-Animation by Timothy Jones
run.pl
#!/usr/bin/perl for($num=0; $num<=1000; $num+=100){ system("./torus $num"); $number=$num+1000; $file=$number.".pov"; system("cat temp.pov > $file"); system("cat $num >> $file"); system("cat donut.dat >> $file"); system("povray all.ini $file Display=False");}
#include "colors.inc" #include "skies.inc" #include "textures.inc" // camera----------------------------------------------------------- #declare Cam1 =camera {location <-7 , 4 ,-18> look_at <0.2 , 0.0 , 0.0> angle 40} camera{Cam1} //<---1 // sun ------------------------------------------------------------- light_source{<-1500,2000,-2500> color White*0.7} light_source{<-100, 100, -200> color White*0.5} //global_settings { // ambient_light // rgb <0,0,1> //} background { color rgb <0,0,0> } #macro SP(x0,y0,z0,r0) sphere { < x0,y0,z0 > , r0 pigment { Gold}//rgb <1,1,1> } finish { reflection .5 phong .7 }} #end
#include < stdlib.h > #include < math.h > #include < fstream.h > #include < iostream.h > #include < cstdio > //Adaptation of a Bob Gilmore program //written in f int main(int argc, char *argv[]){ int fiii= atoi(argv[1]); float iii=1.0*fiii/10; printf("%i \n",fiii); int i,nn,m,ord,j; nn=95000; double pi,r1,r2; double phi,alpha,beta,theta; double u,v,z,r,x,y,angle,oldang; double uu,zz,aa,bb; double orig [nn][3]; double u0,v0,eps1,eps2,rr,renorm [nn][3]; double delu,delv,rat; ///////////////////////////////////PART ONE////////////// pi = 3.1415926535; alpha = 1.0/12.52;// !!! 1.0/25.1 aa = 0.45; //!!! 0.85 bb = sqrt(1.0-aa*aa); r1 = 1.0; double X,Y,t; double DX,DY; double PI=3.14159265; double A,b,c,d,w,T,dt; int k=1; A = 0.25; b = 0.7; c=1.0; d=10.0; T=4.0; w=2*PI/T; int FLAG=0; X=0; Y=-1; dt=0.001; t=0; FILE * fp; fp = fopen ("donut.dat","w"); for(i=1; i<=nn;i++){ // !!! nn/1000= numbor of wraps in long. dir. theta = i*(2*pi)/1000.0; phi = alpha*theta; // !!! quasiperiodic ratio r2 = 2.0 + r1*cos(phi); // !!! distinace from origin uu = r2*cos(theta); // !!! (uu,v,zz) coordinates v = r2*sin(theta); // zz = r1*sin(phi); u = aa*uu - bb*zz; // !!! rotation in (uu,zz) plane z = bb*uu + aa*zz; DX=b*Y + (c-d*Y*Y)*X; DY=-X+A*sin(w*t); X += DX * dt; Y += DY * dt; t += dt; if(t>T){t=0;} orig[i][1]= cos(w*t)*(3 + (cos(k*w*t)*X-sin(k*w*t)*Y));// u; // !!! output coordinate triple orig[i][2]= sin(w*t)*(3+(cos(k*w*t)*X-sin(k*w*t)*Y));//v; orig[i][3]= sin(k*w*t)*X+cos(k*w*t)*Y;// z; // fprintf(fp, "SP(%f, %f, %f, 0.05)\n",u,v,z + 10);} fprintf(fp, "SP(%f, %f, %f, 0.05)\n",orig[i][1],orig[i][2],orig[i][3]+10);} fclose(fp); /////////////////////////////////////END P.1//////////////// /////////////////////////////////////Momma loop///////////// // u0 =-1.8; //!!! coordinates of roation axis // v0 = 0.0; //for(iii=0; iii<=100; i++){ // originally iii*0.01 --> 0.0001 so that it goes from 0-10 effectively u0 = -5.0 + (iii*0.01)*(10); v0 = 0.0; //cylinder {<-3,0,7+(clock/1000)*7>,<3,0,7+(clock/1000)*7>,.1 texture{pigment{color Red} finish {ambient 0.15 diffuse 0.75 reflection 0.1 phong 1}}} /////////////////////////////////////PART 2///////////////// eps1=0.001; eps2=0.01; for(i=1;i<=nn;i++){ renorm[i][3]=orig[i][3]; delu = orig[i][1]-u0; delv = orig[i][2]-v0; rr = sqrt(delu*delu+delv*delv); if(rr>eps2){ renorm[i][1]=orig[i][1]; renorm[i][2]=orig[i][2];} if(rreps1)&&(rr 1.3)){m=m+1;} if((angle > 1.3) && (oldang < -1.3)){m=m-1;} oldang = angle; angle = angle+m*pi; x = pow(r,(1/(1.0*ord)))*cos(angle/ord); y = pow(r,(1/(1.0*ord)))*sin(angle/ord); fprintf(fp2,"SP(%f, %f, %f, 0.05)\n",x,y,z-5); //fprintf(fp2,"%f, %f, %f \n",x,y,z); // write(13,'(3f12.6)')x,y,z } //For the cylinder fprintf(fp2,"cylinder {<%f,0,7>,<%f,0,17>,.1 texture{pigment{color Red} finish {ambient 0.15 diffuse 0.75 reflection 0.1 phong 1}}}\n",u0,u0); fclose(fp2); /// cylinder {<-3,0,7+(clock/1000)*7>,<3,0,7+(clock/1000)*7>,.1 texture{pigment{color Red} finish {ambient 0.15 diffuse 0.75 reflection 0.1 phong 1}}} /////////////////////////////////////END 3///// // } }