Min() публичный статический Метод

Returns the lesser of two values.
public static Min ( double value1, double value2 ) : double
value1 double Source value.
value2 double Source value.
Результат double
Пример #1
0
        /// <summary>
        /// Checks whether the current BoundingBox intersects a Ray.
        /// </summary>
        /// <param name="ray">The Ray to check for intersection with.</param><param name="result">[OutAttribute] Distance at which the ray intersects the BoundingBox, or null if there is no intersection.</param>
        public void Intersects(ref Ray ray, out float?result)
        {
            result = new float?();
            float num1 = 0.0f;
            float num2 = float.MaxValue;

            if ((double)Math.Abs(ray.Direction.X) < 9.99999997475243E-07)
            {
                if ((double)ray.Position.X < (double)this.Min.X || (double)ray.Position.X > (double)this.Max.X)
                {
                    return;
                }
            }
            else
            {
                float num3 = 1f / ray.Direction.X;
                float num4 = (this.Min.X - ray.Position.X) * num3;
                float num5 = (this.Max.X - ray.Position.X) * num3;
                if ((double)num4 > (double)num5)
                {
                    float num6 = num4;
                    num4 = num5;
                    num5 = num6;
                }
                num1 = MathHelper.Max(num4, num1);
                num2 = MathHelper.Min(num5, num2);
                if ((double)num1 > (double)num2)
                {
                    return;
                }
            }
            if ((double)Math.Abs(ray.Direction.Y) < 9.99999997475243E-07)
            {
                if ((double)ray.Position.Y < (double)this.Min.Y || (double)ray.Position.Y > (double)this.Max.Y)
                {
                    return;
                }
            }
            else
            {
                float num3 = 1f / ray.Direction.Y;
                float num4 = (this.Min.Y - ray.Position.Y) * num3;
                float num5 = (this.Max.Y - ray.Position.Y) * num3;
                if ((double)num4 > (double)num5)
                {
                    float num6 = num4;
                    num4 = num5;
                    num5 = num6;
                }
                num1 = MathHelper.Max(num4, num1);
                num2 = MathHelper.Min(num5, num2);
                if ((double)num1 > (double)num2)
                {
                    return;
                }
            }
            if ((double)Math.Abs(ray.Direction.Z) < 9.99999997475243E-07)
            {
                if ((double)ray.Position.Z < (double)this.Min.Z || (double)ray.Position.Z > (double)this.Max.Z)
                {
                    return;
                }
            }
            else
            {
                float num3 = 1f / ray.Direction.Z;
                float num4 = (this.Min.Z - ray.Position.Z) * num3;
                float num5 = (this.Max.Z - ray.Position.Z) * num3;
                if ((double)num4 > (double)num5)
                {
                    float num6 = num4;
                    num4 = num5;
                    num5 = num6;
                }
                num1 = MathHelper.Max(num4, num1);
                float num7 = MathHelper.Min(num5, num2);
                if ((double)num1 > (double)num7)
                {
                    return;
                }
            }
            result = new float?(num1);
        }
Пример #2
0
        public float?Intersects(Ray ray)
        {
            float num      = 0f;
            float maxValue = float.MaxValue;

            if (Math.Abs(ray.Direction.X) < 9.99999997475243E-07)
            {
                if ((ray.Position.X < this.Min.X) || (ray.Position.X > this.Max.X))
                {
                    return(null);
                }
            }
            else
            {
                float num3 = 1f / ray.Direction.X;
                float num4 = (this.Min.X - ray.Position.X) * num3;
                float num5 = (this.Max.X - ray.Position.X) * num3;
                if (num4 > num5)
                {
                    float num6 = num4;
                    num4 = num5;
                    num5 = num6;
                }
                num      = MathHelper.Max(num4, num);
                maxValue = MathHelper.Min(num5, maxValue);
                if (num > maxValue)
                {
                    return(null);
                }
            }
            if (Math.Abs(ray.Direction.Y) < 9.99999997475243E-07)
            {
                if ((ray.Position.Y < this.Min.Y) || (ray.Position.Y > this.Max.Y))
                {
                    return(null);
                }
            }
            else
            {
                float num7 = 1f / ray.Direction.Y;
                float num8 = (this.Min.Y - ray.Position.Y) * num7;
                float num9 = (this.Max.Y - ray.Position.Y) * num7;
                if (num8 > num9)
                {
                    float num10 = num8;
                    num8 = num9;
                    num9 = num10;
                }
                num      = MathHelper.Max(num8, num);
                maxValue = MathHelper.Min(num9, maxValue);
                if (num > maxValue)
                {
                    return(null);
                }
            }
            if (Math.Abs(ray.Direction.Z) < 9.99999997475243E-07)
            {
                if ((ray.Position.Z < this.Min.Z) || (ray.Position.Z > this.Max.Z))
                {
                    return(null);
                }
            }
            else
            {
                float num11 = 1f / ray.Direction.Z;
                float num12 = (this.Min.Z - ray.Position.Z) * num11;
                float num13 = (this.Max.Z - ray.Position.Z) * num11;
                if (num12 > num13)
                {
                    float num14 = num12;
                    num12 = num13;
                    num13 = num14;
                }
                num = MathHelper.Max(num12, num);
                float num15 = MathHelper.Min(num13, maxValue);
                if (num > num15)
                {
                    return(null);
                }
            }
            return(new float?(num));
        }
