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);
        }
예제 #3
0
        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);
        }