ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/xyz2pov/src/xyz2pov.c
(Generate patch)

Comparing trunk/xyz2pov/src/xyz2pov.c (file contents):
Revision 515 by mmeineke, Thu May 1 17:36:33 2003 UTC vs.
Revision 629 by mmeineke, Thu Jul 17 15:47:36 2003 UTC

# Line 16 | Line 16 | struct linked_xyz{
16  
17   struct linked_xyz{
18    struct coords *r;
19 <  double boxX, boxY, boxZ;
19 >  double Hmat[3][3];
20    struct linked_xyz *next;
21   };
22  
# Line 37 | Line 37 | int main(argc, argv)
37  
38    struct coords *out_coords;
39  
40 <  int i,j; /* loop counters */
40 >  int i,j,k; /* loop counters */
41    mode_t dir_mode = S_IRWXU;
42  
43    int generate_header = 0; /* boolean for generating the pov ray header */
# Line 79 | Line 79 | int main(argc, argv)
79    
80    unsigned int n_interpolate = 0; /* number of frames to interpolate */
81    double dx, dy, dz; /* temp variables for interpolating distances */
82 +  double dm[3][3];
83    
84  
85    char pov_dir[500]; /* the pov_dir */
# Line 311 | Line 312 | int main(argc, argv)
312          printf("error in reading file\n");
313          exit(8);
314        }
315 <      current_frame->boxX = atof( foo );
315 >      current_frame->Hmat[0][0] = atof( foo );
316  
317        foo = strtok(NULL, " ,;\t");
318        if(foo == NULL){
319          printf("error in reading file\n");
320          exit(8);
321        }
322 <      current_frame->boxY = atof( foo );
322 >      current_frame->Hmat[1][0] = atof( foo );
323  
324        foo = strtok(NULL, " ,;\t");
325        if(foo == NULL){
326          printf("error in reading file\n");
327          exit(8);
328        }
329 <      current_frame->boxZ = atof( foo );
329 >      current_frame->Hmat[2][0] = atof( foo );
330 >
331 >      foo = strtok(NULL, " ,;\t");
332 >      if(foo == NULL){
333 >        printf("error in reading file\n");
334 >        exit(8);
335 >      }
336 >      current_frame->Hmat[0][1] = atof( foo );
337 >
338 >      foo = strtok(NULL, " ,;\t");
339 >      if(foo == NULL){
340 >        printf("error in reading file\n");
341 >        exit(8);
342 >      }
343 >      current_frame->Hmat[1][1] = atof( foo );
344 >
345 >      foo = strtok(NULL, " ,;\t");
346 >      if(foo == NULL){
347 >        printf("error in reading file\n");
348 >        exit(8);
349 >      }
350 >      current_frame->Hmat[2][1] = atof( foo );
351 >
352 >      foo = strtok(NULL, " ,;\t");
353 >      if(foo == NULL){
354 >        printf("error in reading file\n");
355 >        exit(8);
356 >      }
357 >      current_frame->Hmat[0][2] = atof( foo );
358 >
359 >      foo = strtok(NULL, " ,;\t");
360 >      if(foo == NULL){
361 >        printf("error in reading file\n");
362 >        exit(8);
363 >      }
364 >      current_frame->Hmat[1][2] = atof( foo );
365 >
366 >      foo = strtok(NULL, " ,;\t");
367 >      if(foo == NULL){
368 >        printf("error in reading file\n");
369 >        exit(8);
370 >      }
371 >      current_frame->Hmat[2][2] = atof( foo );
372 >
373      }
374  
375      for( i=0; i < n_atoms; i++){
# Line 401 | Line 445 | int main(argc, argv)
445                          "#include \"pov_header.pov\"\n"
446                          "\n");
447            if( draw_box ){
448 <            dx = current_frame->boxX - temp_frame->boxX;
449 <            dy = current_frame->boxY - temp_frame->boxY;
450 <            dz = current_frame->boxZ - temp_frame->boxZ;
451 <            
452 <            dx /= (double)(n_interpolate + 1);
453 <            dy /= (double)(n_interpolate + 1);
454 <            dz /= (double)(n_interpolate + 1);
455 <            
448 >
449 >            for (j = 0; j < 3; j++) {
450 >              for (k = 0; k < 3; k++) {
451 >                dm[j][k] = current_frame->Hmat[j][k] - temp_frame->Hmat[j][k];
452 >                dm[j][k] /= (double)(n_interpolate + 1);
453 >              }
454 >            }
455 >                            
456              fprintf( out_file,
457 <                     "makePeriodicBox( %lf, %lf, %lf )\n"
457 >                     "makePeriodicBox( %lf, %lf, %lf, %lf, %lf, %lf, %lf, %lf, %lf)\n"
458                       "\n",
459 <                     temp_frame->boxX + dx * (i+1),
460 <                     temp_frame->boxZ + dz * (i+1),
461 <                     temp_frame->boxY + dy * (i+1) );
459 >                     temp_frame->Hmat[0][0] + dm[0][0] * (i+1),
460 >                     temp_frame->Hmat[2][0] + dm[2][0] * (i+1),
461 >                     temp_frame->Hmat[1][0] + dm[1][0] * (i+1),
462 >                     temp_frame->Hmat[0][1] + dm[0][1] * (i+1),
463 >                     temp_frame->Hmat[2][1] + dm[2][1] * (i+1),
464 >                     temp_frame->Hmat[1][1] + dm[1][1] * (i+1),
465 >                     temp_frame->Hmat[0][2] + dm[0][2] * (i+1),
466 >                     temp_frame->Hmat[2][2] + dm[2][2] * (i+1),
467 >                     temp_frame->Hmat[1][2] + dm[1][2] * (i+1) );
468            }
469            
470            
# Line 461 | Line 511 | int main(argc, argv)
511        if( draw_box ){
512          
513          fprintf( out_file,
514 <                 "makePeriodicBox( %lf, %lf, %lf )\n"
514 >                 "makePeriodicBox( %lf, %lf, %lf, %lf, %lf, %lf, %lf, %lf %lf )\n"
515                   "\n",
516 <                 current_frame->boxX,
517 <                 current_frame->boxZ,
518 <                 current_frame->boxY );
516 >                 current_frame->Hmat[0][0],
517 >                 current_frame->Hmat[2][0],
518 >                 current_frame->Hmat[1][0],
519 >                 current_frame->Hmat[0][1],
520 >                 current_frame->Hmat[2][1],
521 >                 current_frame->Hmat[1][1],
522 >                 current_frame->Hmat[0][2],
523 >                 current_frame->Hmat[2][2],
524 >                 current_frame->Hmat[1][2] );
525        }
526        
527        
# Line 651 | Line 707 | int main(argc, argv)
707              "// declare the periodic box macro\n"
708              "//************************************************************\n"
709              "\n"
710 <            "#macro makePeriodicBox( lengthX, lengthY, lengthZ )\n"
710 >            "#macro makePeriodicBox( bx1, by1, bz1, bx2, by2, bz2, bx3, by3, bz3 )\n"
711              "\n"
712 <            "  #local addX = lengthX / 2.0;\n"
713 <            "  #local addY = lengthY / 2.0;\n"
714 <            "  #local addZ = lengthZ / 2.0;\n"
712 >            "  #local bcx = (bx1 + bx2 + bx3) / 2.0;\n"
713 >            "  #local bcy = (by1 + by2 + by3) / 2.0;\n"
714 >            "  #local bcz = (bz1 + bz2 + bz3) / 2.0;\n"
715              "\n"
716 +            "  #local pAx = boxCenterX - bcx;\n"
717 +            "  #local pAy = boxCenterY - bcy;\n"
718 +            "  #local pAz = boxCenterZ - bcz;\n"
719 +            "  #local pBx = boxCenterX + bx1 - bcx;\n"
720 +            "  #local pBy = boxCenterY + by1 - bcy;\n"
721 +            "  #local pBz = boxCenterZ + bz1 - bcz;\n"
722 +            "  #local pCx = boxCenterX + bx2 - bcx;\n"
723 +            "  #local pCy = boxCenterY + by2 - bcy;\n"
724 +            "  #local pCz = boxCenterZ + bz2 - bcz;\n"
725 +            "  #local pDx = boxCenterX + bx3 - bcx;\n"
726 +            "  #local pDy = boxCenterY + by3 - bcy;\n"
727 +            "  #local pDz = boxCenterZ + bz3 - bcz;\n"
728 +            "  #local pEx = boxCenterX + bx1 + bx2 - bcx;\n"
729 +            "  #local pEy = boxCenterY + by1 + by2 - bcy;\n"
730 +            "  #local pEz = boxCenterZ + bz1 + bz2 - bcz;\n"
731 +            "  #local pFx = boxCenterX + bx1 + bx3 - bcx;\n"
732 +            "  #local pFy = boxCenterY + by1 + by3 - bcy;\n"
733 +            "  #local pFz = boxCenterZ + bz1 + bz3 - bcz;\n"
734 +            "  #local pGx = boxCenterX + bx2 + bx3 - bcx;\n"
735 +            "  #local pGy = boxCenterY + by2 + by3 - bcy;\n"
736 +            "  #local pGz = boxCenterZ + bz2 + bz3 - bcz;\n"
737 +            "  #local pHx = boxCenterX + bx1 + bx2 + bx3 - bcx;\n"
738 +            "  #local pHy = boxCenterY + by1 + by2 + by3 - bcy;\n"
739 +            "  #local pHz = boxCenterZ + bz1 + bz2 + bz3 - bcz;\n"
740 +            "\n"
741              "  #local colorR = 0.90;\n"
742              "  #local colorG = 0.91;\n"
743              "  #local colorB = 0.98;\n"
# Line 665 | Line 746 | int main(argc, argv)
746              "\n"
747              "  // 1\n"
748              "  cylinder{\n"
749 <            "    < boxCenterX-addX, boxCenterY-addY, boxCenterZ-addZ >,\n"
750 <            "    < boxCenterX-addX, boxCenterY+addY, boxCenterZ-addZ >,\n"
749 >            "    < pAx, pAy, pAz >,\n"
750 >            "    < pBx, pBy, pBz >,\n"
751              "    pipeWidth\n"
752              "    texture{\n"
753              "      pigment{ rgb < colorR, colorG, colorB > }\n"
# Line 682 | Line 763 | int main(argc, argv)
763              "\n"
764              "  // 2\n"
765              "  cylinder{\n"
766 <            "    < boxCenterX-addX, boxCenterY-addY, boxCenterZ+addZ >,\n"
767 <            "    < boxCenterX-addX, boxCenterY+addY, boxCenterZ+addZ >,\n"
766 >            "    < pAx, pAy, pAz >,\n"
767 >            "    < pCx, pCy, pCz >,\n"
768              "    pipeWidth\n"
769              "    texture{\n"
770              "      pigment{ rgb < colorR, colorG, colorB > }\n"
# Line 699 | Line 780 | int main(argc, argv)
780              "\n"
781              "  // 3\n"
782              "  cylinder{\n"
783 <            "    < boxCenterX+addX, boxCenterY-addY, boxCenterZ-addZ >,\n"
784 <            "    < boxCenterX+addX, boxCenterY+addY, boxCenterZ-addZ >,\n"
783 >            "    < pAx, pAy, pAz >,\n"
784 >            "    < pDx, pDy, pDz >,\n"
785              "    pipeWidth\n"
786              "    texture{\n"
787              "      pigment{ rgb < colorR, colorG, colorB > }\n"
# Line 716 | Line 797 | int main(argc, argv)
797              "\n"
798              "  // 4\n"
799              "  cylinder{\n"
800 <            "    < boxCenterX+addX, boxCenterY-addY, boxCenterZ+addZ >,\n"
801 <            "    < boxCenterX+addX, boxCenterY+addY, boxCenterZ+addZ >,\n"
800 >            "    < pBx, pBy, pBz >,\n"
801 >            "    < pEx, pEy, pEz >,\n"
802              "    pipeWidth\n"
803              "    texture{\n"
804              "      pigment{ rgb < colorR, colorG, colorB > }\n"
# Line 733 | Line 814 | int main(argc, argv)
814              "\n"
815              "  // 5\n"
816              "  cylinder{\n"
817 <            "    < boxCenterX-addX, boxCenterY-addY, boxCenterZ-addZ >,\n"
818 <            "    < boxCenterX-addX, boxCenterY-addY, boxCenterZ+addZ >,\n"
817 >            "    < pCx, pCy, pCz >,\n"
818 >            "    < pEx, pEy, pEz >,\n"
819              "    pipeWidth\n"
820              "    texture{\n"
821              "      pigment{ rgb < colorR, colorG, colorB > }\n"
# Line 750 | Line 831 | int main(argc, argv)
831              "\n"
832              "  // 6\n"
833              "  cylinder{\n"
834 <            "    < boxCenterX-addX, boxCenterY-addY, boxCenterZ+addZ >,\n"
835 <            "    < boxCenterX+addX, boxCenterY-addY, boxCenterZ+addZ >,\n"
834 >            "    < pBx, pBy, pBz >,\n"
835 >            "    < pFx, pFy, pFz >,\n"
836              "    pipeWidth\n"
837              "    texture{\n"
838              "      pigment{ rgb < colorR, colorG, colorB > }\n"
# Line 767 | Line 848 | int main(argc, argv)
848              "\n"
849              "  // 7\n"
850              "  cylinder{\n"
851 <            "    < boxCenterX+addX, boxCenterY-addY, boxCenterZ+addZ >,\n"
852 <            "    < boxCenterX+addX, boxCenterY-addY, boxCenterZ-addZ >,\n"
851 >            "    < pCx, pCy, pCz >,\n"
852 >            "    < pGx, pGy, pGz >,\n"
853              "    pipeWidth\n"
854              "    texture{\n"
855              "      pigment{ rgb < colorR, colorG, colorB > }\n"
# Line 784 | Line 865 | int main(argc, argv)
865              "\n"
866              "  // 8\n"
867              "  cylinder{\n"
868 <            "    < boxCenterX+addX, boxCenterY-addY, boxCenterZ-addZ >,\n"
869 <            "    < boxCenterX-addX, boxCenterY-addY, boxCenterZ-addZ >,\n"
868 >            "    < pDx, pDy, pDz >,\n"
869 >            "    < pGx, pGy, pGz >,\n"
870              "    pipeWidth\n"
871              "    texture{\n"
872              "      pigment{ rgb < colorR, colorG, colorB > }\n"
# Line 801 | Line 882 | int main(argc, argv)
882              "\n"
883              "  // 9\n"
884              "  cylinder{\n"
885 <            "    < boxCenterX-addX, boxCenterY+addY, boxCenterZ-addZ >,\n"
886 <            "    < boxCenterX-addX, boxCenterY+addY, boxCenterZ+addZ >,\n"
885 >            "    < pDx, pDy, pDz >,\n"
886 >            "    < pFx, pFy, pFz >,\n"
887              "    pipeWidth\n"
888              "    texture{\n"
889              "      pigment{ rgb < colorR, colorG, colorB > }\n"
# Line 818 | Line 899 | int main(argc, argv)
899              "\n"
900              "  // 10\n"
901              "  cylinder{\n"
902 <            "    < boxCenterX-addX, boxCenterY+addY, boxCenterZ+addZ >,\n"
903 <            "    < boxCenterX+addX, boxCenterY+addY, boxCenterZ+addZ >,\n"
902 >            "    < pEx, pEy, pEz >,\n"
903 >            "    < pHx, pHy, pHz >,\n"
904              "    pipeWidth\n"
905              "    texture{\n"
906              "      pigment{ rgb < colorR, colorG, colorB > }\n"
# Line 835 | Line 916 | int main(argc, argv)
916              "\n"
917              "  // 11\n"
918              "  cylinder{\n"
919 <            "    < boxCenterX+addX, boxCenterY+addY, boxCenterZ+addZ >,\n"
920 <            "    < boxCenterX+addX, boxCenterY+addY, boxCenterZ-addZ >,\n"
919 >            "    < pFx, pFy, pFz >,\n"
920 >            "    < pHx, pHy, pHz >,\n"
921              "    pipeWidth\n"
922              "    texture{\n"
923              "      pigment{ rgb < colorR, colorG, colorB > }\n"
# Line 852 | Line 933 | int main(argc, argv)
933              "\n"
934              "  // 12\n"
935              "  cylinder{\n"
936 <            "    < boxCenterX+addX, boxCenterY+addY, boxCenterZ-addZ >,\n"
937 <            "    < boxCenterX-addX, boxCenterY+addY, boxCenterZ-addZ >,\n"
936 >            "    < pGx, pGy, pGz >,\n"
937 >            "    < pHx, pHy, pHz >,\n"
938              "    pipeWidth\n"
939              "    texture{\n"
940              "      pigment{ rgb < colorR, colorG, colorB > }\n"

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines