示例#1
0
        public void NonCenteredUnitRectangle_AreaIsOne()
        {
            Curve testRect = CurvesFactory.RectangleCWH(new Point3d(5, 5, 0), 1, 1);

            var result = Logic.Utils.DeconstructRectangle(testRect);

            Assert.AreEqual(1, result.Area);
        }
示例#2
0
        public void CenteredUnitRectangle_HeightIsOne()
        {
            Curve testRect = CurvesFactory.RectangleCWH(Point3d.Origin, 1, 1);

            var result = Logic.Utils.DeconstructRectangle(testRect);

            Assert.AreEqual(1, result.Height);
        }
示例#3
0
        public void UnitX_IsZero()
        {
            Curve testCurve = CurvesFactory.CenteredXCurve();

            double slope = Logic.Utils.GetSlope(testCurve);

            Assert.AreEqual(0, slope);
        }
示例#4
0
        public void CurveSW_IsOne()
        {
            Curve testCurve = CurvesFactory.LineSDL(Point2d.Origin, new Vector2d(-1, -1), 1);

            double slope = Logic.Utils.GetSlope(testCurve);

            Assert.AreEqual(1, slope);
        }
示例#5
0
        public void UnitY_IsUndefined()
        {
            Curve testCurve = CurvesFactory.CenteredYCurve();

            double slope = Logic.Utils.GetSlope(testCurve);

            Assert.AreEqual(-1, slope);
        }
示例#6
0
        public void OverlappingSquareAndSquareRegion_ReturnsTrue()
        {
            Curve testCurve  = CurvesFactory.RectangleCWH(Point3d.Origin, 1, 1);
            Brep  testRegion = Brep.CreatePlanarBreps(testCurve, 0.1)[0];

            bool result = Logic.Relationships.Confirm.CurveRegionIntersection(testCurve, testRegion);

            Assert.IsTrue(result);
        }
示例#7
0
        public void PointOutsideUnitSquare_ReturnsFalse()
        {
            Brep    testRegion = Brep.CreatePlanarBreps(CurvesFactory.RectangleCWH(Point3d.Origin, 1, 1), 0.1)[0];
            Point3d testPoint  = new Point3d(5, 5, 0);

            bool result = Logic.Relationships.Confirm.PointInRegion(testRegion, testPoint);

            Assert.IsFalse(result);
        }
示例#8
0
        public void CenteredXCenteredY_ReturnsTrue()
        {
            Curve curveX = CurvesFactory.CenteredXCurve();
            Curve curveY = CurvesFactory.CenteredYCurve();

            bool result = Logic.Relationships.Confirm.CurvesIntersect(curveX, curveY, true);

            Assert.IsTrue(result);
        }
示例#9
0
        public void UnitCircle_TransverseCurve_CorrectLength()
        {
            Curve unitCircle      = new Circle(Point3d.Origin, 0.5).ToNurbsCurve();
            Curve transverseCurve = CurvesFactory.CenteredXCurve(2);

            Curve resultCurve = Logic.Transformations.Curves.TrimWithClosedCurve(unitCircle, transverseCurve);

            Assert.AreEqual(1, resultCurve.GetLength());
        }
示例#10
0
        //[TestMethod]
        public void DisjointSquareAndSquareRegion_ReturnsFalse()
        {
            Curve testCurve   = CurvesFactory.RectangleCWH(Point3d.Origin, 1, 1);
            Curve regionCurve = CurvesFactory.RectangleCWH(new Point3d(5, 5, 0), 1, 1);
            Brep  testRegion  = Brep.CreatePlanarBreps(regionCurve, 0.1)[0];

            bool result = Logic.Relationships.Confirm.CurveRegionIntersection(testCurve, testRegion);

            Assert.IsFalse(result);
        }
示例#11
0
        public void AdjacentSquareAndSquareRegion_ReturnsTrue()
        {
            Curve testCurve   = CurvesFactory.RectangleCWH(new Point3d(1, 0, 0), 2, 2);
            Curve regionCurve = CurvesFactory.RectangleCWH(new Point3d(-1, 0, 0), 2, 2);
            Brep  testRegion  = Brep.CreatePlanarBreps(regionCurve, 0.1)[0];

            bool result = Logic.Relationships.Confirm.CurveRegionIntersection(testCurve, testRegion);

            Assert.IsTrue(result);
        }
示例#12
0
        //[TestMethod]
        public void VSegments_ReturnsTrue()
        {
            List <Curve> TestEnv = new List <Curve>();

            TestEnv.Add(CurvesFactory.LineSDL(new Point2d(0, 0), new Vector2d(1, 1), 1));
            TestEnv.Add(CurvesFactory.LineSDL(new Point2d(0, 0), new Vector2d(-1, 1), 1));

            bool result = Logic.Relationships.Confirm.SegmentsFormOneCurve(TestEnv);

            Assert.IsTrue(result);
        }
