Ejemplo n.º 1
0
        private void btnStart_Click(object sender, RoutedEventArgs e)
        {
            int  nc;
            bool ok = int.TryParse(txtCentroidN.Text, out nc); //va messo a posto

            if (!ok || nc <= 0)
            {
                MessageBox.Show("Inserire un numero intero maggiore di 0!", "Errore", MessageBoxButton.OK, MessageBoxImage.Error);
                return;
            }
            try
            {
                if (_mode == 0)
                {
                    _differciateCentroids = (bool)chbDiff.IsChecked;

                    _timerSecondsDrawingLength = sldVel.Value;
                    _pointRadius    = sldGP.Value;
                    _centroidRadius = sldGC.Value;

                    _alg = new KMeansAlgorithm(nc);
                    foreach (KMeans.Point p in _points)
                    {
                        _alg.AddPoint(p);
                    }
                    foreach (Centroid c in _centroids)
                    {
                        _alg.AddCentroid(c);
                    }

                    if (_differciateCentroids)
                    {
                        GenerateRandomCentroidsColor(nc);
                    }

                    _alg.InitializeAlgorithm();

                    _dt          = new DispatcherTimer();
                    _dt.Interval = TimeSpan.FromSeconds(_timerSecondsDrawingLength);
                    _dt.Tick    += Dt_Tick;
                    _dt.Start();
                }
                else if (_mode == 1)
                {
                    int  k;
                    bool ok2 = int.TryParse(txtK.Text, out k); //va messo a posto
                    if (!ok2 || k <= 0)
                    {
                        MessageBox.Show("Inserire un numero intero maggiore di 0!", "Errore", MessageBoxButton.OK, MessageBoxImage.Error);
                        return;
                    }

                    _alg = new KMeansAlgorithm(nc);
                    foreach (KMeans.Point p in _points)
                    {
                        _alg.AddPoint(p);
                    }
                    foreach (Centroid c in _centroids)
                    {
                        _alg.AddCentroid(c);
                    }

                    _centroids = _alg.CalculateResult();
                    UpdateDataGrids();
                    cnvGraphic.Children.Clear();
                    _pointsColorList  = ColorCalculatedPoints();
                    _calculatedAndSet = true;

                    _knnAlg = new KNNAlgorithm(k, _centroids);
                }
            }
            catch (KMeansException ex)
            {
                MessageBox.Show(ex.Message, "Algorithm error", MessageBoxButton.OK, MessageBoxImage.Error);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }