#
# Somewhat exotic cubes.
#
#				Gershon Elber, October 1995
#

MakeNormal = function(V):
    return = coord(V, 0) + "," + coord(V, 1) + "," + coord(V, 2);

MakeRGB = function(V):
    return = (coord(V, 0) + 1.0) * 127 + ","
           + (coord(V, 1) + 1.0) * 127 + ","
           + (coord(V, 2) + 1.0) * 127;

V1 = vector( -1, -1, -1 );
V2 = vector( -1, -1,  1 );
V3 = vector( -1,  1, -1 );
V4 = vector( -1,  1,  1 );
V5 = vector(  1, -1, -1 );
V6 = vector(  1, -1,  1 );
V7 = vector(  1,  1, -1 );
V8 = vector(  1,  1,  1 );

F1 = poly( list( V1, V2, V4, V3 ), false );
F2 = poly( list( V5, V6, V8, V7 ), false );
F3 = poly( list( V1, V2, V6, V5 ), false );
F4 = poly( list( V2, V4, V8, V6 ), false );
F5 = poly( list( V4, V3, V7, V8 ), false );
F6 = poly( list( V3, V1, V5, V7 ), false );
pattrib( F6, 0, "Authored by", "IRIT" );

cube1 = mergePoly( list( F1, F2, F3, F4, F5, F6 ) );
save( "cube1", cube1 );
interact( cube1 );

attrib( V1, "normal", MakeNormal( V1 ) );
attrib( V2, "normal", MakeNormal( V2 ) );
attrib( V3, "normal", MakeNormal( V3 ) );
attrib( V4, "normal", MakeNormal( V4 ) );
attrib( V5, "normal", MakeNormal( V5 ) );
attrib( V6, "normal", MakeNormal( V6 ) );
attrib( V7, "normal", MakeNormal( V7 ) );
attrib( V8, "normal", MakeNormal( V8 ) );

F1 = poly( list( V1, V2, V4, V3 ), false );
F2 = poly( list( V5, V6, V8, V7 ), false );
F3 = poly( list( V1, V2, V6, V5 ), false );
F4 = poly( list( V2, V4, V8, V6 ), false );
F5 = poly( list( V4, V3, V7, V8 ), false );
F6 = poly( list( V3, V1, V5, V7 ), false );
pattrib( F6, 0, "Authored by", "IRIT" );

cube2 = mergePoly( list( F1, F2, F3, F4, F5, F6 ) );
save( "cube2", cube2 );
interact( cube2 );

V1 = vector( -1, -1, -1 );
V2 = vector( -1, -1,  1 );
V3 = vector( -1,  1, -1 );
V4 = vector( -1,  1,  1 );
V5 = vector(  1, -1, -1 );
V6 = vector(  1, -1,  1 );
V7 = vector(  1,  1, -1 );
V8 = vector(  1,  1,  1 );

attrib( V1, "rgb", MakeRGB( V1 ) );
attrib( V2, "rgb", MakeRGB( V2 ) );
attrib( V3, "rgb", MakeRGB( V3 ) );
attrib( V4, "rgb", MakeRGB( V4 ) );
attrib( V5, "rgb", MakeRGB( V5 ) );
attrib( V6, "rgb", MakeRGB( V6 ) );
attrib( V7, "rgb", MakeRGB( V7 ) );
attrib( V8, "rgb", MakeRGB( V8 ) );

F1 = poly( list( V1, V2, V4, V3 ), false );
F2 = poly( list( V5, V6, V8, V7 ), false );
F3 = poly( list( V1, V2, V6, V5 ), false );
F4 = poly( list( V2, V4, V8, V6 ), false );
F5 = poly( list( V4, V3, V7, V8 ), false );
F6 = poly( list( V3, V1, V5, V7 ), false );
pattrib( F6, 0, "Authored by", "IRIT" );

cube3 = mergePoly( list( F1, F2, F3, F4, F5, F6 ) );
attrib( cube3, "PATTRIB_TEST", pattrib( F5, 3, "rgb", nil() ) );

save( "cube3", cube3 );
interact( cube3 );

free(V1);
free(V2);
free(V3);
free(V4);
free(V5);
free(V6);
free(V7);
free(V8);

free(F1);
free(F2);
free(F3);
free(F4);
free(F5);
free(F6);

free(cube1);
free(cube2);
free(cube3);
