static void Main(string[] args)
        {
            Circle circle             = new Circle();
            DistanceCalculator2D dist = new DistanceCalculator2D();
            Elipse    elipse          = new Elipse();
            Figure2D  figure          = new Figure2D();
            Point2D   point           = new Point2D();
            Polygon   plygon          = new Polygon();
            Rectangle rectangle       = new Rectangle();
            Square    square          = new Square();

            Console.WriteLine();

            Point3D point3D             = new Point3D();
            Path3D  path                = new Path3D();
            DistanceCalculator3D dist3D = new DistanceCalculator3D();

            Console.WriteLine();

            GeometryBinaryStorage gbStorage = new GeometryBinaryStorage();
            GeometrySVGStorage    gsStorage = new GeometrySVGStorage();
            GeometryXMLStorage    gxStorage = new GeometryXMLStorage();

            Console.WriteLine();

            Screen2D sc2D = new Screen2D();
            Screen3D sc3D = new Screen3D();
        }
예제 #2
0
    static void Main(string[] args)
    {
        // Create instances from namespace Geometry2D
        Point2D point2D = new Point2D();
        Circle  circle  = new Circle();
        DistanceCalculator2D distance2D = new DistanceCalculator2D();
        Ellipse   ellipse   = new Ellipse();
        Figure2D  figure2D  = new Figure2D();
        Polygon   polygon   = new Polygon();
        Rectangle rectangle = new Rectangle();
        Square    square    = new Square();

        // Create instances from namespace Geometry3D
        DistanceCalculator3D distance3D = new DistanceCalculator3D();
        Path3D  path3D  = new Path3D();
        Point3D point3D = new Point3D();

        // Create instances from namespace Storage
        GeometryBinaryStorage binaryStorage = new GeometryBinaryStorage();
        GeometrySVGStorage    svgStorage    = new GeometrySVGStorage();
        GeometryXMLStorage    xmlStorage    = new GeometryXMLStorage();

        // Create instances from namespace UI
        Screen2D screen2D = new Screen2D();
        Screen3D screen3D = new Screen3D();
    }
예제 #3
0
        public void KdTree2D_Range_Accuracy_Test()
        {
            var distanceCalculator = new DistanceCalculator2D();

            int nodeCount = 1000;
            var rnd       = new Random();

            var testPts = new List <int[]>();

            for (int i = 0; i < nodeCount; i++)
            {
                var start = i + rnd.Next(0, int.MaxValue - 100);
                var end   = start + rnd.Next(1, 10);

                testPts.Add(new int[] { start, end });
            }

            var tree = new KDTree <int>(2);

            foreach (var pt in testPts)
            {
                tree.Insert(pt);
            }

            //IEnumerable tests using linq.
            Assert.AreEqual(tree.Count, tree.Count());

            int j = testPts.Count - 1;

            while (testPts.Count > 0)
            {
                var testStartRange = new int[] { rnd.Next(), rnd.Next() };
                var testEndRange   = new int[] { rnd.Next() + 100, rnd.Next() + 200 };

                var correctResult = new List <int[]>();
                for (int i = 0; i < testPts.Count; i++)
                {
                    if (InRange(testPts[i], testStartRange, testEndRange))
                    {
                        correctResult.Add(testPts[i]);
                    }
                }

                var actualResult = tree.RangeSearch(testStartRange, testEndRange);

                Assert.IsTrue(correctResult.Count == actualResult.Count);

                tree.Delete(testPts[j]);
                testPts.RemoveAt(j);
                j--;
            }
        }
예제 #4
0
        public void KdTree2D_NearestNeighbour_Smoke_Test()
        {
            var distanceCalculator = new DistanceCalculator2D();

            var testPts = new List <int[]> {
                new int[2] {
                    3, 6
                }, new int[2] {
                    17, 15
                },
                new int[2] {
                    13, 15
                }, new int[2] {
                    6, 12
                }, new int[2] {
                    9, 1
                },
                new int[2] {
                    2, 7
                }, new int[2] {
                    10, 19
                }
            };

            var tree = new KDTree <int>(2);

            foreach (var pt in testPts)
            {
                tree.Insert(pt);
            }

            //IEnumerable tests using linq.
            Assert.AreEqual(tree.Count, tree.Count());

            int j = testPts.Count - 1;

            while (testPts.Count > 0)
            {
                var testPoint       = new int[] { 10, 20 };
                var nearestNeigbour = tree.NearestNeighbour(new DistanceCalculator2D(), testPoint);
                var actualNeigbour  = GetActualNearestNeighbour(testPts, testPoint);
                Assert.IsTrue(distanceCalculator.Compare(actualNeigbour, nearestNeigbour, testPoint) == 0);

                tree.Delete(testPts[j]);
                testPts.RemoveAt(j);
                j--;
            }


            //IEnumerable tests using linq.
            Assert.AreEqual(tree.Count, tree.Count());
        }
