Exemplo n.º 1
0
        public float SprawdźNajbliszy(float[] tb, out T Najbliszy, out float[] Zw)
        {
            SortedList <float, MiejsceIOdległość> ms = new SortedList <float, MiejsceIOdległość>();

            Zw = new float[DzienikObiektów.Count];
            int NrPrzeglądanego = 0;

            foreach (var item in DzienikObiektów.Values)
            {
                var tmp = item.ZnajdźNajbliszy(tb);
                Zw[NrPrzeglądanego++] = tmp.Odległość;
                try
                {
                    ms.Add(tmp.Odległość, tmp);
                }
                catch
                {
                }
                if (ms.Count > IlośćPorównywanychPrzedZwróceniem)
                {
                    ms.RemoveAt(ms.Count - 1);
                }
            }
            KeyValuePair <float, MiejsceIOdległość> zw = ms.First();

            if (IlośćPorównywanychPrzedZwróceniem > 1)
            {
                foreach (var item in ms)
                {
                    if (NaTabliceFloat.PorównajMiedzyWzorcami(zw.Value.Mapa, item.Value.Mapa, tb) * WspółczynikRóżnicujący + zw.Key - item.Key > 0)
                    {
                        zw = item;
                    }
                }
            }
            Najbliszy = zw.Value.E.Wartość;
            return(zw.Key);
        }