// Token: 0x06000435 RID: 1077 RVA: 0x00013128 File Offset: 0x00011328 public static ICollection <Vector2> IntersectionPointsWith(this Triangle2 triangle, Triangle2 other) { IntersectionTriangle2Triangle2 intersectionTriangle2Triangle = new IntersectionTriangle2Triangle2(triangle, other); intersectionTriangle2Triangle.Find(); List <Vector2> list = new List <Vector2>(); for (int i = 0; i < intersectionTriangle2Triangle.Quantity; i++) { list.Add(intersectionTriangle2Triangle.Points[i]); } return(list); }
// Token: 0x0600046A RID: 1130 RVA: 0x00014E70 File Offset: 0x00013070 private bool GetCoplanarIntersection(Plane3 plane, Triangle3 tri0, Triangle3 tri1) { int num = 0; double num2 = Math.Abs(plane.Normal.X); double num3 = Math.Abs(plane.Normal.Y); if (num3 > num2) { num = 1; num2 = num3; } num3 = Math.Abs(plane.Normal.Z); if (num3 > num2) { num = 2; } Triangle2 triangle; Triangle2 triangle2; if (num == 0) { triangle = new Triangle2(new Vector2(tri0.V0.Y, tri0.V0.Z), new Vector2(tri0.V1.Y, tri0.V1.Z), new Vector2(tri0.V2.Y, tri0.V2.Z)); triangle2 = new Triangle2(new Vector2(tri1.V0.Y, tri1.V0.Z), new Vector2(tri1.V1.Y, tri1.V1.Z), new Vector2(tri1.V2.Y, tri1.V2.Z)); } else if (num == 1) { triangle = new Triangle2(new Vector2(tri0.V0.X, tri0.V0.Z), new Vector2(tri0.V1.X, tri0.V1.Z), new Vector2(tri0.V2.X, tri0.V2.Z)); triangle2 = new Triangle2(new Vector2(tri1.V0.X, tri1.V0.Z), new Vector2(tri1.V1.X, tri1.V1.Z), new Vector2(tri1.V2.X, tri1.V2.Z)); } else { triangle = new Triangle2(new Vector2(tri0.V0.X, tri0.V0.Y), new Vector2(tri0.V1.X, tri0.V1.Y), new Vector2(tri0.V2.X, tri0.V2.Y)); triangle2 = new Triangle2(new Vector2(tri1.V0.X, tri1.V0.Y), new Vector2(tri1.V1.X, tri1.V1.Y), new Vector2(tri1.V2.X, tri1.V2.Y)); } Vector2 vector = triangle.V1 - triangle.V0; Vector2 vector2 = triangle.V2 - triangle.V0; if (vector.DotPerpendicular(vector2) < 0.0) { triangle = new Triangle2(triangle.V0, triangle.V2, triangle.V1); } vector = triangle2.V1 - triangle2.V0; vector2 = triangle2.V2 - triangle2.V0; if (vector.DotPerpendicular(vector2) < 0.0) { triangle2 = new Triangle2(triangle2.V0, triangle2.V2, triangle2.V1); } IntersectionTriangle2Triangle2 intersectionTriangle2Triangle = new IntersectionTriangle2Triangle2(triangle, triangle2); if (!intersectionTriangle2Triangle.Find()) { return(false); } this.Quantity = intersectionTriangle2Triangle.Quantity; if (num == 0) { double num4 = 1.0 / plane.Normal.X; for (int i = 0; i < this.Quantity; i++) { this.Points[i].Y = intersectionTriangle2Triangle.Points[i].X; this.Points[i].Z = intersectionTriangle2Triangle.Points[i].Y; this.Points[i].X = num4 * (plane.Constant - plane.Normal.Y * this.Points[i].Y - plane.Normal.Z * this.Points[i].Z); } } else if (num == 1) { double num5 = 1.0 / plane.Normal.Y; for (int i = 0; i < this.Quantity; i++) { this.Points[i].X = intersectionTriangle2Triangle.Points[i].X; this.Points[i].Z = intersectionTriangle2Triangle.Points[i].Y; this.Points[i].Y = num5 * (plane.Constant - plane.Normal.X * this.Points[i].X - plane.Normal.Z * this.Points[i].Z); } } else { double num6 = 1.0 / plane.Normal.Z; for (int i = 0; i < this.Quantity; i++) { this.Points[i].X = intersectionTriangle2Triangle.Points[i].X; this.Points[i].Y = intersectionTriangle2Triangle.Points[i].Y; this.Points[i].Z = num6 * (plane.Constant - plane.Normal.X * this.Points[i].X - plane.Normal.Y * this.Points[i].Y); } } return(true); }