// 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); }
/// <summary> /// 一个点在一条线段上的投影点 /// </summary> /// <param name="linePoint1"></param> /// <param name="linePoint2"></param> /// <param name="point"></param> /// <returns></returns> public static Vector3 ProjectPointOnLineSegment(Vector3 linePoint1, Vector3 linePoint2, Vector3 point) { Vector3 vector = Math3d.ProjectPointOnLine(linePoint1, (linePoint2 - linePoint1).normalized, point); int num = Math3d.PointOnWhichSideOfLineSegment(linePoint1, linePoint2, vector); if (num == 0) { return(vector); } if (num == 1) { return(linePoint1); } if (num == 2) { return(linePoint2); } return(Vector3.zero); }