146 {
147 float num = sphere.Center.X -
Position.X;
148 float num2 = sphere.Center.Y -
Position.Y;
149 float num3 = sphere.Center.Z -
Position.Z;
150 float num4 = num * num + num2 * num2 + num3 * num3;
151 float num5 = sphere.Radius * sphere.Radius;
152 if (num4 <= num5)
153 {
154 result = 0f;
155 return;
156 }
157 result = null;
158 float num6 = num * Direction.X + num2 * Direction.Y + num3 *
Direction.
Z;
159 if (!(num6 < 0f))
160 {
161 float num7 = num4 - num6 * num6;
162 if (!(num7 > num5))
163 {
164 float num8 = (float)
Math.
Sqrt(num5 - num7);
165 result = num6 - num8;
166 }
167 }
168 }
static double Sqrt(double d)