function GrayFullerRaw() {
var sqrt = Math.sqrt,
cos = Math.cos,
sin = Math.sin,
atan2 = Math.atan2,
SQRT_3 = sqrt(3.);
var Z = sqrt(5. + 2. * sqrt(5.)) / sqrt(15.),
el = sqrt(8.) / sqrt(5. + sqrt(5.)),
dve = sqrt(3. + sqrt(5.)) / sqrt(5. + sqrt(5.));
return function(lambda, phi) {
var cosPhi = cos(phi),
s = Z / (cosPhi * cos(lambda)),
x = cosPhi * sin(-lambda) * s,
y = sin(phi) * s,
a1p = atan2(2. * y / SQRT_3 + el / 3. - el / 2., dve),
a2p = atan2(x - y / SQRT_3 + el / 3. - el / 2., dve),
a3p = atan2(el / 3. - x - y / SQRT_3 - el / 2., dve);
return [SQRT_3 * (a2p - a3p), 2. * a1p - a2p - a3p];
};
}