// 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; }
// 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); }
// 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)); }
// 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); }