コード例 #1
0
        public List <ConflictingPlanes> SeparationPlanes(List <Plane> activePlanes)
        {
            // A List of every conflicting planes
            List <ConflictingPlanes> cList = new List <ConflictingPlanes>();

            // Copy of activePlanes
            List <Plane> activePlanesCopy = new List <Plane>(activePlanes);

            // Find every conflicting plane
            foreach (var plane1 in activePlanesCopy)
            {
                Coordinate coordinate1 = plane1.Positions.First().Coordinate;
                activePlanes.Remove(activePlanes.First());

                foreach (var plane2 in activePlanesCopy)
                {
                    Coordinate coordinate2 = plane2.Positions.First().Coordinate;

                    int diffX = Math.Abs(coordinate1.X - coordinate2.X);
                    int diffY = Math.Abs(coordinate1.Y - coordinate2.Y);
                    int diffZ = Math.Abs(coordinate1.Z - coordinate2.Z);


                    if (diffX < 5000 && diffY < 5000 && diffZ < 300)
                    {
                        ConflictingPlanes cPlanes = new ConflictingPlanes();
                        cPlanes.Tag1 = plane1.Tag;
                        cPlanes.Tag2 = plane2.Tag;

                        cList.Add(cPlanes);
                    }
                }
            }

            return(cList);
        }
コード例 #2
0
        public List<ConflictingPlanes> SeparationPlanes(List<Plane> activePlanes)
        {
            // A List of every conflicting planes
            List<ConflictingPlanes> cList = new List<ConflictingPlanes>();

            // Copy of activePlanes
            List<Plane> activePlanesCopy = new List<Plane>(activePlanes);

            // Find every conflicting plane
            foreach (var plane1 in activePlanesCopy)
            {
                Coordinate coordinate1 = plane1.Positions.First().Coordinate;
                activePlanes.Remove(activePlanes.First());

                foreach (var plane2 in activePlanesCopy)
                {
                    Coordinate coordinate2 = plane2.Positions.First().Coordinate;

                    int diffX = Math.Abs(coordinate1.X - coordinate2.X);
                    int diffY = Math.Abs(coordinate1.Y - coordinate2.Y);
                    int diffZ = Math.Abs(coordinate1.Z - coordinate2.Z);

                    if (diffX < 5000 && diffY < 5000 && diffZ < 300)
                    {
                        ConflictingPlanes cPlanes = new ConflictingPlanes();
                        cPlanes.Tag1 = plane1.Tag;
                        cPlanes.Tag2 = plane2.Tag;

                        cList.Add(cPlanes);
                    }
                }
            }

            return cList;
        }