예제 #1
0
        /// <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));
        }
예제 #2
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);
        }