home *** CD-ROM | disk | FTP | other *** search
- #
- # Interpolation/least square approximation of curves and surfaces.
- #
- # Gershon Elber, March 1994
- #
- #############################################################################
-
- save_mat = view_mat;
-
- view_mat = scale( vector( 0.6, 0.6, 0.6 ) );
- viewobj( view_mat );
- viewstate("FinrAprx");
-
- #############################################################################
- pl1 = list( point(-0.5,-0.5, 0.0 ),
- point( 0.7, 0.5, 0.1 ),
- point(-0.2,-0.5, 0.2 ),
- point( 0.9, 0.5, 0.3 ),
- point( 0.1,-0.5, 0.4 ) );
-
- c1 = cinterp( pl1, 3, 3, PARAM_UNIFORM );
- interact( list( c1, pl1 ) );
-
- c1 = cinterp( pl1, 3, 4, PARAM_UNIFORM );
- interact( list( c1, pl1 ) );
-
- c1 = cinterp( pl1, 3, 5, PARAM_UNIFORM );
- interact( list( c1, pl1 ) );
-
- c1 = cinterp( pl1, 4, 4, PARAM_UNIFORM );
- interact( list( c1, pl1 ) );
-
- c1 = cinterp( pl1, 4, 0, PARAM_UNIFORM );
- interact( list( c1, pl1 ) );
-
- c1 = cinterp( pl1, 5, 5, PARAM_UNIFORM );
- interact( list( c1, pl1 ) );
-
- #############################################################################
-
- pl2 = nil();
- for ( x = 0, 1, 20,
- snoc(point(x / 10 - 1, sin(x * Pi / 5), 0.0), pl2)
- );
-
- c2 = cinterp( pl2, 3, 5, PARAM_UNIFORM );
- interact( list( c2, pl2 ) );
-
- c2 = cinterp( pl2, 3, 7, PARAM_UNIFORM );
- interact( list( c2, pl2 ) );
-
- c2 = cinterp( pl2, 3, 10, PARAM_UNIFORM );
- interact( list( c2, pl2 ) );
-
- c2 = cinterp( pl2, 4, 5, PARAM_UNIFORM );
- interact( list( c2, pl2 ) );
-
- c2 = cinterp( pl2, 4, 7, PARAM_UNIFORM );
- interact( list( c2, pl2 ) );
-
- c2 = cinterp( pl2, 4, 10, PARAM_UNIFORM );
- interact( list( c2, pl2 ) );
-
- c2 = cinterp( pl2, 10, 10, PARAM_UNIFORM );
- interact( list( c2, pl2 ) );
-
- #############################################################################
-
- view_mat = roty(30) * rotx(50) * scale( vector( 0.5, 0.5, 0.5 ) );
- viewobj(view_mat);
-
- pl3 = nil();
- for ( x = 0, 1, 20,
- snoc(point((x / 10 - 1) * cos(x),
- (x / 10 - 1) * sin(x),
- x / 10 - 1), pl3)
- );
-
- c3 = cinterp( pl3, 3, 5, PARAM_UNIFORM );
- interact( list( c3, pl3 ) );
-
- c3 = cinterp( pl3, 3, 10, PARAM_UNIFORM );
- interact( list( c3, pl3 ) );
-
- c3 = cinterp( pl3, 3, 21, PARAM_UNIFORM );
- interact( list( c3, pl3 ) );
-
- c3 = cinterp( pl3, 5, 5, PARAM_UNIFORM );
- interact( list( c3, pl3 ) );
-
- c3 = cinterp( pl3, 5, 10, PARAM_UNIFORM );
- interact( list( c3, pl3 ) );
-
- c3 = cinterp( pl3, 5, 21, PARAM_UNIFORM );
- interact( list( c3, pl3 ) );
-
- #############################################################################
-
- pl4 = nil();
- for ( x = 0, 1, 100,
- snoc(point(cos(x / 5), sin(x / 5), x / 50 - 1), pl4)
- );
-
- c4 = cinterp( pl4, 3, 5, PARAM_UNIFORM );
- interact( list( c4, pl4 ) );
-
- c4 = cinterp( pl4, 3, 10, PARAM_UNIFORM );
- interact( list( c4, pl4 ) );
-
- c4 = cinterp( pl4, 3, 21, PARAM_UNIFORM );
- interact( list( c4, pl4 ) );
-
- c4 = cinterp( pl4, 5, 5, PARAM_UNIFORM );
- interact( list( c4, pl4 ) );
-
- c4 = cinterp( pl4, 5, 10, PARAM_UNIFORM );
- interact( list( c4, pl4 ) );
-
- c4 = cinterp( pl4, 5, 21, PARAM_UNIFORM );
- interact( list( c4, pl4 ) );
-
- #############################################################################
-
- view_mat = scale( vector( 0.7, 0.7, 0.7 ) );
- viewobj( view_mat );
-
- pl5 = nil();
- for ( x = 0, 1, 4,
- t = (x / 2) - 1:
- snoc(point(t * t * t, t * t * t * t * t, 0.0), pl5)
- );
-
- c5a = cinterp( pl5, 3, 3, PARAM_UNIFORM );
- color(c5a, magenta);
- c5b = cinterp( pl5, 3, 3, PARAM_CHORD );
- color(c5b, red);
- c5c = cinterp( pl5, 3, 3, PARAM_CENTRIP );
- color(c5c, cyan);
- interact( list( c5a, c5b, c5c, pl5 ) );
-
- c5a = cinterp( pl5, 3, 4, PARAM_UNIFORM );
- color(c5a, magenta);
- c5b = cinterp( pl5, 3, 4, PARAM_CHORD );
- color(c5b, red);
- c5c = cinterp( pl5, 3, 4, PARAM_CENTRIP );
- color(c5c, cyan);
- interact( list( c5a, c5b, c5c, pl5 ) );
-
- c5a = cinterp( pl5, 3, 5, PARAM_UNIFORM );
- color(c5a, magenta);
- c5b = cinterp( pl5, 3, 5, PARAM_CHORD );
- color(c5b, red);
- c5c = cinterp( pl5, 3, 5, PARAM_CENTRIP );
- color(c5c, cyan);
- interact( list( c5a, c5b, c5c, pl5 ) );
-
- #############################################################################
-
- view_mat = scale( vector( 0.7, 0.7, 0.7 ) );
- viewobj( view_mat );
-
- cbzr = cbezier( list( ctlpt( E3, -0.5, 0.7, 0.2 ),
- ctlpt( E3, -0.3, -0.8, 1.0 ),
- ctlpt( E3, 0.1, -0.9, -2.0 ),
- ctlpt( E3, 0.3, 0.9, 1.0 ),
- ctlpt( E3, 0.6, 0.1, 0.1 ) ) );
- color( cbzr, green );
-
- pl6 = nil();
- for ( x = 0, 1, 4,
- snoc(ceval(cbzr, x / 4), pl6)
- );
-
- c6a = cinterp( pl6, 3, 3, PARAM_UNIFORM );
- color(c6a, magenta);
- c6b = cinterp( pl6, 3, 3, PARAM_CHORD );
- color(c6b, red);
- c6c = cinterp( pl6, 3, 3, PARAM_CENTRIP );
- color(c6c, cyan);
- interact( list( cbzr, c6a, c6b, c6c, pl6 ) );
-
- c6a = cinterp( pl6, 3, 4, PARAM_UNIFORM );
- color(c6a, magenta);
- c6b = cinterp( pl6, 3, 4, PARAM_CHORD );
- color(c6b, red);
- c6c = cinterp( pl6, 3, 4, PARAM_CENTRIP );
- color(c6c, cyan);
- interact( list( cbzr, c6a, c6b, c6c, pl6 ) );
-
- c6a = cinterp( pl6, 3, 5, PARAM_UNIFORM );
- color(c6a, magenta);
- c6b = cinterp( pl6, 3, 5, PARAM_CHORD );
- color(c6b, red);
- c6c = cinterp( pl6, 3, 5, PARAM_CENTRIP );
- color(c6c, cyan);
- interact( list( cbzr, c6a, c6b, c6c, pl6 ) );
-
- c6a = cinterp( pl6, 5, 5, PARAM_UNIFORM );
- color(c6a, magenta);
- c6b = cinterp( pl6, 5, 5, PARAM_CHORD );
- color(c6b, red);
- c6c = cinterp( pl6, 5, 5, PARAM_CENTRIP );
- color(c6c, cyan);
- interact( list( cbzr, c6a, c6b, c6c, pl6 ) );
-
- #############################################################################
- iritState("EchoSource", false);
- include("gersktch");
- iritState("EchoSource", true);
- color(gershon, red);
-
- gershon_a = cinterp( gershon, 3, 3, PARAM_UNIFORM );
- color(gershon_a, green);
- interact( list( gershon, gershon_a ) );
-
- gershon_b = cinterp( gershon, 3, 6, PARAM_UNIFORM );
- color(gershon_b, green);
- interact( list( gershon, gershon_b ) );
-
- gershon_c = cinterp( gershon, 3, 12, PARAM_UNIFORM );
- color(gershon_c, green);
- interact( list( gershon, gershon_c ) );
-
- gershon_d = cinterp( gershon, 3, 24, PARAM_UNIFORM );
- color(gershon_d, green);
- interact( list( gershon, gershon_d ) );
-
- gershon_e = cinterp( gershon, 3, 48, PARAM_UNIFORM );
- color(gershon_e, green);
- interact( list( gershon, gershon_e ) );
-
- gershon_f = cinterp( gershon, 3, 96, PARAM_UNIFORM );
- color(gershon_f, green);
- interact( list( gershon, gershon_f ) );
-
- #############################################################################
-
- view_mat = rotz(50) * rotx(-60) * scale( vector( 0.2, 0.2, 0.2 ) );
- viewobj(view_mat);
-
- pl = nil();
- pll = nil();
- for ( x = -5, 1, 5,
- pl = nil():
- for ( y = -5, 1, 5,
- snoc(point(x,
- y,
- sin(x * Pi / 2) * cos(y * Pi / 2)),
- pl)
- ):
- snoc(pl, pll) );
-
- s1 = sinterp( pll, 3, 3, 3, 3, PARAM_UNIFORM );
- interact(list(pll, s1));
-
- s1 = sinterp( pll, 3, 3, 0, 0, PARAM_UNIFORM );
- interact(list(pll, s1));
-
- s1 = sinterp( pll, 3, 3, 4, 11, PARAM_UNIFORM );
- interact(list(pll, s1));
-
- s1 = sinterp( pll, 3, 3, 11, 4, PARAM_UNIFORM );
- interact(list(pll, s1));
-
- #############################################################################
-
- view_mat = rotz(50) * rotx(-60) * scale( vector( 0.7, 0.7, 0.7 ) );
- viewobj(view_mat);
-
- pl = nil();
- pll = nil();
- for ( x = -5, 1, 5,
- pl = nil():
- xx = x * Pi / 10:
- for ( y = -5, 1, 5,
- yy = y * Pi / 5:
- snoc(point(cos(xx)*cos(yy),
- cos(xx)*sin(yy),
- sin(xx)),
- pl)
- ):
- snoc(pl, pll) );
-
- s2 = sinterp( pll, 3, 3, 11, 11, PARAM_UNIFORM );
- interact(list(pll, s2));
-
- s2 = sinterp( pll, 3, 3, 6, 6, PARAM_UNIFORM );
- interact(list(pll, s2));
-
- #############################################################################
-
- pl = nil();
- pll = nil();
- for ( x = -10, 1, 10,
- pl = nil():
- xx = x * Pi / 20:
- for ( y = -10, 1, 10,
- yy = y * Pi / 10:
- snoc(point(cos(xx)^3 * cos(yy)^3,
- sin(xx)^3 * cos(yy)^3,
- sin(yy)^3),
- pl)
- ):
- snoc(pl, pll) );
-
- s3 = sinterp( pll, 3, 3, 21, 21, PARAM_UNIFORM );
- interact(list(pll, s3));
-
- s3 = sinterp( pll, 3, 3, 11, 11, PARAM_UNIFORM );
- interact(list(pll, s3));
-
- #############################################################################
-
-
- viewclear();
- view_mat = save_mat;
-