예제 #1
0
        public void get_segment()
        {
            var lineString = new LineString2(_points);

            lineString.GetSegment(1).B.Should().Be(_points[2]);
            lineString.GetSegment(2).A.Should().Be(_points[2]);
        }
예제 #2
0
        public void expected_size_constructor()
        {
            var lineString = new LineString2(10);

            lineString.Should().HaveCount(0);
            lineString.SegmentCount.Should().Be(0);
        }
예제 #3
0
        public void get_mbr_basic() {
            var lineString = new LineString2(_points);

            var mbr = lineString.GetMbr();

            mbr.Should().Be(new Mbr(0, 0, 6, 6));
        }
예제 #4
0
        public void intersection_testing() {
            var lineString = new LineString2(_points);

            lineString.Intersects(new Point2(1, 3)).Should().BeTrue();
            lineString.Intersects(new Point2(6, 6)).Should().BeTrue();
            lineString.Intersects(new Point2(1, 5)).Should().BeFalse();
        }
예제 #5
0
        public void default_constructor()
        {
            var lineString = new LineString2();

            lineString.Should().HaveCount(0);
            lineString.SegmentCount.Should().Be(0);
        }
예제 #6
0
        public void points_constructor()
        {
            var lineString = new LineString2(_points);

            lineString.Should().HaveCount(_points.Length);
            lineString.SegmentCount.Should().Be(_points.Length - 1);
            lineString.Should().Equal(_points);
        }
예제 #7
0
        public void intersection_testing()
        {
            var lineString = new LineString2(_points);

            lineString.Intersects(new Point2(1, 3)).Should().BeTrue();
            lineString.Intersects(new Point2(6, 6)).Should().BeTrue();
            lineString.Intersects(new Point2(1, 5)).Should().BeFalse();
        }
예제 #8
0
        public void get_mbr_basic()
        {
            var lineString = new LineString2(_points);

            var mbr = lineString.GetMbr();

            mbr.Should().Be(new Mbr(0, 0, 6, 6));
        }
예제 #9
0
        public void distance_squared()
        {
            var lineString = new LineString2(_points);

            _points.Select(lineString.DistanceSquared).Should().OnlyContain(x => x == 0);
            lineString.DistanceSquared(new Point2(1, 3)).Should().Be(0);
            lineString.DistanceSquared(new Point2(1, 5)).Should().Be(
                lineString.GetSegment(2).DistanceSquared(new Point2(1, 5)));
        }
예제 #10
0
        public void magnitude_squared() {
            var lineString = new LineString2(_points);
            var expectedMagnitude = Enumerable.Range(0, lineString.SegmentCount)
                .Select(i => lineString.GetSegment(i))
                .Select(s => s.GetMagnitude())
                .Sum();

            var actual = lineString.GetMagnitudeSquared();

            actual.Should().Be(expectedMagnitude * expectedMagnitude);
        }
예제 #11
0
        public void segment_count() {
            var a = new LineString2();
            var b = new LineString2(new[] { Point2.Zero });
            var c = new LineString2(new[] { Point2.Zero, Point2.Zero.Add(Vector2.XUnit) });
            var d = new LineString2(_points);

            a.SegmentCount.Should().Be(0);
            b.SegmentCount.Should().Be(0);
            c.SegmentCount.Should().Be(1);
            d.SegmentCount.Should().Be(_points.Length-1);
        }
예제 #12
0
        public void segment_count()
        {
            var a = new LineString2();
            var b = new LineString2(new[] { Point2.Zero });
            var c = new LineString2(new[] { Point2.Zero, Point2.Zero.Add(Vector2.XUnit) });
            var d = new LineString2(_points);

            a.SegmentCount.Should().Be(0);
            b.SegmentCount.Should().Be(0);
            c.SegmentCount.Should().Be(1);
            d.SegmentCount.Should().Be(_points.Length - 1);
        }
예제 #13
0
        public void magnitude_squared()
        {
            var lineString        = new LineString2(_points);
            var expectedMagnitude = Enumerable.Range(0, lineString.SegmentCount)
                                    .Select(i => lineString.GetSegment(i))
                                    .Select(s => s.GetMagnitude())
                                    .Sum();

            var actual = lineString.GetMagnitudeSquared();

            actual.Should().Be(expectedMagnitude * expectedMagnitude);
        }
예제 #14
0
        public void centroid()
        {
            var lineString = new LineString2(_points);

            var centroid = lineString.GetCentroid();

            Assert.Equal(
                ((1.5 * 18.0) + (2.5 * 10.0) + (1 * 5.0) + (1 * 20.0) + (4 * 41.0)) / 94.0,
                centroid.X,
                10);
            Assert.Equal(
                ((1.5 * 18.0) + (4.5 * 10.0) + (5.5 * 5.0) + (3 * 20.0) + (3.5 * 41.0)) / 94.0,
                centroid.Y,
                10);
        }
예제 #15
0
        public void distance_squared() {
            var lineString = new LineString2(_points);

            _points.Select(lineString.DistanceSquared).Should().OnlyContain(x => x == 0);
            lineString.DistanceSquared(new Point2(1, 3)).Should().Be(0);
            lineString.DistanceSquared(new Point2(1, 5)).Should().Be(
                lineString.GetSegment(2).DistanceSquared(new Point2(1, 5)));
        }
예제 #16
0
        public void expected_size_constructor() {
            var lineString = new LineString2(10);

            lineString.Should().HaveCount(0);
            lineString.SegmentCount.Should().Be(0);
        }
예제 #17
0
        public void default_constructor() {
            var lineString = new LineString2();

            lineString.Should().HaveCount(0);
            lineString.SegmentCount.Should().Be(0);
        }
예제 #18
0
        public void get_segment() {
            var lineString = new LineString2(_points);

            lineString.GetSegment(1).B.Should().Be(_points[2]);
            lineString.GetSegment(2).A.Should().Be(_points[2]);
        }
예제 #19
0
        public void centroid() {
            var lineString = new LineString2(_points);

            var centroid = lineString.GetCentroid();

            Assert.Equal(
                ((1.5 * 18.0) + (2.5 * 10.0) + (1 * 5.0) + (1 * 20.0) + (4 * 41.0)) / 94.0,
                centroid.X,
                10);
            Assert.Equal(
                ((1.5 * 18.0) + (4.5 * 10.0) + (5.5 * 5.0) + (3 * 20.0) + (3.5 * 41.0)) / 94.0,
                centroid.Y,
                10);
        }
예제 #20
0
        public void points_constructor() {
            var lineString = new LineString2(_points);

            lineString.Should().HaveCount(_points.Length);
            lineString.SegmentCount.Should().Be(_points.Length - 1);
            lineString.Should().Equal(_points);
        }