Пример #3
0
        public void Intersects(ref RayD ray, out double?result)
        {
            result = 0;
            double num      = 0.0;
            double maxValue = double.MaxValue;

            if (Math.Abs(ray.Direction.X) < 9.99999997475243E-07)
            {
                if ((ray.Position.X < this.Min.X) || (ray.Position.X > this.Max.X))
                {
                    return;
                }
            }
            else
            {
                double num3 = 1.0 / ray.Direction.X;
                double num4 = (this.Min.X - ray.Position.X) * num3;
                double num5 = (this.Max.X - ray.Position.X) * num3;
                if (num4 > num5)
                {
                    double num6 = num4;
                    num4 = num5;
                    num5 = num6;
                }
                num      = MathHelper.Max(num4, num);
                maxValue = MathHelper.Min(num5, maxValue);
                if (num > maxValue)
                {
                    return;
                }
            }
            if (Math.Abs(ray.Direction.Y) < 9.99999997475243E-07)
            {
                if ((ray.Position.Y < this.Min.Y) || (ray.Position.Y > this.Max.Y))
                {
                    return;
                }
            }
            else
            {
                double num7 = 1.0 / ray.Direction.Y;
                double num8 = (this.Min.Y - ray.Position.Y) * num7;
                double num9 = (this.Max.Y - ray.Position.Y) * num7;
                if (num8 > num9)
                {
                    double num10 = num8;
                    num8 = num9;
                    num9 = num10;
                }
                num      = MathHelper.Max(num8, num);
                maxValue = MathHelper.Min(num9, maxValue);
                if (num > maxValue)
                {
                    return;
                }
            }
            if (Math.Abs(ray.Direction.Z) < 9.99999997475243E-07)
            {
                if ((ray.Position.Z < this.Min.Z) || (ray.Position.Z > this.Max.Z))
                {
                    return;
                }
            }
            else
            {
                double num11 = 1.0 / ray.Direction.Z;
                double num12 = (this.Min.Z - ray.Position.Z) * num11;
                double num13 = (this.Max.Z - ray.Position.Z) * num11;
                if (num12 > num13)
                {
                    double num14 = num12;
                    num12 = num13;
                    num13 = num14;
                }
                num = MathHelper.Max(num12, num);
                double num15 = MathHelper.Min(num13, maxValue);
                if (num > num15)
                {
                    return;
                }
            }
            result = new double?(num);
        }
Пример #4
0
        /// <summary>
        /// Checks whether the current BoundingBox intersects a Ray.
        /// </summary>
        /// <param name="ray">The Ray to check for intersection with.</param>
        public double?Intersects(RayD ray)
        {
            double num1 = 0.0;
            double num2 = double.MaxValue;

            if ((double)Math.Abs(ray.Direction.X) < 9.99999997475243E-07)
            {
                if ((double)ray.Position.X < (double)this.Min.X || (double)ray.Position.X > (double)this.Max.X)
                {
                    return(new double?());
                }
            }
            else
            {
                double num3 = 1 / ray.Direction.X;
                double num4 = (this.Min.X - ray.Position.X) * num3;
                double num5 = (this.Max.X - ray.Position.X) * num3;
                if ((double)num4 > (double)num5)
                {
                    double num6 = num4;
                    num4 = num5;
                    num5 = num6;
                }
                num1 = MathHelper.Max(num4, num1);
                num2 = MathHelper.Min(num5, num2);
                if ((double)num1 > (double)num2)
                {
                    return(new double?());
                }
            }
            if ((double)Math.Abs(ray.Direction.Y) < 9.99999997475243E-07)
            {
                if ((double)ray.Position.Y < (double)this.Min.Y || (double)ray.Position.Y > (double)this.Max.Y)
                {
                    return(new double?());
                }
            }
            else
            {
                double num3 = 1 / ray.Direction.Y;
                double num4 = (this.Min.Y - ray.Position.Y) * num3;
                double num5 = (this.Max.Y - ray.Position.Y) * num3;
                if ((double)num4 > (double)num5)
                {
                    double num6 = num4;
                    num4 = num5;
                    num5 = num6;
                }
                num1 = MathHelper.Max(num4, num1);
                num2 = MathHelper.Min(num5, num2);
                if ((double)num1 > (double)num2)
                {
                    return(new double?());
                }
            }
            if ((double)Math.Abs(ray.Direction.Z) < 9.99999997475243E-07)
            {
                if ((double)ray.Position.Z < (double)this.Min.Z || (double)ray.Position.Z > (double)this.Max.Z)
                {
                    return(new double?());
                }
            }
            else
            {
                double num3 = 1 / ray.Direction.Z;
                double num4 = (this.Min.Z - ray.Position.Z) * num3;
                double num5 = (this.Max.Z - ray.Position.Z) * num3;
                if ((double)num4 > (double)num5)
                {
                    double num6 = num4;
                    num4 = num5;
                    num5 = num6;
                }
                num1 = MathHelper.Max(num4, num1);
                double num7 = MathHelper.Min(num5, num2);
                if ((double)num1 > (double)num7)
                {
                    return(new double?());
                }
            }
            return(new double?(num1));
        }