# # Some simple tests for blossom evaluations over Beziers and Bsplines. # # Gershon Elber, February 1999 # EchoSrc = iritState( "EchoSource", false ); DumpLvl = iritState( "DumpLevel", 256 + 1 ); PrintTest = procedure( Title, CtlString, ResList ): printf( CtlString, list( Title ) + ResList ); ############################################################################# c1 = cbezier( list( ctlpt( E2, 1.7, 0.0 ), ctlpt( E2, 0.7, 0.7 ), ctlpt( E2, 1.7, 0.3 ), ctlpt( E2, 1.5, 0.8 ), ctlpt( E2, 1.6, 1.0 ) ) ); PrintTest( "Bezier test - ", "\\n%40s %d %d %d %d %d, %d %d %d %d, %d %d %d\\n", list( blossom( c1, list( 0, 0, 0, 0 ) ) == coord( c1, 0 ), blossom( c1, list( 0, 0, 0, 1 ) ) == coord( c1, 1 ), blossom( c1, list( 0, 0, 1, 1 ) ) == coord( c1, 2 ), blossom( c1, list( 0, 1, 1, 1 ) ) == coord( c1, 3 ), blossom( c1, list( 1, 1, 1, 1 ) ) == coord( c1, 4 ), blossom( c1, list( 0, 0, 1, 1 ) ) == blossom( c1, list( 1, 0, 0, 1 ) ), blossom( c1, list( 0, 0, 1, 1 ) ) == blossom( c1, list( 0, 1, 0, 1 ) ), blossom( c1, list( 0, 0, 1, 1 ) ) == blossom( c1, list( 1, 0, 1, 0 ) ), blossom( c1, list( 0, 0, 1, 1 ) ) == blossom( c1, list( 1, 1, 0, 0 ) ), blossom( c1, list( 0.5, 0.5, 0.5, 0.5 ) ) == ceval(c1, 0.5), blossom( c1, list( 0.1, 0.1, 0.1, 0.1 ) ) == ceval(c1, 0.1), blossom( c1, list( 0.7, 0.7, 0.7, 0.7 ) ) == ceval(c1, 0.7) ) ); ############################################################################# c1 = cbspline( 5, list( ctlpt( E2, 1.7, 0.0 ), ctlpt( E2, 0.7, 0.7 ), ctlpt( E2, 1.7, 0.3 ), ctlpt( E2, 1.5, 0.8 ), ctlpt( E2, 1.6, 1.0 ) ), list( KV_OPEN ) ); PrintTest( "Bspline open uniform 1 test - ", "%40s %d %d %d %d %d, %d %d %d %d, %d %d %d\\n", list( blossom( c1, list( 0, 0, 0, 0 ) ) == coord( c1, 0 ), blossom( c1, list( 0, 0, 0, 1 ) ) == coord( c1, 1 ), blossom( c1, list( 0, 0, 1, 1 ) ) == coord( c1, 2 ), blossom( c1, list( 0, 1, 1, 1 ) ) == coord( c1, 3 ), blossom( c1, list( 1, 1, 1, 1 ) ) == coord( c1, 4 ), blossom( c1, list( 0, 0, 1, 1 ) ) == blossom( c1, list( 1, 0, 0, 1 ) ), blossom( c1, list( 0, 0, 1, 1 ) ) == blossom( c1, list( 0, 1, 0, 1 ) ), blossom( c1, list( 0, 0, 1, 1 ) ) == blossom( c1, list( 1, 0, 1, 0 ) ), blossom( c1, list( 0, 0, 1, 1 ) ) == blossom( c1, list( 1, 1, 0, 0 ) ), blossom( c1, list( 0.5, 0.5, 0.5, 0.5 ) ) == ceval( c1, 0.5 ), blossom( c1, list( 0.1, 0.1, 0.1, 0.1 ) ) == ceval( c1, 0.1 ), blossom( c1, list( 0.7, 0.7, 0.7, 0.7 ) ) == ceval( c1, 0.7 ) ) ); ############################################################################# c1 = cbspline( 4, list( ctlpt( E2, 1.0, 0.1 ), ctlpt( E2, 0.0, 0.7 ), ctlpt( E2, 4.0, 0.5 ), ctlpt( E2, 1.8, 0.3 ), ctlpt( E2, 1.3, 0.2 ), ctlpt( E2, 1.5, 0.8 ), ctlpt( E2, 1.6, 1.0 ) ), list( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ) ); PrintTest( "Bspline float uniform test - ", "%40s %d %d %d %d %d %d %d, %d %d %d, %d %d %d %d\\n", list( blossom( c1, list( 1, 2, 3 ) ) == coord( c1, 0 ), blossom( c1, list( 2, 3, 4 ) ) == coord( c1, 1 ), blossom( c1, list( 3, 4, 5 ) ) == coord( c1, 2 ), blossom( c1, list( 4, 5, 6 ) ) == coord( c1, 3 ), blossom( c1, list( 5, 6, 7 ) ) == coord( c1, 4 ), blossom( c1, list( 6, 7, 8 ) ) == coord( c1, 5 ), blossom( c1, list( 7, 8, 9 ) ) == coord( c1, 6 ), blossom( c1, list( 1, 2, 3 ) ) == blossom( c1, list( 1, 3, 2 ) ), blossom( c1, list( 4, 2, 3 ) ) == blossom( c1, list( 2, 4, 3 ) ), blossom( c1, list( 6, 8, 7 ) ) == blossom( c1, list( 8, 6, 7 ) ), blossom( c1, list( 3.5, 3.5, 3.5 ) ) == ceval( c1, 3.5 ), blossom( c1, list( 4.1, 4.1, 4.1 ) ) == ceval( c1, 4.1 ), blossom( c1, list( 5.7, 5.7, 5.7 ) ) == ceval( c1, 5.7 ), blossom( c1, list( 6.3, 6.3, 6.3 ) ) == ceval( c1, 6.3 ) ) ); ############################################################################# c1 = cbspline( 4, list( ctlpt( E2, 1.0, 0.1 ), ctlpt( E2, 0.0, 0.7 ), ctlpt( E2, 4.0, 0.5 ), ctlpt( E2, 1.8, 0.3 ), ctlpt( E2, 1.3, 0.2 ), ctlpt( E2, 1.5, 0.8 ), ctlpt( E2, 1.6, 1.0 ) ), list( 0, 1, 2, 3.3, 4.8, 6, 6, 7, 8, 9.5, 10 ) ); PrintTest( "Bspline float nonuniform 1 test - ", "%40s %d %d %d %d %d %d %d, %d %d %d, %d %d %d %d %d\\n", list( blossom( c1, list( 1, 2, 3.3 ) ) == coord( c1, 0 ), blossom( c1, list( 2, 3.3, 4.8 ) ) == coord( c1, 1 ), blossom( c1, list( 3.3, 4.8, 6 ) ) == coord( c1, 2 ), blossom( c1, list( 4.8, 6, 6 ) ) == coord( c1, 3 ), blossom( c1, list( 6, 6, 7 ) ) == coord( c1, 4 ), blossom( c1, list( 6, 7, 8 ) ) == coord( c1, 5 ), blossom( c1, list( 7, 8, 9.5 ) ) == coord( c1, 6 ), blossom( c1, list( 1, 2, 3.3 ) ) == blossom( c1, list( 1, 3.3, 2 ) ), blossom( c1, list( 4.8, 2, 3.3 ) ) == blossom( c1, list( 2, 4.8, 3.3 ) ), blossom( c1, list( 6, 8, 7 ) ) == blossom( c1, list( 8, 6, 7 ) ), blossom( c1, list( 3.5, 3.5, 3.5 ) ) == ceval( c1, 3.5 ), blossom( c1, list( 4.1, 4.1, 4.1 ) ) == ceval( c1, 4.1 ), blossom( c1, list( 5.7, 5.7, 5.7 ) ) == ceval( c1, 5.7 ), blossom( c1, list( 6, 6, 6 ) ) == ceval( c1, 6 ), blossom( c1, list( 6.3, 6.3, 6.3 ) ) == ceval( c1, 6.3 ) ) ); ############################################################################# c1 = cbspline( 4, list( ctlpt( E2, 1.0, 0.1 ), ctlpt( E2, 0.0, 0.7 ), ctlpt( E2, 4.0, 0.5 ), ctlpt( E2, 1.8, 0.3 ), ctlpt( E2, 1.3, 0.2 ), ctlpt( E2, 1.5, 0.8 ), ctlpt( E2, 1.6, 1.0 ) ), list( 0, 1, 2, 3.3, 6, 6, 6, 7, 8, 9.5, 10 ) ); PrintTest( "Bspline float nonuniform 2 test - ", "%40s %d %d %d %d %d %d %d, %d %d %d, %d %d %d %d %d\\n", list( blossom( c1, list( 1, 2, 3.3 ) ) == coord( c1, 0 ), blossom( c1, list( 2, 3.3, 6 ) ) == coord( c1, 1 ), blossom( c1, list( 3.3, 6, 6 ) ) == coord( c1, 2 ), blossom( c1, list( 6, 6, 6 ) ) == coord( c1, 3 ), blossom( c1, list( 6, 6, 7 ) ) == coord( c1, 4 ), blossom( c1, list( 6, 7, 8 ) ) == coord( c1, 5 ), blossom( c1, list( 7, 8, 9.5 ) ) == coord( c1, 6 ), blossom( c1, list( 1, 2, 3.3 ) ) == blossom( c1, list( 1, 3.3, 2 ) ), blossom( c1, list( 6, 2, 3.3 ) ) == blossom( c1, list( 2, 6, 3.3 ) ), blossom( c1, list( 6, 8, 7 ) ) == blossom( c1, list( 8, 6, 7 ) ), blossom( c1, list( 3.5, 3.5, 3.5 ) ) == ceval( c1, 3.5 ), blossom( c1, list( 4.1, 4.1, 4.1 ) ) == ceval( c1, 4.1 ), blossom( c1, list( 5.7, 5.7, 5.7 ) ) == ceval( c1, 5.7 ), blossom( c1, list( 6, 6, 6 ) ) == ceval( c1, 6 ), blossom( c1, list( 6.3, 6.3, 6.3 ) ) == ceval( c1, 6.3 ) ) ); ############################################################################# c1 = cbspline( 3, list( ctlpt( E2, 1.0, 0.1 ), ctlpt( E2, 0.0, 0.7 ), ctlpt( E2, 4.0, 0.5 ), ctlpt( E2, 1.8, 0.3 ), ctlpt( E2, 1.3, 0.2 ), ctlpt( E2, 1.5, 0.8 ), ctlpt( E2, 1.6, 1.0 ) ), list( 0, 0, 0, 1, 2, 3, 4, 5, 5, 5 ) ); PrintTest( "Bspline open uniform 2 test - ", "%40s %d %d %d %d %d %d %d, %d %d %d %d, %d %d %d %d %d %d\\n", list( blossom( c1, list( 0, 0 ) ) == coord( c1, 0 ), blossom( c1, list( 0, 1 ) ) == coord( c1, 1 ), blossom( c1, list( 1, 2 ) ) == coord( c1, 2 ), blossom( c1, list( 2, 3 ) ) == coord( c1, 3 ), blossom( c1, list( 3, 4 ) ) == coord( c1, 4 ), blossom( c1, list( 4, 5 ) ) == coord( c1, 5 ), blossom( c1, list( 5, 5 ) ) == coord( c1, 6 ), blossom( c1, list( 0, 1 ) ) == blossom( c1, list( 1, 0 ) ), blossom( c1, list( 1, 2 ) ) == blossom( c1, list( 2, 1 ) ), blossom( c1, list( 2, 3 ) ) == blossom( c1, list( 3, 2 ) ), blossom( c1, list( 4, 5 ) ) == blossom( c1, list( 5, 4 ) ), blossom( c1, list( 0.5, 0.5 ) ) == ceval( c1, 0.5 ), blossom( c1, list( 0.1, 0.1 ) ) == ceval( c1, 0.1 ), blossom( c1, list( 1.7, 1.7 ) ) == ceval( c1, 1.7 ), blossom( c1, list( 2.3, 2.3 ) ) == ceval( c1, 2.3 ), blossom( c1, list( 3.2, 3.2 ) ) == ceval( c1, 3.2 ), blossom( c1, list( 4.7, 4.7 ) ) == ceval( c1, 4.7 ) ) ); ############################################################################# free( c1 ); DumpLvl = iritState( "DumpLevel", DumpLvl ); free( DumpLvl ); EchoSrc = iritState("EchoSource", EchoSrc ); free( EchoSrc );