/* * 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))); }