Exemplo n.º 1
0
        // Token: 0x060001F6 RID: 502 RVA: 0x00008F28 File Offset: 0x00007128
        public DistanceTriangle3Triangle3(Triangle3 triangle0, Triangle3 triangle1)
        {
            this = default(DistanceTriangle3Triangle3);
            double num   = double.MaxValue;
            int    index = 2;
            int    i     = 0;

            while (i < 3)
            {
                Segment3 segment = new Segment3(triangle0[index], triangle0[i]);
                DistanceSegment3Triangle3 distanceSegment3Triangle = new DistanceSegment3Triangle3(segment, triangle1);
                double squaredDistance = distanceSegment3Triangle.SquaredDistance;
                if (squaredDistance < num)
                {
                    this.ClosestPoint0 = distanceSegment3Triangle.ClosestPointOnSegment;
                    this.ClosestPoint1 = distanceSegment3Triangle.ClosestPointOnTriangle;
                    num = squaredDistance;
                    if (num <= 1E-08)
                    {
                        this.SquaredDistance = 0.0;
                        return;
                    }
                }
                index = i++;
            }
            int index2 = 2;
            int j      = 0;

            while (j < 3)
            {
                Segment3 segment2 = new Segment3(triangle1[index2], triangle1[j]);
                DistanceSegment3Triangle3 distanceSegment3Triangle2 = new DistanceSegment3Triangle3(segment2, triangle0);
                double squaredDistance = distanceSegment3Triangle2.SquaredDistance;
                if (squaredDistance < num)
                {
                    this.ClosestPoint0 = distanceSegment3Triangle2.ClosestPointOnTriangle;
                    this.ClosestPoint1 = distanceSegment3Triangle2.ClosestPointOnSegment;
                    num = squaredDistance;
                    if (num <= 1E-08)
                    {
                        this.SquaredDistance = 0.0;
                        return;
                    }
                }
                index2 = j++;
            }
            this.SquaredDistance = num;
        }
        // Token: 0x060001EE RID: 494 RVA: 0x00008D90 File Offset: 0x00006F90
        public DistanceTriangle3Rectangle3(Triangle3 triangle, Rectangle3 rectangle)
        {
            this = default(DistanceTriangle3Rectangle3);
            double num = double.MaxValue;
            int    i   = 2;
            int    j   = 0;

            while (j < 3)
            {
                Segment3 segment = new Segment3(triangle[i], triangle[j]);
                DistanceSegment3Rectangle3 distanceSegment3Rectangle = new DistanceSegment3Rectangle3(segment, rectangle);
                if (distanceSegment3Rectangle.SquaredDistance < num)
                {
                    this.ClosestPointOnTriangle  = distanceSegment3Rectangle.ClosestPointOnSegment;
                    this.ClosestPointOnRectangle = distanceSegment3Rectangle.ClosestPointOnRectangle;
                    num = distanceSegment3Rectangle.SquaredDistance;
                }
                i = j++;
            }
            for (j = 0; j < 2; j++)
            {
                for (i = -1; i <= 1; i += 2)
                {
                    double      num2      = (j == 0) ? rectangle.Extent1 : rectangle.Extent0;
                    UnitVector3 vector    = (j == 0) ? rectangle.Axis1 : rectangle.Axis0;
                    Vector3     origin    = rectangle.Center + (double)i * num2 * vector;
                    UnitVector3 direction = (j == 0) ? rectangle.Axis0 : rectangle.Axis1;
                    double      extent    = (j == 0) ? rectangle.Extent0 : rectangle.Extent1;
                    Segment3    segment2  = new Segment3(origin, direction, extent);
                    DistanceSegment3Triangle3 distanceSegment3Triangle = new DistanceSegment3Triangle3(segment2, triangle);
                    if (distanceSegment3Triangle.SquaredDistance < num)
                    {
                        this.ClosestPointOnTriangle  = distanceSegment3Triangle.ClosestPointOnTriangle;
                        this.ClosestPointOnRectangle = distanceSegment3Triangle.ClosestPointOnSegment;
                        num = distanceSegment3Triangle.SquaredDistance;
                    }
                }
            }
            this.SquaredDistance = num;
        }
Exemplo n.º 3
0
        // Token: 0x060001EA RID: 490 RVA: 0x00008D04 File Offset: 0x00006F04
        public static Vector3 ClosestPointTo(this Triangle3 triangle3, Segment3 segment3)
        {
            DistanceSegment3Triangle3 distanceSegment3Triangle = new DistanceSegment3Triangle3(segment3, triangle3);

            return(distanceSegment3Triangle.ClosestPointOnTriangle);
        }
Exemplo n.º 4
0
        // Token: 0x060001EB RID: 491 RVA: 0x00008D24 File Offset: 0x00006F24
        public static Segment3 ShortestSegmentTo(this Triangle3 triangle3, Segment3 segment3)
        {
            DistanceSegment3Triangle3 distanceSegment3Triangle = new DistanceSegment3Triangle3(segment3, triangle3);

            return(new Segment3(distanceSegment3Triangle.ClosestPointOnTriangle, distanceSegment3Triangle.ClosestPointOnSegment));
        }
Exemplo n.º 5
0
        // Token: 0x06000197 RID: 407 RVA: 0x00007860 File Offset: 0x00005A60
        public static double DistanceTo(this Segment3 segment3, Triangle3 triangle3)
        {
            DistanceSegment3Triangle3 distanceSegment3Triangle = new DistanceSegment3Triangle3(segment3, triangle3);

            return(distanceSegment3Triangle.Distance);
        }