Exemple #1
0
        private List <VECTOR> preprocessOnly()
        {
            // Access the dependency properties outside the stopwatch area
            FLOAT           linDist  = ((FLOAT)PointDistance).clamp((FLOAT)POINT_DIST_MIN, (FLOAT)POINT_DIST_MAX);
            FLOAT           rdpError = ((FLOAT)RdpError).clamp((FLOAT)RDP_ERROR_MIN, (FLOAT)RDP_ERROR_MAX);
            PreprocessModes ppMode   = PreprocessMode;
            List <VECTOR>   inPts    = _points;

            _stopwatch.Reset();
            _stopwatch.Start();
            List <VECTOR> ppPts = preprocess(inPts, ppMode, linDist, rdpError);

            _stopwatch.Stop();
            LastFitTime = ppMode == PreprocessModes.NONE ? double.NaN : _stopwatch.Elapsed.TotalMilliseconds;
            PointCount  = inPts.Count + "/" + ppPts.Count;
            return(ppPts);
        }
Exemple #2
0
        private static List <VECTOR> preprocess(List <VECTOR> pts, PreprocessModes ppMode, FLOAT linDist, FLOAT rdpError)
        {
            switch (ppMode)
            {
            case PreprocessModes.NONE:
                return(pts);

            case PreprocessModes.LINEAR:
                return(CurvePreprocess.Linearize(pts, linDist));

            case PreprocessModes.RDP:
                return(CurvePreprocess.RdpReduce(pts, rdpError));

            default:
                _log.error("Invalid PreprocessMode");
                return(CurvePreprocess.RemoveDuplicates(pts));
            }
        }
Exemple #3
0
        private CubicBezier[] fitCurves()
        {
            // Access the dependency properties outside the stopwatch area
            FLOAT           fitError = ((FLOAT)FittingError).clamp((FLOAT)FIT_ERROR_MIN, (FLOAT)FIT_ERROR_MAX);
            FLOAT           linDist  = ((FLOAT)PointDistance).clamp((FLOAT)POINT_DIST_MIN, (FLOAT)POINT_DIST_MAX);
            FLOAT           rdpError = ((FLOAT)RdpError).clamp((FLOAT)RDP_ERROR_MIN, (FLOAT)RDP_ERROR_MAX);
            PreprocessModes ppMode   = PreprocessMode;
            List <VECTOR>   inPts    = _points;

            _stopwatch.Reset();
            _stopwatch.Start();
            List <VECTOR> ppPts = preprocess(inPts, ppMode, linDist, rdpError);

            CubicBezier[] curves = CurveFit.Fit(ppPts, fitError);
            _stopwatch.Stop();
            LastFitTime = _stopwatch.Elapsed.TotalMilliseconds;
            PointCount  = inPts.Count + "/" + ppPts.Count;
            return(curves);
        }