Пример #1
0
        /// <summary>
        /// Vypočítá vzdálenost dvou shluků. Nejmenší vzdálenost mezi body obou shluků se bere jako vzdálenost dvou shluků.
        /// </summary>
        /// <param name="shluk1">První shluk</param>
        /// <param name="shluk2">Druhý shluk</param>
        /// <returns></returns>
        public static int VzdalenostShluku(Shluk shluk1, Shluk shluk2)
        {
            if (shluk1 == null || shluk2 == null)
            {
                return(-1);
            }

            int nejmensiVzdalenost = 99999;
            int soucasnaVzdalenost = nejmensiVzdalenost;

            for (int i = 0; i < shluk1.body.Count; i++)     //Procházení bodů ze shluku 1
            {
                for (int j = 0; j < shluk2.body.Count; j++) //procházení bodů ze shluku 2
                {
                    //Vypočítá se vzdálenost a popřípadě se uloží
                    soucasnaVzdalenost = Bod.VypoctiVzdalenost(shluk1.body[i], shluk2.body[j]);
                    if (soucasnaVzdalenost < nejmensiVzdalenost)
                    {
                        nejmensiVzdalenost = soucasnaVzdalenost;
                    }
                }
            }

            return(nejmensiVzdalenost);
        }
Пример #2
0
        /// <summary>
        /// Vypočítá vzdálenost dvou bodů
        /// </summary>
        /// <param name="bod1">První bod</param>
        /// <param name="bod2">Druhý bod</param>
        /// <returns></returns>
        public static int VypoctiVzdalenost(Bod bod1, Bod bod2)
        {
            //Kontrola jestli body existují
            if (bod1 == null || bod2 == null)
            {
                return(-1);
            }

            //Vzorec na výpočet vzdálenost dvou 2D bodů
            int vzdalenost = (int)Math.Sqrt(Math.Pow(bod2.X - bod1.X, 2) + Math.Pow(bod2.Y - bod1.Y, 2));

            return(vzdalenost);
        }
Пример #3
0
 /// <summary>
 /// Vytvoří jednoprvkový shluk.
 /// </summary>
 /// <param name="bod">Shluk pro vytvoření potřebuje alespoň jeden prvek který pak bude obsahovat</param>
 /// <param name="id">Každý shluk má svoje unikátní id. Ikdyž se nekontroluje jestli je unikátní</param>
 /// <param name="rnd">Každý shluk má svoji barvu. Ta se vytváří náhodně a potřebuje proto poskytnout třídu random</param>
 public Shluk(Bod bod, int id, Random rnd)
 {
     barva = Color.FromArgb(rnd.Next(255), rnd.Next(255), rnd.Next(255));
     body.Add(bod);
     this.id = id;
 }