private bool BuildTrack(IList <Point> monitoringData, int index, out List <Segment> track) { track = new List <Segment>(); var approximator = new Approximator(); Point last = monitoringData[index]; int errors = 0; int startCount = monitoringData.Count > _options.StartTrackCount ? _options.StartTrackCount : monitoringData.Count; for (int i = index + 1; i < monitoringData.Count; i++) { var current = monitoringData[i]; var segment = new Segment(last, current, _options); if (_filter.ValidateSegment(segment, track)) { var newSegment = approximator.Execute(segment, _options); AttachToTrack(track, newSegment); last = current; } else { errors++; if (i < startCount && errors > startCount * _options.MaxErrorsPercentage) { return(false); } } } return(true); }
private bool BuildTrack(IList<Point> monitoringData, int index, out List<Segment> track) { track = new List<Segment>(); var approximator = new Approximator(); Point last = monitoringData[index]; int errors = 0; int startCount = monitoringData.Count > _options.StartTrackCount ? _options.StartTrackCount : monitoringData.Count; for (int i = index + 1; i < monitoringData.Count; i++) { var current = monitoringData[i]; var segment = new Segment(last, current, _options); if (_filter.ValidateSegment(segment, track)) { var newSegment = approximator.Execute(segment, _options); AttachToTrack(track, newSegment); last = current; } else { errors++; if (i < startCount && errors > startCount * _options.MaxErrorsPercentage) return false; } } return true; }