private void DoMinimumBoundingCircleTest(string wkt, string expectedWKT, Coordinate expectedCentre, double expectedRadius) { var mbc = new MinimumBoundingCircle(reader.Read(wkt)); var exPts = mbc.GetExtremalPoints(); IGeometry actual = geometryFactory.CreateMultiPoint(exPts); double actualRadius = mbc.GetRadius(); var actualCentre = mbc.GetCentre(); //Console.WriteLine(" Centre = " + actualCentre + " Radius = " + actualRadius); var expected = reader.Read(expectedWKT); bool isEqual = actual.Equals(expected); // need this hack because apparently equals does not work for MULTIPOINT EMPTY if (actual.IsEmpty && expected.IsEmpty) { isEqual = true; } if (!isEqual) { Console.WriteLine("Actual = " + actual + ", Expected = " + expected); } Assert.IsTrue(isEqual); if (expectedCentre != null) { Assert.IsTrue(expectedCentre.Distance(actualCentre) < TOLERANCE); } if (expectedRadius >= 0) { Assert.IsTrue(Math.Abs(expectedRadius - actualRadius) < TOLERANCE); } }
private void DoMaxDiameterTest(string wkt, string expectedWKT) { var mbc = new MinimumBoundingCircle(Read(wkt)); var diamActual = mbc.GetMaximumDiameter(); var expected = Read(expectedWKT); CheckEqual(expected, diamActual); }
private void Run(int nPts) { var randPts = CreateRandomPoints(nPts); Geometry mp = _geomFact.CreateMultiPointFromCoords(randPts); var mbc = new MinimumBoundingCircle(mp); var centre = mbc.GetCentre(); double radius = mbc.GetRadius(); Console.WriteLine("Testing " + nPts + " random points. Radius = " + radius); checkWithinCircle(randPts, centre, radius, 0.0001); }