Example #1
0
 public void CircleTests()
 {
     var circle = new Circle(0, 0, 110000);
     AssertThatIndexPropertyIsGenerated(circle);
     AssertTrue(circle, SpatialRelation.Within, new Circle(0, 0, 220000));
     AssertFalse(circle, SpatialRelation.Within, new Circle(0, 160, 600000));
     AssertTrue(circle, SpatialRelation.Intersects, new Circle(1, 0, 110000));
     AssertFalse(circle, SpatialRelation.Intersects, new Circle(2, 0, 110000));
     //AssertThat(point, SpatialRelation.Disjoint, new Point(1, 1));
 }
Example #2
0
        public void Bounds_A_111000_RadiusMeterEquatorialCircleShouldBeAboutTwoDegreesWide()
        {
            var circle = new Circle(0, 20, 111000);
            var bounds = circle.GetBounds();

            var minLonError = Distance(19, bounds.MinLon);
            Assert.LessOrEqual(minLonError, 0.002);

            var maxLonError = Distance(21, bounds.MaxLon);
            Assert.LessOrEqual(maxLonError, 0.002);
        }
Example #3
0
        public void An_60Degree_CircleWith_111000M_RadiusShouldBeAboutTwoDegreesTall()
        {
            var circle = new Circle(60, 20, 111000);
            var bounds = circle.GetBounds();

            var minLatError = Distance(59, bounds.MinLat);
            Assert.LessOrEqual(minLatError, 0.002);

            var maxLatError = Distance(61, bounds.MaxLat);
            Assert.LessOrEqual(maxLatError, 0.002);
        }
Example #4
0
        public void An_60Degree_CircleWith_111000M_RadiusShouldBeAboutOneDegreeWide()
        {
            var circle = new Circle(60, 20, 111000);
            var bounds = circle.GetBounds();

            var minLonError = Distance(19.5, bounds.MinLon);
            Assert.LessOrEqual(minLonError, 0.002);

            var maxLonError = Distance(20.5, bounds.MaxLon);
            Assert.LessOrEqual(maxLonError, 0.002);
        }
Example #5
0
        public Area CalculateArea(Circle circle)
        {
            if (circle.Radius <= 0)
                return new Area(0d);

            if (circle.Radius > Math.PI * Radius)
                return new Area(0d);

            var h = Radius * (1 - Math.Cos(circle.Radius / Radius));
            var area = 2 * Math.PI * Radius * h;
            return new Area(area);
        }
Example #6
0
 private bool TryReadCircle(string value, out ISpatial4nShape result)
 {
     var match = Regex.Match(value,
                 @"Circle \s* \( \s* ([+-]?(?:\d+\.?\d*|\d*\.?\d+)) \s+ ([+-]?(?:\d+\.?\d*|\d*\.?\d+)) \s+ d=([+-]?(?:\d+\.?\d*|\d*\.?\d+)) \s* \)",
                 RegexOptions.IgnorePatternWhitespace | RegexOptions.IgnoreCase);
     if (match.Success)
     {
         result = new Circle(new Coordinate(
             double.Parse(match.Groups[2].Value, CultureInfo.InvariantCulture),
             double.Parse(match.Groups[1].Value, CultureInfo.InvariantCulture)),
             ConvertCircleRadius(double.Parse(match.Groups[3].Value, CultureInfo.InvariantCulture)));
         return true;
     }
     result = null;
     return false;
 }
Example #7
0
 public Distance CalculateLength(Circle circle)
 {
     return _sphereCalculator.CalculateLength(circle);
 }
Example #8
0
 public Area CalculateArea(Circle circle)
 {
     return _sphereCalculator.CalculateArea(circle);
 }
Example #9
0
 public Distance CalculateLength(Circle circle)
 {
     var h = Radius * (1 - Math.Cos(circle.Radius / Radius));
     var circumference = 2*Math.PI*Math.Sqrt(h*(2*Radius - h));
     return new Distance(circumference);
 }