示例#13
0
        public void TwoColinearUnitY_ReturnsTrue()
        {
            List <Curve> TestEnv = new List <Curve>();

            TestEnv.Add(CurvesFactory.LineSDL(new Point2d(0, 0), new Vector2d(0, 1), 1));
            TestEnv.Add(CurvesFactory.LineSDL(new Point2d(0, 0), new Vector2d(0, -1), 1));

            bool result = Logic.Relationships.Confirm.AllAxisColinear(TestEnv);

            Assert.IsTrue(result);
        }
示例#14
0
        public void TwoLinearCurves_ReturnsLongest()
        {
            var testList = new List <Curve>();

            testList.Add(CurvesFactory.UnitXCurve(5));
            testList.Add(CurvesFactory.UnitXCurve(3));

            var resultGeometry = Logic.Utils.GetLongestCurve(testList);

            Assert.AreEqual(5, resultGeometry.GetLength());
        }
示例#15
0
        public void TwoDisjointCurves_ReturnsTwoSegments()
        {
            List <Curve> TestEnv = new List <Curve>();

            TestEnv.Add(CurvesFactory.LineSDL(new Point2d(1, 0), new Vector2d(0, 1), 1));
            TestEnv.Add(CurvesFactory.LineSDL(new Point2d(-1, 0), new Vector2d(0, 1), 1));

            List <Curve> resultGeometry = Logic.Transformations.Curves.ShatterToSegments(TestEnv);

            Assert.AreEqual(resultGeometry.Count, 2);
        }
示例#16
0
        public void TwoIntersectingCurves_ReturnsFourSegments()
        {
            List <Curve> TestEnv = new List <Curve>();

            TestEnv.Add(CurvesFactory.CenteredXCurve());
            TestEnv.Add(CurvesFactory.CenteredYCurve());

            List <Curve> resultGeometry = Logic.Transformations.Curves.ShatterToSegments(TestEnv);

            Assert.AreEqual(resultGeometry.Count, 4);
        }
示例#17
0
        public void UnitCircle_TrimmedCurve_CurveUnchanged()
        {
            Curve unitCircle      = new Circle(Point3d.Origin, 0.5).ToNurbsCurve();
            Curve transverseCurve = CurvesFactory.CenteredXCurve(1);

            double originalLength = transverseCurve.GetLength();

            Curve resultCurve = Logic.Transformations.Curves.TrimWithClosedCurve(unitCircle, transverseCurve);

            Assert.AreEqual(originalLength, resultCurve.GetLength());
        }
示例#18
0
        public void CircleWithChord_ReturnsThreeSegments()
        {
            List <Curve> TestEnv = new List <Curve>();

            TestEnv.Add(new Circle(Point3d.Origin, 0.5).ToNurbsCurve());
            TestEnv.Add(CurvesFactory.CenteredYCurve());

            List <Curve> resultGeometry = Logic.Transformations.Curves.ShatterToSegments(TestEnv);

            Assert.AreEqual(resultGeometry.Count, 3);
        }
示例#19
0
        public void UnitSquare_ContainedCurve_ReturnsOne()
        {
            Brep         testSquare = Brep.CreatePlanarBreps(CurvesFactory.RectangleCWH(Point3d.Origin, 5, 5), 0.1)[0];
            List <Curve> testCurves = new List <Curve>();

            testCurves.Add(CurvesFactory.CenteredYCurve());

            List <Brep> resultGeometry = Logic.Transformations.Breps.SplitByCurves(testSquare, testCurves);

            Assert.AreEqual(1, resultGeometry.Count);
        }
示例#20
0
        public void UnitSquare_DisjointCurve_ReturnsOne()
        {
            Brep         testSquare = Brep.CreatePlanarBreps(CurvesFactory.RectangleCWH(Point3d.Origin, 1, 1), 0.1)[0];
            List <Curve> testCurves = new List <Curve>();

            testCurves.Add(CurvesFactory.LineSDL(new Point2d(10, 10), new Vector2d(1, 1), 1));

            List <Brep> resultGeometry = Logic.Transformations.Breps.SplitByCurves(testSquare, testCurves);

            Assert.AreEqual(1, resultGeometry.Count);
        }
示例#21
0
        public void NullInput_IsValid()
        {
            int          quota    = 0;
            string       access   = "1000";
            bool         priv     = false;
            Curve        boundary = CurvesFactory.RectangleCWH(Point3d.Origin, 1, 1);
            List <Curve> geometry = new List <Curve>();

            ProgramPackage TestProgramItem = new ProgramPackage(quota, access, priv, boundary, geometry);

            Assert.IsNotNull(TestProgramItem);
        }
示例#22
0
        public void UnitXCurve_UnitYCurve_InvalidInput()
        {
            Curve unitX = CurvesFactory.CenteredXCurve(2);
            Curve unitY = CurvesFactory.CenteredYCurve(2);

            Curve resultCurve = Logic.Transformations.Curves.TrimWithClosedCurve(unitX, unitY);

            double oldStartY = unitY.PointAtStart.Y;
            double newStartY = resultCurve.PointAtStart.Y;

            Assert.AreEqual(oldStartY, newStartY);
        }
