예제 #1
0
        private void Btn_PaintDots_Click(object sender, RoutedEventArgs e)
        {
            if (Int32.Parse(Tb_DotsNumber.Text) < 3 || Int32.Parse(Tb_DotsNumber.Text) > 999)
            {
                MessageBox.Show(messageBoxText: "Можно построить случайно 3-999 точек", caption: "Error", button: MessageBoxButton.OK, icon: MessageBoxImage.Hand);
                return;
            }
            SpacePoint = new AlgorithMCH(Int32.Parse(Tb_DotsNumber.Text));
            myDots     = new Ellipse[SpacePoint.n];
            Random rand = new Random();

            for (int i = 0; i < SpacePoint.n; i++)
            {
                bool tooClose = false; //флаг, показывает если центры точек слишком близко
                do
                {
                    int x = rand.Next(-450, 450);
                    int y = rand.Next(-450, 450);
                    SpacePoint.CoordOfDots[i, 0] = x;
                    SpacePoint.CoordOfDots[i, 1] = y;
                    tooClose = false;
                    if (i == 0)
                    {
                        break;
                    }
                    for (int j = 0; j < i; j++)
                    {//сравниваем все точки с новой, если расстояне <60 - tooClose
                        if (SpacePoint.VectorModule(SpacePoint.CoordOfDots[j, 0] - SpacePoint.CoordOfDots[i, 0], SpacePoint.CoordOfDots[j, 1] - SpacePoint.CoordOfDots[i, 1]) < 15)
                        {
                            tooClose = true;
                            break;
                        }
                    }
                } while (tooClose);
                myDots[i] = new Ellipse
                {
                    Margin = new Thickness(SpacePoint.CoordOfDots[i, 0], 0, 0, SpacePoint.CoordOfDots[i, 1]),
                    Width  = 6,
                    Height = 6,
                    Fill   = Brushes.Purple,
                    Stroke = Brushes.Red,
                };
                WorkGrid.Children.Add(myDots[i]);
            }
            Btn_PaintDots.IsEnabled = false;
            Tb_DotsNumber.IsEnabled = false;
            Btn_MCHBuild.IsEnabled  = true;
            rb_FileDots.IsEnabled   = false;
        }
예제 #2
0
        private void Btn_DotsFromFile_Click(object sender, RoutedEventArgs e)
        {
            StreamReader fileIn         = new StreamReader(Tb_FileName.Text);
            int          CountityOfDots = int.Parse(fileIn.ReadLine());

            if (CountityOfDots < 3 || CountityOfDots > 999)
            {
                MessageBox.Show(messageBoxText: "Можно построить случайно 3-999 точек", caption: "Error", button: MessageBoxButton.OK, icon: MessageBoxImage.Hand);
                return;
            }
            string str = "";

            str = fileIn.ReadToEnd();
            fileIn.Close();
            string[] strDots = str.Split(new char[] { '\n' }, StringSplitOptions.RemoveEmptyEntries);

            SpacePoint = new AlgorithMCH(CountityOfDots);
            myDots     = new Ellipse[SpacePoint.n];

            for (int i = 0; i < SpacePoint.n; i++)
            {
                string[] OrdAbs = strDots[i].Split(new char[] { ' ', '\t' }, StringSplitOptions.RemoveEmptyEntries);
                SpacePoint.CoordOfDots[i, 0] = int.Parse(OrdAbs[0]);
                SpacePoint.CoordOfDots[i, 1] = int.Parse(OrdAbs[1]);

                myDots[i] = new Ellipse
                {
                    Margin = new Thickness(SpacePoint.CoordOfDots[i, 0], 0, 0, SpacePoint.CoordOfDots[i, 1]),
                    Width  = 6,
                    Height = 6,
                    Fill   = Brushes.Purple,
                    Stroke = Brushes.Red,
                };
                WorkGrid.Children.Add(myDots[i]);
            }
            Btn_PaintDots.IsEnabled    = false;
            Btn_DotsFromFile.IsEnabled = false;
            Tb_DotsNumber.IsEnabled    = false;
            Btn_MCHBuild.IsEnabled     = true;
            rb_RandomDots.IsEnabled    = false;
        }