예제 #1
0
        public void DegeneratePolygons()
        {
            var polygon = new double[][][] {
                new double[][] {
                    new double[] { 0, 0 },
                    new double[] { 1, 0 },
                    new double[] { 2, 0 },
                    new double[] { 0, 0 }
                }
            };

            var polylabel = Polylabel.GetPolylabel(polygon);

            Assert.Equal(new double[] { 0, 0 }, polylabel);

            polygon = new double[][][] {
                new double[][] {
                    new double[] { 0, 0 },
                    new double[] { 1, 0 },
                    new double[] { 1, 1 },
                    new double[] { 1, 0 },
                    new double[] { 0, 0 }
                }
            };

            polylabel = Polylabel.GetPolylabel(polygon);

            Assert.Equal(new double[] { 0, 0 }, polylabel);
        }
예제 #2
0
        public void PolylabelJson(string fileName, double expectedX, double expectedY)
        {
            var jsonString = File.ReadAllText(fileName);
            var polygon    = JsonConvert.DeserializeObject <double[][][]>(jsonString);
            var center     = Polylabel.GetPolylabel(polygon, debug: true);

            Assert.Equal(expectedX, center[0]);
            Assert.Equal(expectedY, center[1]);
        }
예제 #3
0
        public void ThrowsExceptionForIncompletePolygon()
        {
            var empty     = new Polygon(new List <Vertex>());
            var onePoint  = new Polygon(new[] { new Vertex(0, 0) });
            var twoPoints = new Polygon(new[] { new Vertex(0, 0), new Vertex(1, 1) });

            Assert.That(() => Polylabel.ComputeLabelPosition(empty), Throws.TypeOf(typeof(ArgumentOutOfRangeException)));
            Assert.That(() => Polylabel.ComputeLabelPosition(onePoint), Throws.TypeOf(typeof(ArgumentOutOfRangeException)));
            Assert.That(() => Polylabel.ComputeLabelPosition(twoPoints), Throws.TypeOf(typeof(ArgumentOutOfRangeException)));
        }
예제 #4
0
        public void IsCorrectForTriangle()
        {
            var triangle = new Polygon(new Vertex[] {
                new Vertex(0, 0),
                new Vertex(100, 0),
                new Vertex(50, 100)
            });

            Vertex result = Polylabel.ComputeLabelPosition(triangle);

            Assert.That(result.X, Is.EqualTo(50).Within(1E-6), "Polylabel for triangle failed: {0}", nameof(result.X));
            Assert.That(result.Y, Is.EqualTo(30.901700).Within(1E-6), "Polylabel for triangle failed: {0}", nameof(result.Y));
        }