#include "stdio.h" #include "stdlib.h" #include "math.h" #include "paulslib.h" #define TWOPI 6.283185307179586476925287 #define RADIUS 0.02 FILE *f1,*f2; int NSEGMENTS = 400; int SPHEREN = 16; double r2 = 0.15; int nfacet = 0; void MakeSphere(double,double,double,double); int main(int argc,char **argv) { int i; double x,y,z; double xlast,ylast,zlast; double xmin=1e32,xmax=-1e32,ymin=1e32,ymax=-1e32,zmin=1e32,zmax=-1e32; double dd,ddmax=0,ddmin=1e32; double mu; int nlongitude,nmeridian; /* Command line arguments */ if (argc < 3) { fprintf(stderr,"usage: %s nmeridian nlongitude\n",argv[0]); exit(-1); } nmeridian = atoi(argv[1]); nlongitude = atoi(argv[2]); /* Open two files, one for the geom file, one for the stl file */ f1 = fopen("knot3.geom","w"); f2 = fopen("knot3.stl","w"); fprintf(f2,"solid\n"); for (i=0;i 0) { dd = (x-xlast)*(x-xlast) + (y-ylast)*(y-ylast) + (z-zlast)*(z-zlast); ddmin = (dd < ddmin ? dd : ddmin); ddmax = (dd > ddmax ? dd : ddmax); } xlast = x; ylast = y; zlast = z; xmin = (x < xmin ? x : xmin); xmax = (x > xmax ? x : xmax); ymin = (y < ymin ? y : ymin); ymax = (y > ymax ? y : ymax); zmin = (z < zmin ? z : zmin); zmax = (z > zmax ? z : zmax); } fprintf(f2,"endsolid\n"); fprintf(stderr,"Sphere separation range = %g -> %g\n",ddmin,ddmax); fprintf(stderr,"Sphere radius = %g\n",r2); fprintf(stderr,"Number of spheres = %d\n",NSEGMENTS); fprintf(stderr,"Total facets = %d\n",nfacet); fprintf(stderr,"X range = %g -> %g\n",xmin,xmax); fprintf(stderr,"Y range = %g -> %g\n",ymin,ymax); fprintf(stderr,"Z range = %g -> %g\n",zmin,zmax); fclose(f1); fclose(f2); } void MakeSphere(double cx,double cy,double cz,double r) { int i,j; double t1,t2,t3,t4; XYZ e[4],normal; for (j=0;j