コード例 #1
0
        public void Area_VertexVertexBulge()
        {
            var          vertex0    = new Vertex(0, 2);
            var          vertex1    = new Vertex(2, 2);
            const double bulgeValue = -0.5;
            var          testArc    = new GeoArc(vertex0, vertex1, bulgeValue);

            Assert.IsTrue(Math.Abs(testArc.Area - 0.6989) < GeoMath.Tolerance);
        }
コード例 #2
0
        public void Build3VTests()
        {
            var vertex0 = new Vertex(0, 2);
            var vertex1 = new Vertex(1, 2.5);
            var vertex2 = new Vertex(2, 2);
            var testArc = new GeoArc(vertex0, vertex1, vertex2);

            Assert.IsTrue(Math.Abs(testArc.CenterVertex.X - 1) < GeoMath.Tolerance);
            Assert.IsTrue(Math.Abs(testArc.CenterVertex.Y - 1.25) < GeoMath.Tolerance);
        }
コード例 #3
0
        public void EndAngleTest_VertexVertexBulge()
        {
            var          vertex0    = new Vertex(0, 2);
            var          vertex1    = new Vertex(2, 2);
            const double bulgeValue = -0.5;
            var          testArc    = new GeoArc(vertex0, vertex1, bulgeValue);

            Assert.IsTrue(Math.Abs(
                              testArc.EndAngle - GeoMath.DegToRad(36.8699)) < GeoMath.Tolerance);
        }
コード例 #4
0
        public void Area_CaarTest()
        {
            var          centerVertex = new Vertex(1.0, 1.25);
            var          startAngle   = GeoMath.DegToRad(36.8699);
            var          endAngle     = GeoMath.DegToRad(143.1301);
            const double radius       = 1.25;
            var          testArc      = new GeoArc(centerVertex, startAngle, endAngle, radius);

            Assert.IsTrue(Math.Abs(testArc.Area - 0.6989) < GeoMath.Tolerance);
        }
コード例 #5
0
        public void BulgeValue_CaarTest()
        {
            var centerVertex = new Vertex(1.0, 1.25);
            var startAngle   = GeoMath.DegToRad(36.8699);
            var endAngle     = GeoMath.DegToRad(143.1301);
            var radius       = 1.25;
            var testArc      = new GeoArc(centerVertex, startAngle, endAngle, radius);

            Assert.IsTrue(Math.Abs(testArc.BulgeValue - (0.5)) < GeoMath.Tolerance);
        }
コード例 #6
0
        public void MiddleVertexTest()
        {
            var          vertex0    = new Vertex(0, 2);
            var          vertex1    = new Vertex(2, 2);
            const double bulgeValue = -0.5;
            var          testArc    = new GeoArc(vertex0, vertex1, bulgeValue);

            Assert.IsTrue(Math.Abs(testArc.MiddleVertex.X - 1) < GeoMath.Tolerance);
            Assert.IsTrue(Math.Abs(testArc.MiddleVertex.Y - 2.5) < GeoMath.Tolerance);
        }
コード例 #7
0
        public void LengthTest_LengthShouldBe5p05832()
        {
            var vertex0    = new Vertex(13, 3.5);
            var vertex1    = new Vertex(13, 0);
            var bulgeValue = Math.Tan(GeoMath.DegToRad(164) / 4);

            var testArc = new GeoArc(vertex0, vertex1, bulgeValue);

            Debug.WriteLine($"The Total length of the Arc is {testArc.Length}");
            Assert.IsTrue(Math.Abs(testArc.Length - 5.05832) < GeoMath.Tolerance);
        }
コード例 #8
0
ファイル: CircularArc.cs プロジェクト: zixuan203344/Dxflib
        // The GeoArc Backing Field

        /// <inheritdoc />
        /// <summary>
        ///     The <see cref="T:Dxflib.Entities.CircularArcBuffer" /> constructor
        ///     for the Arc Entity
        /// </summary>
        /// <param name="ab">The <see cref="T:Dxflib.Entities.CircularArcBuffer" /></param>
        public CircularArc(CircularArcBuffer ab) : base(ab)
        {
            EntityType   = ab.EntityType;
            GeometricArc = new GeoArc(
                new Vertex(ab.CenterPointX, ab.CenterPointY, ab.CenterPointZ),
                GeoMath.DegToRad(ab.StartAngle),
                GeoMath.DegToRad(ab.EndAngle),
                ab.Radius
                );
            Thickness = ab.Thickness;
        }
