home *** CD-ROM | disk | FTP | other *** search
- /* Listing 16.13 Shader mapping shader-space coordinates to colors*/
- /*
- * show_xyz(): Color a surface point according to its xyz coordinates
- * within a bounding box.
- */
-
- surface
- RCShowXYZ(
- float xmin = -1,
- ymin = -1,
- zmin = -1,
- xmax = 1,
- ymax = 1,
- zmax = 1 )
- {
- uniform point scale, zero;
- point objP, cubeP;
-
- /* Check for zero scale components. */
- if(xmax==xmin || ymax==ymin || zmax==zmin) {
- printf( "bad bounding box %f %f %f %f %f %f in show_xyz()",
- xmin, xmax, ymin, ymax, zmin, zmax );
- } else {
- scale = point (1/(xmax-xmin), 1/(ymax-ymin), 1/(zmax-zmin));
- zero = point (xmin, ymin, zmin);
-
- objP = transform("shader", P);
- cubeP = (objP - zero) * scale;
- Ci = color (xcomp(cubeP), ycomp(cubeP), zcomp(cubeP));
- }
- }
-