#
# Display of all primitives of the system:
# BOX, GBOX, CONE, CYLIN, SPHERE, TORUS
#
#				Created by Gershon Elber,	Dec. 88
#

save_mat = view_mat;
view_mat = view_mat * scale(vector( 0.5, 0.5, 0.5 ));
axes15 = axes * scale(vector(1.5, 1.5, 1.5));

Cyls = list( cylin(vector(-0.8, 0.0, 0.0), vector(-0.5, 0.3, 0.3), 0.3),
	     cylin(vector( 0.8, 0.0, 0.0), vector( 0.8, 0.0, 0.0), 0.3),
	     cylin(vector( 0.0,-0.8, 0.0), vector( 0.1,-0.5, 0.2), 0.3),
	     cylin(vector( 0.0, 0.8, 0.0), vector( 0.0, 0.8, 0.0), 0.3),
	     cylin(vector( 0.0, 0.0,-0.8), vector( 0.4, 0.2,-0.5), 0.3),
	     cylin(vector( 0.0, 0.0, 0.8), vector( 0.0, 0.0, 0.8), 0.3) );
color( Cyls, red );

Cones = list( cone(vector(-0.5, 0.0, 0.0), vector(-0.5, 0.0, 0.0), 0.5),
	      cone(vector( 0.5, 0.0, 0.0), vector( 0.5, 0.0, 0.0), 0.5),
	      cone(vector( 0.0,-0.5, 0.0), vector( 0.0,-0.5, 0.0), 0.5),
	      cone(vector( 0.0, 0.5, 0.0), vector( 0.0, 0.5, 0.0), 0.5),
	      cone(vector( 0.0, 0.0,-0.5), vector( 0.0, 0.0,-0.5), 0.5),
	      cone(vector( 0.0, 0.0, 0.5), vector( 0.0, 0.0, 0.5), 0.5) );
color( Cones, red );

Spr = sphere(vector( 0.0, 0.0, 0.0), 0.5);
color( Spr, red );
Trs = torus(vector( 0.0, 0.0, 0.0), vector( 0.1, 0.2, 1.0), 0.5, 0.2);
color( Trs, red );

#
# Create primitive as exact rational surfaces.
#
iritstate( "PrimSrfs", on );

interact(list(view_mat, axes15, Cones,
	      cone(vector(-0.5, 0.0, 0.0), vector(-0.5, 0.0, 0.0), 0.5),
	      cone(vector( 0.5, 0.0, 0.0), vector( 0.5, 0.0, 0.0), 0.5),
	      cone(vector( 0.0,-0.5, 0.0), vector( 0.0,-0.5, 0.0), 0.5),
	      cone(vector( 0.0, 0.5, 0.0), vector( 0.0, 0.5, 0.0), 0.5),
	      cone(vector( 0.0, 0.0,-0.5), vector( 0.0, 0.0,-0.5), 0.5),
	      cone(vector( 0.0, 0.0, 0.5), vector( 0.0, 0.0, 0.5), 0.5)));

interact(list(view_mat, axes15, Cyls,
	      cylin(vector(-0.8, 0.0, 0.0), vector(-0.5, 0.3, 0.3), 0.3),
	      cylin(vector( 0.8, 0.0, 0.0), vector( 0.8, 0.0, 0.0), 0.3),
	      cylin(vector( 0.0,-0.8, 0.0), vector( 0.1,-0.5, 0.2), 0.3),
	      cylin(vector( 0.0, 0.8, 0.0), vector( 0.0, 0.8, 0.0), 0.3),
	      cylin(vector( 0.0, 0.0,-0.8), vector( 0.4, 0.2,-0.5), 0.3),
	      cylin(vector( 0.0, 0.0, 0.8), vector( 0.0, 0.0, 0.8), 0.3)));

interact(list(view_mat, axes15, Spr, sphere(vector( 0.0, 0.0, 0.0), 0.5)));


interact(list(view_mat, axes15, Trs,
	      torus(vector( 0.0, 0.0, 0.0),
		    vector( 0.1, 0.2, 1.0), 0.5, 0.2)));

#
# Create primitive as approximated integral polynomial surfaces.
#
iritstate( "PrimRatSrfs", off );

interact(list(view_mat, axes15, Cones,
	      cone(vector(-0.5, 0.0, 0.0), vector(-0.5, 0.0, 0.0), 0.5),
	      cone(vector( 0.5, 0.0, 0.0), vector( 0.5, 0.0, 0.0), 0.5),
	      cone(vector( 0.0,-0.5, 0.0), vector( 0.0,-0.5, 0.0), 0.5),
	      cone(vector( 0.0, 0.5, 0.0), vector( 0.0, 0.5, 0.0), 0.5),
	      cone(vector( 0.0, 0.0,-0.5), vector( 0.0, 0.0,-0.5), 0.5),
	      cone(vector( 0.0, 0.0, 0.5), vector( 0.0, 0.0, 0.5), 0.5)));

interact(list(view_mat, axes15, Cyls,
	      cylin(vector(-0.8, 0.0, 0.0), vector(-0.5, 0.3, 0.3), 0.3),
	      cylin(vector( 0.8, 0.0, 0.0), vector( 0.8, 0.0, 0.0), 0.3),
	      cylin(vector( 0.0,-0.8, 0.0), vector( 0.1,-0.5, 0.2), 0.3),
	      cylin(vector( 0.0, 0.8, 0.0), vector( 0.0, 0.8, 0.0), 0.3),
	      cylin(vector( 0.0, 0.0,-0.8), vector( 0.4, 0.2,-0.5), 0.3),
	      cylin(vector( 0.0, 0.0, 0.8), vector( 0.0, 0.0, 0.8), 0.3)));

interact(list(view_mat, axes15, Spr, sphere(vector( 0.0, 0.0, 0.0), 0.5)));

interact(list(view_mat, axes15, Trs,
	      torus(vector( 0.0, 0.0, 0.0),
		    vector( 0.1, 0.2, 1.0), 0.5, 0.2)));


free( axes15 );
free( Cyls );
free( Cones );
free( Spr );
free( Trs );

view_mat = save_mat;
