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 ) ) );