예제 #5
0
        public void KdTree2D_NearestNeighbour_Accuracy_Test()
        {
            var distanceCalculator = new DistanceCalculator2D();

            int nodeCount = 1000;
            var rnd       = new Random();

            var testPts = new List <int[]>();

            for (int i = 0; i < nodeCount; i++)
            {
                var start = i + rnd.Next(0, int.MaxValue - 100);
                var end   = start + rnd.Next(1, 10);

                testPts.Add(new int[] { start, end });
            }

            var tree = new KDTree <int>(2);

            foreach (var pt in testPts)
            {
                tree.Insert(pt);
            }

            //IEnumerable tests using linq.
            Assert.AreEqual(tree.Count, tree.Count());

            int j = testPts.Count - 1;

            while (testPts.Count > 0)
            {
                var testPoint = new int[] { rnd.Next(), rnd.Next() };

                var nearestNeigbour = tree.NearestNeighbour(distanceCalculator, testPoint);
                var actualNeigbour  = GetActualNearestNeighbour(testPts, testPoint);

                Assert.IsTrue(distanceCalculator.Compare(actualNeigbour, nearestNeigbour, testPoint) == 0);

                tree.Delete(testPts[j]);
                testPts.RemoveAt(j);
                j--;
            }


            //IEnumerable tests using linq.
            Assert.AreEqual(tree.Count, tree.Count());
        }
예제 #6
0
 static void Main()
 {
     Point2D               a = new Point2D();
     Figure2D              b = new Figure2D();
     Square                c = new Square();
     Rectangle             d = new Rectangle();
     Circle                e = new Circle();
     Elipse                f = new Elipse();
     DistanceCalculator2D  g = new DistanceCalculator2D();
     Point3D               h = new Point3D();
     Path3D                i = new Path3D();
     DistanceCalculator3D  j = new DistanceCalculator3D();
     GeometryBinaryStorage k = new GeometryBinaryStorage();
     GeometrySVGStorage    l = new GeometrySVGStorage();
     GeometryXMLStorage    m = new GeometryXMLStorage();
     Screen2D              n = new Screen2D();
     Screen3D              o = new Screen3D();
 }
        /// <summary>
        /// gets the actual nearest neighbour by brute force search
        /// </summary>
        /// <param name="points"></param>
        /// <param name="testPoint"></param>
        /// <returns></returns>
        private int[] GetActualNearestNeighbour(List <int[]> points, int[] testPoint)
        {
            int[]  currentMinNode     = null;
            double currentMin         = double.MaxValue;
            var    distanceCalculator = new DistanceCalculator2D();

            for (int i = 0; i < points.Count; i++)
            {
                var currentDistance = distanceCalculator.GetEucledianDistance(points[i], testPoint);

                if (currentMin > currentDistance)
                {
                    currentMin     = currentDistance;
                    currentMinNode = points[i];
                }
            }

            return(currentMinNode);
        }
예제 #8
0
        static void Main()
        {
            Circle  circle                = new Circle();
            Ellipse ellipse               = new Ellipse();
            DistanceCalculator2D calc2D   = new DistanceCalculator2D();
            Figure2D             figure2D = new Figure2D();
            Point2D   p2D     = new Point2D();
            Polygon   polygon = new Polygon();
            Rectangle rect    = new Rectangle();
            Square    square  = new Square();

            Console.WriteLine();

            DistanceCalculator3D calc3D = new DistanceCalculator3D();
            Path3D  path = new Path3D();
            Point3D p3D  = new Point3D();

            GeometrySVGStorage    geometrySVGStorage    = new GeometrySVGStorage();
            GeometryXMLStorage    geometryXMLStorage    = new GeometryXMLStorage();
            GeometryBinaryStorage geometryBinaryStorage = new GeometryBinaryStorage();

            Screen2D scr2D = new Screen2D();
            Screen3D scr3D = new Screen3D();
        }