예제 #1
0
        public void SplittingTest()
        {
            Rectangle3d rect     = new Rectangle3d(Plane.WorldXY, 5000, 1000);
            Curve       Boundary = rect.ToNurbsCurve();

            List <Plane> splitPlanes = new List <Plane>();

            for (int i = 1; i < 5; i++)
            {
                Point3d planeOrigin = new Point3d(i * 500, 0, 0);
                Plane   splitPlane  = new Plane(planeOrigin, Vector3d.XAxis);
                splitPlanes.Add(splitPlane);
            }

            List <Curve> splitCurves = Curves.DivideCurve(Boundary, splitPlanes);

            Assert.Equal <int>(5, splitCurves.Count);
            Assert.All <Curve>(splitCurves, result => Assert.True(result.IsClosed));

            double boundaryArea = AreaMassProperties.Compute(Boundary).Area;

            double splitAreas = 0;

            foreach (Curve crv in splitCurves)
            {
                double crvArea = AreaMassProperties.Compute(crv).Area;
                splitAreas += crvArea;
            }

            Assert.Equal <double>(Math.Round(boundaryArea, 0), Math.Round(splitAreas, 0));
        }