Esempio n. 1
0
        private void DrawLine03(IRI.Ket.DataStructure.AdvancedStructures.KdTreeNode <spatial.Point> node, int level, double y1, double y2, double x1, double x2)
        {
            hilbertHeight = Math.Max(hilbertHeight, level);

            bool xBased = (level % 2 == 0);

            if (node.LeftChild != null)
            {
                if (xBased)
                {
                    DrawLine03(node.LeftChild, level + 1, y1, y2, x1, node.Point.X);
                }
                else
                {
                    DrawLine03(node.LeftChild, level + 1, y1, node.Point.Y, x1, x2);
                }
            }
            if (node.RigthChild != null)
            {
                if (xBased)
                {
                    DrawLine03(node.RigthChild, level + 1, y1, y2, node.Point.X, x2);
                }
                else
                {
                    DrawLine03(node.RigthChild, level + 1, node.Point.Y, y2, x1, x2);
                }
            }

            Line line = new Line()
            {
                StrokeThickness = 1, Stroke = new SolidColorBrush(Colors.Blue)
            };

            double x = node.Point.X; double y = node.Point.Y;

            if (xBased)
            {
                line.X1 = x; line.X2 = x; line.Y1 = y1; line.Y2 = y2;
            }
            else
            {
                line.X1 = x1; line.X2 = x2; line.Y1 = y; line.Y2 = y;
            }

            RectangleGeometry geometry = new RectangleGeometry(new Rect(x - 2, y - 2, 4, 4));

            Path rectangle             = new Path()
            {
                Data = geometry, Fill = new SolidColorBrush(Colors.Red)
            };

            canvas3.Children.Add(line);

            canvas3.Children.Add(rectangle);
        }
Esempio n. 2
0
        private void Draw(Canvas canvas, IRI.Ket.DataStructure.AdvancedStructures.KdTreeNode <spatial.Point> node, int level, double y1, double y2, double x1, double x2, ref int height)
        {
            height = Math.Max(height, level);

            bool xBased = (level % 2 == 0);

            if (node.LeftChild != null)
            {
                if (xBased)
                {
                    Draw(canvas, node.LeftChild, level + 1, y1, y2, x1, node.Point.X, ref height);
                }
                else
                {
                    Draw(canvas, node.LeftChild, level + 1, y1, node.Point.Y, x1, x2, ref height);
                }
            }
            if (node.RigthChild != null)
            {
                if (xBased)
                {
                    Draw(canvas, node.RigthChild, level + 1, y1, y2, node.Point.X, x2, ref height);
                }
                else
                {
                    Draw(canvas, node.RigthChild, level + 1, node.Point.Y, y2, x1, x2, ref height);
                }
            }

            Line line = new Line()
            {
                StrokeThickness = 2, Stroke = new SolidColorBrush(Colors.Green)
            };

            double x = node.Point.X; double y = node.Point.Y;

            if (xBased)
            {
                line.X1 = x; line.X2 = x; line.Y1 = y1; line.Y2 = y2;
            }
            else
            {
                line.X1 = x1; line.X2 = x2; line.Y1 = y; line.Y2 = y;
            }

            EllipseGeometry geometry = new EllipseGeometry(new Point(x, y), 3, 3);

            Path rectangle           = new Path()
            {
                Data = geometry, Fill = new SolidColorBrush(Colors.Red)
            };

            canvas.Children.Add(line);

            canvas.Children.Add(rectangle);
        }