function reuleauxRaw() {
function intersection(r) {
var r2 = r * r,
r4 = r2 * r2;
return atan2(sqrt(r2 - r4 / 4), r2 / 2) - pi / 6;
}
function forward(lambda, phi) {
var r = 1 - phi / halfPi,
angle = intersection(r) * (lambda / (pi / 4)),
x = r * sin(angle),
y = -r * cos(angle);
return [x, y];
}
forward.invert = function(x, y) {
var r = sqrt(x * x + y * y),
angle = atan2(x, -y),
lambda = (angle / intersection(r)) * (pi / 4);
return [lambda, halfPi * (1 - r)];
};
return forward;
}