Nie wiem, gdzie jest błąd w obliczeniach, ale na IRCu mi podpowiedzieli na kanale ##math na freenode.
<?php
function lnu($s, $r) {
if($s >= $r) {
return ((3/4)*M_PI*(pow($r, 2)));
}
$b_48 = ($s*sqrt(2)/2);
$b_297 = $r-$s;
$c = sqrt(pow($b_297, 2)-pow($b_48, 2));
$d = $c - $b_48;
$e = sqrt(pow($d, 2)/2);
$f = 90-(rad2deg(atan($e/($s+$e)))); // sin??
$hh = $e + $s;
return ((3/4)*M_PI*(pow($r, 2))) + (2*(($f)/360)*M_PI*(pow($b_297, 2))) + ((1/2)*$s*sqrt(2)*$c) - ((pow($s, 2)/2));
}
echo lnu(68, 365);
echo "<br /><br />";
echo lnu(133, 340);
echo "<br /><br />";
echo lnu(137, 58);
?>