Esempio n. 1
0
        private static ClipOperationResult Clip(ref CMesh lCMesh, Plane lPlane)
        {
            ClipOperationResult lResult = ProcessVertices(ref lCMesh, lPlane);

            if (lResult != ClipOperationResult.Mixed)
            {
                return(lResult);
            }

            ProcessEdges(ref lCMesh, lPlane);

            ProcessFaces(ref lCMesh, lPlane);

            return(lResult);
        }
Esempio n. 2
0
        public static CMesh CreateConvexPolyhedron(Plane[] lPlanes, Vector3 lCentre, Vector3 lSize)
        {
            AMesh lMeshToClip = CreateAMeshBox(lCentre, lSize);

            CMesh lClippedMesh = new CMesh(lMeshToClip);

            for (int i = 0; i < lPlanes.Length; i++)
            {
                ClipOperationResult lResult = Clip(ref lClippedMesh, lPlanes[i]);

                if (lResult == ClipOperationResult.AllNegative)
                {
                    break;
                }
            }

            return(lClippedMesh);
        }