added harmonic potntial + bugfixes + boundings
[physik/posic.git] / visual / visual.c
index 9d0f5a2..38ff0b0 100644 (file)
@@ -31,6 +31,8 @@ int visual_init(t_visual *v,char *filebase) {
                return -1;
        }
 
+       memset(&(v->dim),0,sizeof(t_3dvec));
+
        return 0;
 }
 
@@ -45,9 +47,14 @@ int visual_atoms(t_visual *v,double time,t_atom *atom,int n) {
 
        int i,fd;
        char file[128+64];
+       t_3dvec dim;
+
+       dim.x=10e9*v->dim.x;
+       dim.y=10e9*v->dim.y;
+       dim.z=10e9*v->dim.z;
 
        char pse[19][4]={
-               "foo",
+               "*",
                "H",
                "He",
                "Li",
@@ -77,9 +84,9 @@ int visual_atoms(t_visual *v,double time,t_atom *atom,int n) {
 
        /* script file update */
        dprintf(v->fd,"load xyz %s\n",file);
-       dprintf(v->fd,"spacefill 200\n");
-       //dprintf(v->fd,"rotate x 100\n");
-       //dprintf(v->fd,"rotate y 10\n");
+       dprintf(v->fd,"spacefill 300\n");
+       dprintf(v->fd,"rotate x 100\n");
+       dprintf(v->fd,"rotate y 10\n");
        dprintf(v->fd,"set ambient 20\n");
        dprintf(v->fd,"set specular on\n");
        sprintf(file,"%s-%.15f.ppm",v->fb,time);
@@ -87,11 +94,23 @@ int visual_atoms(t_visual *v,double time,t_atom *atom,int n) {
        dprintf(v->fd,"zap\n");
 
        /* write the actual data file */
-       dprintf(fd,"%d\n",n);
+       dprintf(fd,"%d\n",(dim.x==0)?n:n+8);
        dprintf(fd,"atoms at time %.15f\n",time);
        for(i=0;i<n;i++)
                dprintf(fd,"%s %f %f %f\n",pse[atom[i].element],
-                                          atom[i].r.x,atom[i].r.y,atom[i].r.z);
+                                          10e9*atom[i].r.x,
+                                          10e9*atom[i].r.y,
+                                          10e9*atom[i].r.z);
+       if(dim.x) {
+               dprintf(fd,"%s %f %f %f\n",pse[0],dim.x/2,dim.y/2,dim.z/2);
+               dprintf(fd,"%s %f %f %f\n",pse[0],-dim.x/2,dim.y/2,dim.z/2);
+               dprintf(fd,"%s %f %f %f\n",pse[0],dim.x/2,-dim.y/2,dim.z/2);
+               dprintf(fd,"%s %f %f %f\n",pse[0],dim.x/2,dim.y/2,-dim.z/2);
+               dprintf(fd,"%s %f %f %f\n",pse[0],-dim.x/2,-dim.y/2,dim.z/2);
+               dprintf(fd,"%s %f %f %f\n",pse[0],dim.x/2,-dim.y/2,-dim.z/2);
+               dprintf(fd,"%s %f %f %f\n",pse[0],-dim.x/2,dim.y/2,-dim.z/2);
+               dprintf(fd,"%s %f %f %f\n",pse[0],-dim.x/2,-dim.y/2,-dim.z/2);
+       }
        close(fd);
 
        return 0;