# # Skeleton aid computation - equadistant points from 3 planar varieties. # # Gershon Elber, September 99 # ri = iritstate( "RandomInit", 1964 ); # Seed-initiate the randomizer, free( ri ); Delay = 300; Skel2DColor = procedure( Prim1, Prim2, Prim3, Eps, FName ): i: E: EquaPt: Prms1: Prms2: Prms3: EquaPt = Skel2dInt( Prim1, Prim2, Prim3, 100, Eps, 150 ): color( EquaPt, white ): Prms1 = list( Prim1 ): Prms2 = list( Prim2 ): Prms3 = list( Prim3 ): for ( i = 1, 1, sizeof( EquaPt ), E = nth( EquaPt, i ): snoc( GetAttr( E, "Prim1Pos" ), Prms1 ): snoc( coerce( GetAttr( E, "Prim1Pos" ), E3 ) + coerce( E, E3 ), Prms1 ): snoc( GetAttr( E, "Prim2Pos" ), Prms2 ): snoc( coerce( GetAttr( E, "Prim2Pos" ), E3 ) + coerce( E, E3 ), Prms2 ): snoc( GetAttr( E, "Prim3Pos" ), Prms3 ): snoc( coerce( GetAttr( E, "Prim3Pos" ), E3 ) + coerce( E, E3 ), Prms3 ) ): color( Prms1, cyan ): color( Prms2, green ): color( Prms3, yellow ): if ( sizeof( FName ) > 0, save( FName, list( Prms1, Prms2, Prms3, EquaPt ) ) ): view( list( Prms1, Prms2, Prms3, EquaPt ), 1 ); save_mat = view_mat; view_mat = sc( 0.8 ); viewobj( view_mat ); ############################################################################# for ( i = 0, 1, 20, Pt1 = point( random( -0.5, 0.5 ), random( -0.5, 0.5 ), 0.0 ): Pt2 = point( random( -0.5, 0.5 ), random( -0.5, 0.5 ), 0.0 ): Pt3 = point( random( -0.5, 0.5 ), random( -0.5, 0.5 ), 0.0 ): Skel2DColor( Pt1, Pt2, Pt3, 0.01, "" ): miliSleep( Delay ) ); Skel2DColor( Pt1, Pt2, Pt3, 0.01, "skel2d1" ); pause(); ############################################################################# for ( i = 0, 1, 20, Ln1 = ctlPt( E2, random( -1, 1 ), random( -1, 1 ) ) + ctlPt( E2, random( -1, 1 ), random( -1, 1 ) ): Ln2 = ctlPt( E2, random( -1, 1 ), random( -1, 1 ) ) + ctlPt( E2, random( -1, 1 ), random( -1, 1 ) ): Ln3 = ctlPt( E2, random( -1, 1 ), random( -1, 1 ) ) + ctlPt( E2, random( -1, 1 ), random( -1, 1 ) ): Skel2DColor( Ln1, Ln2, Ln3, 0.01, "" ): miliSleep( Delay ) ); Skel2DColor( Ln1, Ln2, Ln3, 0.01, "skel2d2" ); pause(); ############################################################################# for ( i = 0, 1, 20, Pt1 = ctlPt( E2, random( -1, 1 ), random( -1, 1 ) ): Ln2 = ctlPt( E2, random( -1, 1 ), random( -1, 1 ) ) + ctlPt( E2, random( -1, 1 ), random( -1, 1 ) ): Ln3 = ctlPt( E2, random( -1, 1 ), random( -1, 1 ) ) + ctlPt( E2, random( -1, 1 ), random( -1, 1 ) ): Skel2DColor( Pt1, Ln2, Ln3, 0.01, "" ): miliSleep( Delay ) ); Skel2DColor( Pt1, Ln2, Ln3, 0.01, "skel2d3" ); pause(); ############################################################################# for ( i = 0, 1, 20, Pt1 = ctlPt( E2, random( -1, 1 ), random( -1, 1 ) ): Pt2 = ctlPt( E2, random( -1, 1 ), random( -1, 1 ) ): Ln3 = ctlPt( E2, random( -1, 1 ), random( -1, 1 ) ) + ctlPt( E2, random( -1, 1 ), random( -1, 1 ) ): Skel2DColor( Pt1, Pt2, Ln3, 0.01, "" ): miliSleep( Delay ) ); Skel2DColor( Pt1, Pt2, Ln3, 0.01, "skel2d4" ); pause(); ############################################################################# Crv3 = cbspline( 3, list( ctlpt( E2, -1, 0 ), ctlpt( E2, -0.3, 0.5 ), ctlpt( E2, 0.6, -1.9 ), ctlpt( E2, 0.6, 1 ) ), list( KV_OPEN ) ): for ( i = 0, 1, 20, Pt1 = point( random( -0.5, 0.5 ), random( -0.5, 0.5 ), 0.0 ): Pt2 = point( random( -0.5, 0.5 ), random( -0.5, 0.5 ), 0.0 ): Skel2DColor( Pt1, Pt2, Crv3, 0.001, "" ): miliSleep( Delay ) ); Skel2DColor( Pt1, Pt2, Crv3, 0.001, "skel2d5" ); pause(); ############################################################################# Ln1 = ctlPt( E2, -1, -1 ) + ctlPt( E2, 1, -1 ); Ln2 = Ln1 * rz( 120 ) * tx( -0.5 ) * ty( -0.5 ); Crv3 = cbspline( 3, list( ctlpt( E2, -0.5, 0.0 ), ctlpt( E2, 0.4, -1.0 ), ctlpt( E2, 0.6, 0.50 ), ctlpt( E2, 0.6, -1.0 ) ), list( KV_OPEN ) ) * tx( -0.4 ) * ty( 0.1 ); Skel2DColor( Ln1, Ln2, Crv3, 1e-6, "skel2d6" ); pause(); ############################################################################# Pt1 = point( 0.1, 0.0, 0 ); Crv2 = cbezier( list( ctlpt( E2, -1, 0 ), ctlpt( E2, -0.3, -0.5 ), ctlpt( E2, 0.6, 1 ) ) ); Crv3 = cbezier( list( ctlpt( E2, -0.5, -1 ), ctlpt( E2, 0.4, 0 ), ctlpt( E2, 0.6, -1 ) ) ); Skel2DColor( Pt1, Crv2, Crv3, 0.001, "skel2d7" ); pause(); ############################################################################# Ln1 = ctlPt( E2, 1.1, -1 ) + ctlPt( E2, 0.9, 1 ); Crv2 = cbezier( list( ctlpt( E2, -0.8, -0.7 ), ctlpt( E2, -0.3, -0.5 ), ctlpt( E2, 0.3, 1 ), ctlpt( E2, 0.6, 1 ) ) ); Crv3 = cbezier( list( ctlpt( E2, 0.5, -1 ), ctlpt( E2, -1.5, -0.9 ), ctlpt( E2, 0.9, 1.5 ), ctlpt( E2, 0.6, -1 ) ) ); Skel2DColor( Ln1, Crv2, Crv3, 1e-6, "skel2d8" ); pause(); ############################################################################# Crv1 = pcircle( vector( -0.5, 0.7, 0.0 ), 0.3 ); Crv2 = pcircle( vector( -0.4, -0.6, 0.0 ), 0.5 ); Crv3 = pcircle( vector( 0.3, 0.2, 0.0 ), 0.4 ); Skel2DColor( Crv1, Crv2, Crv3, 1e-6, "skel2d9" ); pause(); ############################################################################# Crv1 = pcircle( vector( -0.5, 0.7, 0.0 ), 0.3 ) * sx( 0.5 ); Crv2 = pcircle( vector( -0.4, -0.6, 0.0 ), 0.5 ) * sy( 0.8 ); Crv3 = pcircle( vector( 0.3, 0.2, 0.0 ), 0.4 ); Skel2DColor( Crv1, Crv2, Crv3, 1e-6, "skel2d10" ); pause(); ############################################################################# view_mat = save_mat; free( Pt1 ); free( Pt2 ); free( Pt3 ); free( Ln1 ); free( Ln2 ); free( Ln3 ); free( Crv1 ); free( Crv2 ); free( Crv3 ); free( i ); free( Delay );