Same as System.Math.Acos but if angle is out of range, the result is clamped.