/*
 * playball: Makes a pattern similar to that of a playground ball.
 * 
 */

displacement
playball (
	float Kd = .5,
		Ka = .1,
		tfrequency = 20,
		sfrequency = 20,
		ridgeheight = 0.01;
	color	blackcolor = color (0, 0, 0), whitecolor= color(1, 1, 1))
	
{
	float smod = mod(s*sfrequency, 1),
		tmod = mod(t*tfrequency, 1);

	if (smod <= .5 && tmod <= .5){
		Ci = blackcolor;
		if (mod(smod*20, 2)<.5) {
			P = P + ridgeheight;
		}
	} else if (smod < .5 && tmod > .5) {
		Ci = whitecolor;
		if (mod(tmod*20, 2)<.5) {
			P = P + ridgeheight;
		}
	} else if (smod > .5 && tmod <= .5) {
		Ci = whitecolor;
		if (mod(tmod*20, 2)<.5) {
			P = P + ridgeheight;
		}
	} else {
		Ci = blackcolor;
		if (mod(smod*20, 2)<.5) {
			P = P + ridgeheight;
		}
	}
	
	N = calculatenormal(P);
	Ci = Oi*Ci*(
		Ka*ambient() + 
		Kd*diffuse(faceforward(normalize(N),I)));

}