private static void PolaczKomorkiIRogiZDwukrawedzi(Dwukrawedz dwukrawedz)
 {
     dwukrawedz.Lewa.DodajRogi(dwukrawedz.Pierwszy, dwukrawedz.Drugi);
      dwukrawedz.Prawa.DodajRogi(dwukrawedz.Pierwszy, dwukrawedz.Drugi);
      dwukrawedz.Pierwszy.DodajKomorki(dwukrawedz.Lewa, dwukrawedz.Prawa);
      dwukrawedz.Drugi.DodajKomorki(dwukrawedz.Lewa, dwukrawedz.Prawa);
 }
        private void UtworzSkladoweDwukrawedzi(VoronoiEdge woro, Dwukrawedz dwukrawedz)
        {
            if (!_komorkiZVectorami.ContainsKey(woro.LeftData))
            _komorkiZVectorami[woro.LeftData] = new Komorka(woro.LeftData)
            {
               Skrajna = woro.LeftData.Skrajny
            };
             dwukrawedz.Lewa = _komorkiZVectorami[woro.LeftData];

             if (!_komorkiZVectorami.ContainsKey(woro.RightData))
            _komorkiZVectorami[woro.RightData] = new Komorka(woro.RightData)
            {
               Skrajna = woro.RightData.Skrajny
            };
             dwukrawedz.Prawa = _komorkiZVectorami[woro.RightData];

             if (!_rogiZVectorami.ContainsKey(woro.VVertexA))
            _rogiZVectorami[woro.VVertexA] = new Rog(woro.VVertexA);
             dwukrawedz.Pierwszy = _rogiZVectorami[woro.VVertexA];

             if (!_rogiZVectorami.ContainsKey(woro.VVertexB))
            _rogiZVectorami[woro.VVertexB] = new Rog(woro.VVertexB);
             dwukrawedz.Drugi = _rogiZVectorami[woro.VVertexB];
        }
        private Dwukrawedz UtworzDwukrawedz(VoronoiEdge woro)
        {
            var dwukrawedz = new Dwukrawedz();

             UtworzSkladoweDwukrawedzi(woro, dwukrawedz);
             PolaczKomorkiIRogiZDwukrawedzi(dwukrawedz);

             Mapa.Komorki = new HashSet<IKomorka>(_komorkiZVectorami.Values);
             Mapa.Rogi = new HashSet<IRog>(_rogiZVectorami.Values);

             return dwukrawedz;
        }