Пример #1
0
        public bool Sąsiedztwo(ZdjecieZPozycją zp)
        {
            int X = Matematyka.Styczność2Obiektów(Obszar.X, Obszar.X + Obszar.Width, zp.Obszar.X, zp.Obszar.X + zp.Obszar.Width);
            int Y = Matematyka.Styczność2Obiektów(Obszar.Y, Obszar.Y + Obszar.Height, zp.Obszar.Y, zp.Obszar.Y + zp.Obszar.Height);

            return(X > NajbliszaOdległośćSąsiada && Y > NajbliszaOdległośćSąsiada);
        }
Пример #2
0
        private List <ZdjecieZPozycją> ZnajdźBliskoSiebie()
        {
            Graf <ZdjecieZPozycją> o = new Graf <ZdjecieZPozycją>();

            o.UstalWielkośćGrafu(ListaZZdjeciami.Count, ListaZZdjeciami.ToArray());
            for (int i = 0; i < ListaZZdjeciami.Count; i++)
            {
                for (int j = i + 1; j < ListaZZdjeciami.Count; j++)
                {
                    Rectangle a = ListaZZdjeciami[i].Obszar;
                    Rectangle b = ListaZZdjeciami[j].Obszar;
                    if (Matematyka.Styczność2Obiektów(a.Left, a.Right, b.Left, b.Right) > MaxymalnaDopuszczalnaOdległość || Matematyka.Podobność(a.Height, b.Height) > MinimalnePodobieństwoY)
                    {
                        o.PołączenieDwustrone(ListaZZdjeciami[i], ListaZZdjeciami[j]);
                    }
                }
            }

            int Najwieksze           = 0;
            List <ZdjecieZPozycją> z = null;

            foreach (List <ZdjecieZPozycją> item in o.ZnajdźObszary())
            {
                if (item.Count > Najwieksze)
                {
                    Najwieksze = item.Count;
                    z          = item;
                }
            }

            return(z);
        }
Пример #3
0
        public bool SprawdźPodobieństwo(Linika a)
        {
            int   WielkośćTego    = RóżnicaŚrednich();
            int   WielkośćTamtego = a.RóżnicaŚrednich();
            int   MniejszaRóźnica = WielkośćTamtego < WielkośćTego ? WielkośćTamtego : WielkośćTego;
            float fx = Matematyka.Styczność2Obiektów(SredniPoczątekY, SredniKoniecY, a.SredniPoczątekY, a.SredniKoniecY);

            fx /= MniejszaRóźnica;
            return(MinPodobieństwoLinijek < fx);
        }
Пример #4
0
 public void UsuńStycznePoPierszeństwie(List <int> Ekrema, int OdległośćUsuniecia)
 {
     for (int i = 0; i < Ekrema.Count; i++)
     {
         for (int j = i + 1; j < Ekrema.Count; j++)
         {
             if (Matematyka.Styczność2Obiektów(Ekrema[i], Ekrema[i] + OdległośćUsuniecia, Ekrema[j], Ekrema[j] + OdległośćUsuniecia) > -1)
             {
                 Ekrema.RemoveAt(i--);//ponieważ jest wcześniejszy
                 break;
             }
         }
     }
 }
Пример #5
0
            public void SpróbujDodać(ZdjecieZPozycją z)
            {
                foreach (var item in this)
                {
                    if (Matematyka.Styczność2Obiektów(item.Obszar.X, item.Obszar.Right, z.Obszar.X, z.Obszar.Right) < PrógPodobności)
                    {
                        return;
                    }
                }
                int PrógZTego = (int)(MinimalnaPodobność * z.Obszar.Width);

                if (PrógPodobności < PrógZTego)
                {
                    PrógPodobności = PrógZTego;
                }
                SumaPodobności += z.NajbliszePodobieństwo;
                Add(z);
            }
Пример #6
0
 public void UsuńStycznePoWartościach(int[] Tb, List <int> Ekrema, int OdległośćUsuniecia)
 {
     for (int i = 0; i < Ekrema.Count; i++)
     {
         for (int j = i + 1; j < Ekrema.Count; j++)
         {
             if (Matematyka.Styczność2Obiektów(Ekrema[i], Ekrema[i] + OdległośćUsuniecia, Ekrema[j], Ekrema[j] + OdległośćUsuniecia) > -1)
             {
                 if (Tb[i] < Tb[j])
                 {
                     Ekrema.RemoveAt(i--);//ponieważ jest wcześniejszy
                     break;
                 }
                 else
                 {
                     Ekrema.RemoveAt(j--);
                     continue;
                 }
             }
         }
     }
 }
Пример #7
0
        public void UsuńSzum()
        {
            float  SredniaWielkoścPróg            = ŚredniaWIelkość() * WielkośćSzumu;
            double WielkośćY                      = ListaZZdjeciami.Average(X => X.Obszar.Height) * WielkośćSzumuY;
            HashSet <ZdjecieZPozycją> DoUsuniecia = new HashSet <ZdjecieZPozycją>();

            foreach (var item in ListaZZdjeciami)
            {
                if (item.Obszar.Height < WielkośćY && SredniaWielkoścPróg > item.Obszar.Wielkośc())
                {
                    foreach (var item2 in ListaZZdjeciami)
                    {
                        if (item != item2 && Matematyka.Styczność2Obiektów(item.Obszar.Left, item.Obszar.Right, item2.Obszar.Left, item.Obszar.Right) > OdalenieDoUsuniecia)
                        {
                            goto Ko;
                        }
                    }
                    DoUsuniecia.Add(item);
                    Ko :;
                }
            }
            ListaZZdjeciami.RemoveAll(X => DoUsuniecia.Contains(X));
        }
Пример #8
0
        public float Styczność(Linika l)
        {
            int Wielkość = Max - Min;

            return(((float)Matematyka.Styczność2Obiektów(Min, Max, l.Min, l.Max)) / Wielkość);
        }