Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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;
        }