コード例 #9
0
        public void EndAngle_CaarTest_Changing()
        {
            var centerVertex = new Vertex(1.0, 1.25);
            var startAngle   = GeoMath.DegToRad(36.8699);
            var endAngle     = GeoMath.DegToRad(143.1301);
            var radius       = 1.25;
            var testArc      = new GeoArc(centerVertex, startAngle, endAngle, radius);

            testArc.EndAngle = GeoMath.DegToRad(200);
            Assert.IsTrue(Math.Abs(testArc.Vertex1.X - -0.1746) < GeoMath.Tolerance);
            Assert.IsTrue(Math.Abs(testArc.Vertex1.Y - 0.8225) < GeoMath.Tolerance);
        }
コード例 #10
0
        public void StartAngle_CaarTest_Changing()
        {
            var centerVertex = new Vertex(1.0, 1.25);
            var startAngle   = GeoMath.DegToRad(36.8699);
            var endAngle     = GeoMath.DegToRad(143.1301);
            var radius       = 1.25;
            var testArc      = new GeoArc(centerVertex, startAngle, endAngle, radius);

            testArc.StartAngle = GeoMath.DegToRad(50);
            Assert.IsTrue(Math.Abs(testArc.Vertex0.X - 1.8035) < GeoMath.Tolerance);
            Assert.IsTrue(Math.Abs(testArc.Vertex0.Y - 2.2076) < GeoMath.Tolerance);
        }
コード例 #11
0
        public void Vertex0AndVertex1_CaarTest()
        {
            var centerVertex = new Vertex(1.0, 1.25);
            var startAngle   = GeoMath.DegToRad(36.8699);
            var endAngle     = GeoMath.DegToRad(143.1301);
            var radius       = 1.25;
            var testArc      = new GeoArc(centerVertex, startAngle, endAngle, radius);

            // Starting Vertex
            Assert.IsTrue(Math.Abs(testArc.Vertex0.X - 2) < GeoMath.Tolerance);
            Assert.IsTrue(Math.Abs(testArc.Vertex0.Y - 2) < GeoMath.Tolerance);

            // Ending Vertex
            Assert.IsTrue(Math.Abs(testArc.Vertex1.X) < GeoMath.Tolerance);
            Assert.IsTrue(Math.Abs(testArc.Vertex1.Y - 2) < GeoMath.Tolerance);
        }
コード例 #12
0
        public void GenericGeoPolylineTest_1Arc()
        {
            // Line 0
            var v0 = new Vertex(3.5, 0);
            var v1 = new Vertex(6, 0);
            var l0 = new GeoLine(v0, v1);

            Assert.IsTrue(Math.Abs(l0.Length - 2.5) < GeoMath.Tolerance);

            // Line 1
            var v2 = new Vertex(6, 2.5);
            var l1 = new GeoLine(v1, v2);

            Assert.IsTrue(Math.Abs(l1.Length - 2.5) < GeoMath.Tolerance);

            // Arc
            var          centerPoint = new Vertex(4.75, 1.75);
            var          startAngle  = GeoMath.DegToRad(30.964);
            var          endAngle    = GeoMath.DegToRad(149.036);
            const double radius      = 1.4577;
            var          arc0        = new GeoArc(centerPoint, startAngle, endAngle, radius);

            Assert.IsTrue(Math.Abs(arc0.Length - 3.0040) < GeoMath.Tolerance);

            // Line 2
            var v3 = new Vertex(3.5, 2.5);
            var l2 = new GeoLine(v3, v0);

            Assert.IsTrue(Math.Abs(l2.Length - 2.5) < GeoMath.Tolerance);

            // GeoPolyline
            var geoPolyline = new GeoPolyline(); // Initialized

            // Adding sections to the GeoPolyline
            geoPolyline.Add(l0);
            geoPolyline.Add(l1);
            geoPolyline.Add(arc0);
            geoPolyline.Add(l2);

            // Assert
            Assert.IsTrue(Math.Abs(geoPolyline.Length - 10.5040) < GeoMath.Tolerance);
            Assert.IsTrue(Math.Abs(geoPolyline.Area - 7.5021) < GeoMath.Tolerance);
        }