private void ApplyModel(List<double> model, SequencedTrack sTrack)
 {
     List<double> inverted = new List<double>();
     int minus = 1;
     for (int i = model.Count - 1; i >= 0; i--)
     {
         inverted.Add(minus * model[i]);
         minus *= -1;
     }
     TrackItem[] items = sTrack.Track.TrackItems;
     int iLen=items.Length;
     for (int i = 0; i < iLen; i += 2)
     {
         double res = 0;
         for (int j = 0; j < inverted.Count; j++)
             res += inverted[j] * items[(i + j) % iLen].Latitude;
         if (Math.Abs(res) < 0.0001)
         {
             sTrack.AddSequence(i, model.Count,model.Count);
             sTrack.AddSequence((i + 1) % iLen, model.Count,model.Count);
         }
     }
 }
 public SequencedTrack SequenceTrack(Track track)
 {
     curLen = Parameters[0].IntegerValue;
     minDist = Parameters[1].IntegerValue;
     List<MatchCount> seqList = new List<MatchCount>();
     SequencedTrack seqTrack = new SequencedTrack(track, "Прямой поиск");
     for (int i = 0; i < track.TrackItems.Length - curLen - 1; i++)
     {
         List<TrackItem> matches = new List<TrackItem>();
         for (int j = 0; j < track.TrackItems.Length - curLen; j++)
         {
             if (Compare(track, i, j))
                 seqTrack.AddSequence(i, j + 1, curLen);
         }
     }
     return seqTrack;
 }