Ejemplo n.º 1
0
        private void Dt_Tick(object sender, EventArgs e)
        {
            List <Centroid> cc = _alg.NextStep(out _conv);

            _centroids = cc;

            if (_conv)
            {
                _dt.Stop();
                UpdateDataGrids();
            }
            else
            {
                Ellipse ell;
                cnvGraphic.Children.Clear();
                foreach (KMeans.Point p in _points)
                {
                    DrawPoint(p.Coordinates[0], p.Coordinates[1]);

                    /*
                     * ell = new Ellipse { Width = _pointRadius, Height = _pointRadius, Fill = _pointFillColor, StrokeThickness = _pointThickness, Stroke = _pointStrokeColor };
                     * cnvGraphic.Children.Add(ell);
                     * Canvas.SetTop(ell, p.Coordinates[1] - _pointRadius / 2);
                     * Canvas.SetLeft(ell, p.Coordinates[0] - _pointRadius / 2);
                     */
                }
                int counter = 0;
                foreach (Centroid c in _centroids)
                {
                    if (_differciateCentroids)
                    {
                        ell = new Ellipse {
                            Width = _centroidRadius, Height = _centroidRadius, Fill = _centroidsFillAndStrokeColors[counter], StrokeThickness = _centroidThickness, Stroke = _centroidsFillAndStrokeColors[counter]
                        };
                    }
                    else
                    {
                        ell = new Ellipse {
                            Width = _centroidRadius, Height = _centroidRadius, Fill = _centroidFillColor, StrokeThickness = _centroidThickness, Stroke = _centroidStrokeColor
                        };
                    }

                    DrawCentroid(c.Coordinates[0], c.Coordinates[1], ell);

                    /*
                     * cnvGraphic.Children.Add(ell);
                     *                  Canvas.SetTop(ell, c.Coordinates[1] - _centroidRadius / 2);
                     *                  Canvas.SetLeft(ell, c.Coordinates[0] - _centroidRadius / 2);
                     */


                    Line l;
                    foreach (KMeans.Point p in c.MyPoints)
                    {
                        if (_differciateCentroids)
                        {
                            l = new Line {
                                Stroke = _centroidsFillAndStrokeColors[counter], StrokeThickness = _lineThickness
                            };
                        }
                        else
                        {
                            l = new Line {
                                Stroke = _lineStrokeColor, StrokeThickness = _lineThickness
                            };
                        }
                        DrawLine(c.Coordinates[0], c.Coordinates[1], p.Coordinates[0], p.Coordinates[1], l);

                        /*
                         *                      l.X1 = c.Coordinates[0];
                         *                      l.Y1 = c.Coordinates[1];
                         *                      l.X2 = p.Coordinates[0];
                         *                      l.Y2 = p.Coordinates[1];
                         *                      cnvGraphic.Children.Add(l);
                         */
                    }
                    counter++;
                }
            }
        }