Utah teapot Conference Main
Fact Sheet SIGGRAPH 98

PRISA (Planar Layout) for the Utah Teapot

#
#

SampPerCrv = 64;

LayoutHandleOneTrimmed = function( TrmSrf, DumpSrf ): Srf:
    if ( DumpSrf,
	 Srf = sTrimSrf( TrmSrf ):
	 color( Srf, magenta ):
	 awidth( Srf, 0.0001 ):
	 color( TrmSrf, white ):
	 awidth( TrmSrf, 0.01 ):
	 adwidth( TrmSrf, 2 ):
	 return = list( TrmSrf, Srf * tz( -0.001 ) ),

	 color( TrmSrf, white ):
	 awidth( TrmSrf, 0.0001 ):
	 adwidth( TrmSrf, 2 ):
	 return = list( TrmSrf ) );

LayoutHandleTrimmedSrfs = function( TrmSrfs, DumpSrf ): i:
    return = nil():
    for ( i = 1, 1, sizeof( TrmSrfs ),
         snoc( LayoutHandleOneTrimmed( nth( TrmSrfs, i ), DumpSrf ),
	       return ) );

ViewState("LessIso");
ViewState("LessIso");

#############################################################################
#
# Layout (prisa) of a trimmed teapot.
#
# teapot = load( "tteapot" );

Handle = load( "thandle" );
Spout = load( "tspout" );
Body = load( "tbody" );

view_mat3dBody = sc( 0.4 ) * roty( 40 ) * rotx( 20 ) * ty( -0.4 );
BodyPrisa3D = prisa( Body, SampPerCrv, -0.1, ROW,
		     vector( 0, 0.25, 0.0 ), false );
interact( list( view_mat3dBody,
	        LayoutHandleTrimmedSrfs( BodyPrisa3D, FALSE ) ) );

view_mat2dBody = sc( 0.1 ) * ty( -0.8 );
BodyPrisa2D = prisa( Body, SampPerCrv, 0.1, ROW,
		     vector( 0, 0.25, 0.0 ), false );
interact( list( view_mat2dBody,
	        LayoutHandleTrimmedSrfs( BodyPrisa2D, TRUE ) ) );

view_mat3dHandle = sc( 0.7 ) * roty( 40 ) * rotx( 20 ) * tx( 1 ) * ty( -0.5 );
HandlePrisa3D = prisa( Handle, SampPerCrv, -0.1, ROW,
		       vector( 0, 0.25, 0.0 ), false );
interact( list( view_mat3dHandle,
	        LayoutHandleTrimmedSrfs( handlePrisa3D, FALSE ) ) );

view_mat2dHandle = sc( 0.35 ) * ty( -0.7 );
HandlePrisa2D = prisa( Handle, SampPerCrv, 0.1,
		       ROW, vector( 0, 0.25, 0.0 ), false );
interact( list( view_mat2dHandle,
	        LayoutHandleTrimmedSrfs( handlePrisa2D, TRUE ) ) );


view_mat3dSpout = sc( 0.7 ) * roty( 40 ) * rotx( 20 ) * tx( -1.2 ) * ty( -1.3 );
SpoutPrisa3D = prisa( Spout, SampPerCrv, -0.1,
		      ROW, vector( 0, 0.25, 0.0 ), false );
interact( list( view_mat3dSpout,
	        LayoutHandleTrimmedSrfs( SpoutPrisa3D, FALSE ) ) );

view_mat2dSpout = sc( 0.35 ) * ty( -0.7 );
SpoutPrisa2D = prisa( Spout, SampPerCrv, 0.1,
		      ROW, vector( 0, 0.25, 0.0 ), false );
interact( list( view_mat2dSpout,
	        LayoutHandleTrimmedSrfs( SpoutPrisa2D, TRUE ) ) );
	        
	        
Main Comments and questions