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)); }
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); }
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); }
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); }
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); }
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; }
public Distance CalculateLength(Circle circle) { return _sphereCalculator.CalculateLength(circle); }
public Area CalculateArea(Circle circle) { return _sphereCalculator.CalculateArea(circle); }
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); }