示例#23
0
        public void CircleAroundSmallCrosshair_ReturnsFiveSegments()
        {
            List <Curve> TestEnv = new List <Curve>();

            TestEnv.Add(new Circle(Point3d.Origin, 0.5).ToNurbsCurve());
            TestEnv.Add(CurvesFactory.CenteredYCurve(0.1));
            TestEnv.Add(CurvesFactory.CenteredXCurve(0.1));

            List <Curve> resultGeometry = Logic.Transformations.Curves.ShatterToSegments(TestEnv);

            Assert.AreEqual(resultGeometry.Count, 5);
        }
示例#24
0
        public void ThreeDisjointNECurves_ReturnsFalse()
        {
            List <Curve> TestEnv = new List <Curve>();

            TestEnv.Add(CurvesFactory.LineSDL(new Point2d(0, 0), new Vector2d(1, 1), 1));
            TestEnv.Add(CurvesFactory.LineSDL(new Point2d(2, 0), new Vector2d(1, 1), 1));
            TestEnv.Add(CurvesFactory.LineSDL(new Point2d(4, 0), new Vector2d(1, 1), 1));

            bool result = Logic.Relationships.Confirm.AllAxisColinear(TestEnv);

            Assert.IsFalse(result);
        }
示例#25
0
        public void NotImplemented()
        {
            Curve TestCurve = CurvesFactory.UnitXCurve().ToNurbsCurve();

            //Console.WriteLine("Generated curve.");
            //Console.WriteLine(TestCurve.GetLength());

            Curve[] offset = TestCurve.Offset(Plane.WorldXY, 1, 0.1, CurveOffsetCornerStyle.None);

            Console.WriteLine("Curve.Offset is not currently implemented for Rhino Compute. It will only return null.");

            Assert.IsNull(offset);
            //Assert.IsNotNull(resultGeometry);
        }
示例#26
0
        public void VerticalCurve_XAxis_Oriented()
        {
            Curve    testCurve = CurvesFactory.UnitXCurve(10);
            Vector3d direction = Vector3d.XAxis;

            Curve resultCurve = Logic.Transformations.Curves.RebuildPerpendicularTo(testCurve, direction);

            Vector3d orientation = new Vector3d(resultCurve.PointAtEnd - resultCurve.PointAtStart);

            double difference = Vector3d.VectorAngle(orientation, direction);

            bool result = (1 - (Math.Abs(difference) % 90) < 0.1) ? true : false;

            Assert.IsTrue(result);
        }
示例#27
0
        public void UnitX_XAxis_LengthUnchanged()
        {
            Curve    testCurve = CurvesFactory.UnitXCurve(10);
            Vector3d direction = Vector3d.XAxis;

            double originalLength = testCurve.GetLength();

            Curve resultCurve = Logic.Transformations.Curves.RebuildPerpendicularTo(testCurve, direction);

            double resultLength = resultCurve.GetLength();

            bool result = (resultLength - originalLength < 0.1) ? true : false;

            Assert.IsTrue(result);
        }
示例#28
0
        public void MultipleVariedCurves_ReturnsLongest()
        {
            var testList = new List <Curve>();

            for (int i = 0; i < 15; i++)
            {
                testList.Add(CurvesFactory.RectangleCWH(Point3d.Origin, i + 1, i + 1));
                testList.Add(CurvesFactory.UnitXCurve(i + 1));
                testList.Add(new Arc(Plane.WorldXY, Point3d.Origin, i + 1, Math.PI / 2).ToNurbsCurve());
            }

            var resultGeometry = Logic.Utils.GetLongestCurve(testList);

            Assert.AreEqual(15 * 4, resultGeometry.GetLength());
        }
示例#29
0
        public void UnitX_TenUnitY_ReturnsTen()
        {
            Curve        testBaseCurve          = CurvesFactory.LineSDL(Point2d.Origin, new Vector2d(1, 0), 20);
            List <Curve> testIntersectionCurves = new List <Curve>();

            for (int i = 0; i < 10; i++)
            {
                testIntersectionCurves.Add(CurvesFactory.LineSDL(new Point2d(i, -1), new Vector2d(0, 1), 5));
            }

            //Console.WriteLine("TestEnv done.");

            List <Point3d> resultGeometry = Logic.Utils.GetAllCurveIntersections(testBaseCurve, testIntersectionCurves, true);

            Assert.AreEqual(10, resultGeometry.Count);
        }
示例#30
0
        public void UnitXTenUnitY_ReturnsTen()
        {
            Curve        testBaseCurve          = CurvesFactory.LineSDL(new Point2d(-1, 0), new Vector2d(1, 0), 20);
            List <Curve> testIntersectionCurves = new List <Curve>();

            for (int i = 0; i < 10; i++)
            {
                testIntersectionCurves.Add(new LineCurve(new Point2d(i, -2), new Point2d(i, 2)));
                //testIntersectionCurves.Add(CurvesFactory.LineSDL(new Point2d(i*2, -1), new Vector2d(0, 1), 5));
            }

            testIntersectionCurves.Add(testBaseCurve);

            List <Point3d> resultGeometry = Logic.Utils.GetAllCurveIntersections(testIntersectionCurves, true);

            Assert.AreEqual(10, resultGeometry.Count);
        }