Esempio n. 1
0
        // 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);
        }
Esempio n. 2
0
        /// <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);
        }