Esempio n. 1
0
        private void OnMouseDown(object sender, MouseButtonEventArgs e)
        {
            Point px = Mouse.GetPosition(this.canvas1);

            _pointList.Add(new VectorNode((int)px.X, (int)px.Y));


            this.canvas1.Children.Clear();
            foreach (var point in _pointList)
            {
                Point p = new Point(point.x, point.y);
                DrawPoint(p);
            }

            _voronoi.Rebuild();

            //only draw voronoi if ok
            if (_showVoronoi)
            {
                var circles = _voronoi.GetNodes();
                foreach (var ce in circles)
                {
                    HalfEdge edge = ce.halfEdge;
                    HalfEdge f    = edge;
                    while (edge != null)
                    {
                        var myLine = new Line();
                        myLine.Stroke = _brush;
                        myLine.X1     = edge.Twin().GetTarget().X();
                        myLine.X2     = edge.GetTarget().X();
                        myLine.Y1     = edge.Twin().GetTarget().Y();
                        myLine.Y2     = edge.GetTarget().Y();
                        myLine.HorizontalAlignment = HorizontalAlignment.Left;
                        myLine.VerticalAlignment   = VerticalAlignment.Center;
                        myLine.StrokeThickness     = 1;
                        this.canvas1.Children.Add(myLine);
                        edge = edge.Next();
                        if (edge == null || f == edge)
                        {
                            break;
                        }
                    }
                }
            }

            if (_showDelaunay)
            {
                ShowDelaunayEdges();
            }
        }
Esempio n. 2
0
        private void DrawWithoutRebuild()
        {
            this.canvas1.Children.Clear();
            foreach (var point in _pointList)
            {
                Point p = new Point(point.x, point.y);
                DrawPoint(p);
            }

            //only draw voronoi if ok
            if (_showVoronoi)
            {
                var circles = _voronoi.GetNodes();
                foreach (var ce in circles)
                {
                    HalfEdge edge = ce.halfEdge;


                    HalfEdge f = edge;
                    while (edge != null)
                    {
                        var myLine = new Line();
                        myLine.Stroke = _brush;
                        myLine.X1     = edge.Twin().GetTarget().X();
                        myLine.X2     = edge.GetTarget().X();
                        myLine.Y1     = edge.Twin().GetTarget().Y();
                        myLine.Y2     = edge.GetTarget().Y();
                        myLine.HorizontalAlignment = HorizontalAlignment.Left;
                        myLine.VerticalAlignment   = VerticalAlignment.Center;
                        myLine.StrokeThickness     = 1;
                        this.canvas1.Children.Add(myLine);
                        edge = edge.Next();
                        if (edge == null || f == edge)
                        {
                            break;
                        }
                    }
                }
            }
            if (_showDelaunay)
            {
                ShowDelaunayEdges();
            }
        }