/// <summary> /// 三个点构造一个平面 /// </summary> public static Face PlaneFrom3Points(Vector3 pointA, Vector3 pointB, Vector3 pointC) { Vector3 vector = pointB - pointA; Vector3 vector2 = pointC - pointA; Vector3 planeNormal = Vector3.Normalize(Vector3.Cross(vector, vector2)); Vector3 vector3 = pointA + vector / 2f; Vector3 vector4 = pointA + vector2 / 2f; Vector3 lineVec = pointC - vector3; Vector3 lineVec2 = pointB - vector4; Math3d.ClosestPointsOnTwoLines(vector3, lineVec, vector4, lineVec2, out Vector3 planePoint, out Vector3 vector5); return(new Face(planePoint, planeNormal)); }
// Token: 0x06001A0D RID: 6669 RVA: 0x000BA974 File Offset: 0x000B8B74 public static bool AreLineSegmentsCrossing(Vector3 pointA1, Vector3 pointA2, Vector3 pointB1, Vector3 pointB2) { Vector3 vector = pointA2 - pointA1; Vector3 vector2 = pointB2 - pointB1; bool flag = Math3d.ClosestPointsOnTwoLines(pointA1, vector.normalized, pointB1, vector2.normalized, out Vector3 point, out Vector3 point2); if (flag) { int num = Math3d.PointOnWhichSideOfLineSegment(pointA1, pointA2, point); int num2 = Math3d.PointOnWhichSideOfLineSegment(pointB1, pointB2, point2); return(num == 0 && num2 == 0); } return(false); }