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:
Michael John Muuss committed 1987-09-16 23:01:32 +00:00
1 parent e813df6c55
commit d40fb36531
3 files changed
+108 -81

No files matched your search

+72 -46
View File
@@ -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
View File
@@ -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
View File
@@ -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 )