/* Copyrighted Pixar 1989 */
/* From the RenderMan Companion p.370 */
/* Listing 16.27  Displacement shader with catenary droop in y*/

/*
 * droop(): a displacement shader for making a surface "sag" along t.
*/
#define M_E 2.7182818284590452354	/* e */

displacement 
droop ( 
	float	Km = 0.05 )
{
	float droop, yDel;
 
	droop = (t-.5)*2;	/* t in [0,1] goes to droop in [-1,1] */

	yDel = -Km * ( M_E + (1/M_E) - (exp(droop)+exp(-droop)) );
	setycomp(P, ycomp(P) + yDel);
	N = calculatenormal(P);
}

