Updated to include stdio FILE pointer as first arg to
all mk_*() routines. svn:revision:1514 cvs:account:mike cvs:branch:trunk
This commit is contained in:
1 parent
e813df6c55
commit
d40fb36531
3 files changed
+108
-81
No files matched your search
+72
-46
@@ -35,25 +35,57 @@ static char RCSid[] = "@(#)$Header$ (BRL)";
|
||||
/*
|
||||
* M K _ I D
|
||||
*/
|
||||
mk_id( title )
|
||||
char *title;
|
||||
mk_id( fp, title )
|
||||
FILE *fp;
|
||||
char *title;
|
||||
{
|
||||
static union record rec;
|
||||
|
||||
bzero( (char *)&rec, sizeof(rec) );
|
||||
rec.i.i_id = ID_IDENT;
|
||||
rec.i.i_units = ID_MM_UNIT;
|
||||
strncpy( rec.i.i_version, ID_VERSION, sizeof(rec.i.i_version) );
|
||||
strncpy( rec.i.i_title, title, sizeof(rec.i.i_title) );
|
||||
fwrite( (char *)&rec, sizeof(rec), 1, stdout );
|
||||
fwrite( (char *)&rec, sizeof(rec), 1, fp );
|
||||
}
|
||||
|
||||
/*
|
||||
* M K _ A R B
|
||||
* M K _ A R B 4
|
||||
*/
|
||||
mk_arb( name, pts, npts )
|
||||
char *name;
|
||||
point_t pts[];
|
||||
int npts;
|
||||
mk_arb4( fp, name, pts )
|
||||
FILE *fp;
|
||||
char *name;
|
||||
point_t pts[];
|
||||
{
|
||||
register int i;
|
||||
point_t pt8[8];
|
||||
|
||||
VMOVE( pt8[0], pts[0] );
|
||||
VMOVE( pt8[1], pts[1] );
|
||||
VMOVE( pt8[2], pts[2] );
|
||||
VMOVE( pt8[3], pts[2] ); /* shared point for base */
|
||||
|
||||
VMOVE( pt8[4], pts[3] ); /* top point */
|
||||
VMOVE( pt8[5], pts[3] );
|
||||
VMOVE( pt8[6], pts[3] );
|
||||
VMOVE( pt8[7], pts[3] );
|
||||
|
||||
mk_arb8( fp, name, pt8 );
|
||||
}
|
||||
|
||||
/*
|
||||
* M K _ A R B 8
|
||||
*
|
||||
* If there are degeneracies (ie, all 8 vertices are not distinct),
|
||||
* then certain requirements must be met.
|
||||
* If we think of the ARB8 as having a top and a bottom plate,
|
||||
* the first four points listed must lie on one plate, and
|
||||
* the second four points listed must lie on the other plate.
|
||||
*/
|
||||
mk_arb8( fp, name, pts )
|
||||
FILE *fp;
|
||||
char *name;
|
||||
point_t pts[];
|
||||
{
|
||||
register int i;
|
||||
static union record rec;
|
||||
@@ -63,13 +95,10 @@ int npts;
|
||||
rec.s.s_type = GENARB8;
|
||||
NAMEMOVE( name, rec.s.s_name );
|
||||
VMOVE( &rec.s.s_values[3*0], pts[0] );
|
||||
for( i=1; i<npts; i++ ) {
|
||||
for( i=1; i<8; i++ ) {
|
||||
VSUB2( &rec.s.s_values[3*i], pts[i], pts[0] );
|
||||
}
|
||||
for( ; i<8; i++ ) {
|
||||
VSET( &rec.s.s_values[3*i], 0, 0, 0 );
|
||||
}
|
||||
fwrite( (char *)&rec, sizeof(rec), 1, stdout );
|
||||
fwrite( (char *)&rec, sizeof(rec), 1, fp );
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -78,17 +107,15 @@ int npts;
|
||||
* Make a sphere centered at sx, sy, sz with radius r.
|
||||
*/
|
||||
|
||||
mk_sph(name, sx, sy, sz, r)
|
||||
char * name;
|
||||
fastf_t sx, sy, sz, r;
|
||||
mk_sph( fp, name, sx, sy, sz, r)
|
||||
FILE *fp;
|
||||
char *name;
|
||||
fastf_t sx, sy, sz, r;
|
||||
{
|
||||
register int i;
|
||||
static union record rec;
|
||||
|
||||
#ifdef BSD
|
||||
bzero( (char *)&rec, sizeof(rec) );
|
||||
#endif
|
||||
|
||||
rec.s.s_id = ID_SOLID;
|
||||
rec.s.s_type = GENELL;
|
||||
rec.s.s_cgtype = SPH;
|
||||
@@ -99,7 +126,7 @@ fastf_t sx, sy, sz, r;
|
||||
VSET( &rec.s.s_values[6], 0, r, 0 );
|
||||
VSET( &rec.s.s_values[9], 0, 0, r );
|
||||
|
||||
fwrite( (char *) &rec, sizeof(rec), 1, stdout);
|
||||
fwrite( (char *) &rec, sizeof(rec), 1, fp);
|
||||
}
|
||||
|
||||
|
||||
@@ -120,23 +147,18 @@ fastf_t sx, sy, sz, r;
|
||||
* mk_rcc( name, base, height, radius)
|
||||
* Make a Right Circular Cylinder into a generalized truncated cyinder
|
||||
*/
|
||||
|
||||
|
||||
mk_rcc( name, base, height, radius )
|
||||
char * name;
|
||||
point_t base;
|
||||
vect_t height;
|
||||
fastf_t radius;
|
||||
mk_rcc( fp, name, base, height, radius )
|
||||
FILE *fp;
|
||||
char *name;
|
||||
point_t base;
|
||||
vect_t height;
|
||||
fastf_t radius;
|
||||
{
|
||||
static union record rec;
|
||||
static float pi = 3.14159265358979323264;
|
||||
fastf_t m1, m2;
|
||||
|
||||
#ifdef BSD
|
||||
bzero( (char *)&rec, sizeof(rec) );
|
||||
#endif
|
||||
|
||||
|
||||
rec.s.s_id = ID_SOLID;
|
||||
rec.s.s_type = GENTGC;
|
||||
rec.s.s_cgtype = RCC;
|
||||
@@ -172,7 +194,7 @@ fastf_t radius;
|
||||
VMOVE( F5, F3);
|
||||
VMOVE( F6, F4);
|
||||
|
||||
fwrite( (char *)&rec, sizeof( rec), 1, stdout);
|
||||
fwrite( (char *)&rec, sizeof( rec), 1, fp);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -180,11 +202,12 @@ fastf_t radius;
|
||||
*
|
||||
* Make a combination with material properties info
|
||||
*/
|
||||
mk_mcomb( name, len, region, matname, matparm, override, rgb )
|
||||
char *name;
|
||||
char *matname;
|
||||
char *matparm;
|
||||
char *rgb;
|
||||
mk_mcomb( fp, name, len, region, matname, matparm, override, rgb )
|
||||
FILE *fp;
|
||||
char *name;
|
||||
char *matname;
|
||||
char *matparm;
|
||||
char *rgb;
|
||||
{
|
||||
static union record rec;
|
||||
|
||||
@@ -208,7 +231,7 @@ char *rgb;
|
||||
rec.c.c_rgb[1] = rgb[1];
|
||||
rec.c.c_rgb[2] = rgb[2];
|
||||
}
|
||||
fwrite( (char *)&rec, sizeof(rec), 1, stdout );
|
||||
fwrite( (char *)&rec, sizeof(rec), 1, fp );
|
||||
}
|
||||
|
||||
|
||||
@@ -218,8 +241,9 @@ char *rgb;
|
||||
* Make a simple combination header.
|
||||
* Must be followed by 'len' mk_memb() calls before any other mk_* routines
|
||||
*/
|
||||
mk_comb( name, len, region )
|
||||
char *name;
|
||||
mk_comb( fp, name, len, region )
|
||||
FILE *fp;
|
||||
char *name;
|
||||
{
|
||||
static union record rec;
|
||||
|
||||
@@ -231,7 +255,7 @@ char *name;
|
||||
rec.c.c_flags = ' ';
|
||||
NAMEMOVE( name, rec.c.c_name );
|
||||
rec.c.c_length = len;
|
||||
fwrite( (char *)&rec, sizeof(rec), 1, stdout );
|
||||
fwrite( (char *)&rec, sizeof(rec), 1, fp );
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -239,18 +263,20 @@ char *name;
|
||||
*
|
||||
* Must be part of combination/member clump of records.
|
||||
*/
|
||||
mk_memb( op, name, mat )
|
||||
int op;
|
||||
char *name;
|
||||
mat_t mat;
|
||||
mk_memb( fp, op, name, mat )
|
||||
FILE *fp;
|
||||
int op;
|
||||
char *name;
|
||||
mat_t mat;
|
||||
{
|
||||
static union record rec;
|
||||
register int i;
|
||||
|
||||
bzero( (char *)&rec, sizeof(rec) );
|
||||
rec.M.m_id = ID_MEMB;
|
||||
rec.M.m_relation = op;
|
||||
NAMEMOVE( name, rec.M.m_instname );
|
||||
for( i=0; i<16; i++ )
|
||||
rec.M.m_mat[i] = mat[i];
|
||||
fwrite( (char *)&rec, sizeof(rec), 1, stdout );
|
||||
fwrite( (char *)&rec, sizeof(rec), 1, fp );
|
||||
}
|
||||
+16
-17
@@ -17,11 +17,11 @@ static char rcs_ident[] = "$Header$";
|
||||
|
||||
struct sphere {
|
||||
struct sphere * next; /* Next Sphere */
|
||||
int s_id; /* Sphere id */
|
||||
char s_name[15]; /* Sphere name */
|
||||
point_t s_center; /* Sphere Center */
|
||||
fastf_t s_rad; /* Sphere radius */
|
||||
int s_atom_type; /* Atom Type */
|
||||
int s_id; /* Sphere id */
|
||||
char s_name[15]; /* Sphere name */
|
||||
point_t s_center; /* Sphere Center */
|
||||
fastf_t s_rad; /* Sphere radius */
|
||||
int s_atom_type; /* Atom Type */
|
||||
};
|
||||
|
||||
struct sphere *s_list = (struct sphere *) 0;
|
||||
@@ -43,7 +43,7 @@ int argc;
|
||||
char ** argv;
|
||||
{
|
||||
|
||||
mk_id( argv[1], ID_MM_UNIT );
|
||||
mk_id( stdout, argv[1], ID_MM_UNIT );
|
||||
read_data();
|
||||
}
|
||||
|
||||
@@ -101,7 +101,7 @@ read_data( )
|
||||
case (2):
|
||||
scanf("%d", &b_1);
|
||||
scanf("%d", &b_2);
|
||||
mk_bond( b_1, b_2);
|
||||
make_bond( b_1, b_2);
|
||||
break;
|
||||
case (4):
|
||||
return;
|
||||
@@ -129,9 +129,9 @@ int sph_type;
|
||||
|
||||
sprintf(nm, "SPH.%d", id );
|
||||
sprintf(nm1, "sph.%d", id );
|
||||
mk_sph( nm1, x, y, z, rad );
|
||||
mk_mcomb( nm, 1, 1, matname, matparm, 1, rgb );
|
||||
mk_memb( UNION, nm1, m);
|
||||
mk_sph( stdout, nm1, x, y, z, rad );
|
||||
mk_mcomb( stdout, nm, 1, 1, matname, matparm, 1, rgb );
|
||||
mk_memb( stdout, UNION, nm1, m);
|
||||
|
||||
new->next = ( struct sphere *)0;
|
||||
new->s_id = id;
|
||||
@@ -152,7 +152,7 @@ int sph_type;
|
||||
}
|
||||
}
|
||||
|
||||
mk_bond( sp1, sp2 )
|
||||
make_bond( sp1, sp2 )
|
||||
int sp1, sp2;
|
||||
{
|
||||
struct sphere * s1, *s2, *s_ptr;
|
||||
@@ -188,12 +188,11 @@ int sp1, sp2;
|
||||
rgb[1] = 142;
|
||||
rgb[2] = 57;
|
||||
|
||||
mk_rcc( nm, base, height, 5.0 );
|
||||
mk_rcc( stdout, nm, base, height, 5.0 );
|
||||
|
||||
mk_mcomb( nm1, 3, 1, matname, matparm, 1, rgb);
|
||||
mk_memb(UNION, nm, m);
|
||||
mk_memb(SUBTRACT, s1->s_name, m);
|
||||
mk_memb(SUBTRACT, s2->s_name, m);
|
||||
mk_mcomb( stdout, nm1, 3, 1, matname, matparm, 1, rgb);
|
||||
mk_memb( stdout, UNION, nm, m);
|
||||
mk_memb( stdout, SUBTRACT, s1->s_name, m);
|
||||
mk_memb( stdout, SUBTRACT, s2->s_name, m);
|
||||
|
||||
}
|
||||
|
||||
+20
-18
@@ -28,32 +28,34 @@ static char RCSid[] = "@(#)$Header$ (BRL)";
|
||||
|
||||
double sin60;
|
||||
|
||||
main()
|
||||
main(argc, argv)
|
||||
char **argv;
|
||||
{
|
||||
sin60 = sin(3.14159265358979323846264/3.0);
|
||||
int depth;
|
||||
|
||||
mk_id( "Triangles" );
|
||||
if( argc != 2 ) {
|
||||
fprintf(stderr, "Usage: tri recursion\n");
|
||||
exit(1);
|
||||
}
|
||||
depth = atoi( argv[1] );
|
||||
sin60 = sin(60.0 * 3.14159265358979323846264 / 180.0);
|
||||
|
||||
mk_id( stdout, "Triangles" );
|
||||
|
||||
do_leaf();
|
||||
do_tree("tree",4);
|
||||
do_tree("tree", depth);
|
||||
}
|
||||
|
||||
do_leaf()
|
||||
{
|
||||
point_t pt[8];
|
||||
point_t pt[4];
|
||||
|
||||
VSET( pt[0], 0, 0, 0);
|
||||
VSET( pt[1], 1, 0, 0);
|
||||
VSET( pt[2], 0.5, sin60, 0);
|
||||
VMOVE( pt[3], pt[2] );
|
||||
VSET( pt[3], 0.5, sin60/3, sin60 );
|
||||
|
||||
VSET( pt[4], 0.5, sin60/3, sin60 );
|
||||
|
||||
VMOVE( pt[5], pt[1] );
|
||||
VMOVE( pt[6], pt[2] );
|
||||
VMOVE( pt[7], pt[4] );
|
||||
|
||||
mk_arb( "leaf", pt, 8 );
|
||||
mk_arb4( stdout, "leaf", pt );
|
||||
}
|
||||
|
||||
do_tree(name, level)
|
||||
@@ -76,23 +78,23 @@ int level;
|
||||
scale *= 2;
|
||||
|
||||
/* len = 4, set region on lowest level */
|
||||
mk_comb( name, 4, level<=1 );
|
||||
mk_comb( stdout, name, 4, level<=1 );
|
||||
|
||||
mat_idn( m );
|
||||
sprintf(nm, "%sL", name);
|
||||
mk_memb( UNION, leafp, m );
|
||||
mk_memb( stdout, UNION, leafp, m );
|
||||
|
||||
MAT_DELTAS( m, 1*scale, 0, 0 );
|
||||
sprintf(nm, "%sR", name);
|
||||
mk_memb( UNION, leafp, m );
|
||||
mk_memb( stdout, UNION, leafp, m );
|
||||
|
||||
MAT_DELTAS( m, 0.5*scale, sin60*scale, 0 );
|
||||
sprintf(nm, "%sB", name);
|
||||
mk_memb( UNION, leafp, m );
|
||||
mk_memb( stdout, UNION, leafp, m );
|
||||
|
||||
MAT_DELTAS( m, 0.5*scale, sin60/3*scale, sin60*scale );
|
||||
sprintf(nm, "%sT", name);
|
||||
mk_memb( UNION, leafp, m );
|
||||
mk_memb( stdout, UNION, leafp, m );
|
||||
|
||||
/* Loop for children if level > 1 */
|
||||
if( level <= 1 )
|
||||
|
||||
Reference in new issue
Block a user