Class RamanDouglasPeukerDataReducer

  • All Implemented Interfaces:
    RendererDataReducer

    public class RamanDouglasPeukerDataReducer
    extends java.lang.Object
    implements RendererDataReducer
    Filters data using Ramer-Douglas-Peucker algorithm with specified tolerance N.B. numberical complexity: average O(n log (n)) -> worst-case O(n^2)
    Author:
    Rzeźnik
    See Also:
    Ramer-Douglas-Peucker algorithm
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      double[][] filter​(double[][] data)  
      double getEpsilon()  
      protected double[][] ramerDouglasPeuckerFunction​(double[][] points, int startIndex, int endIndex)  
      int reducePoints​(double[] xValues, double[] yValues, double[] xPointErrorsPos, double[] xPointErrorsNeg, double[] yPointErrorsPos, double[] yPointErrorsNeg, java.lang.String[] styles, boolean[] pointSelected, int indexMin, int indexMax)
      Internal function to the ErrorDataSetRenderer arrays are cached copies and operations are assumed to be performed in-place (<-> for performance reasons/minimisation of memory allocation)
      void setEpsilon​(double epsilon)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • RamanDouglasPeukerDataReducer

        public RamanDouglasPeukerDataReducer()
    • Method Detail

      • setEpsilon

        public void setEpsilon​(double epsilon)
        Parameters:
        epsilon - maximum distance of a point in data between original curve and simplified curve
      • getEpsilon

        public double getEpsilon()
        Returns:
        epsilon
      • filter

        public double[][] filter​(double[][] data)
      • ramerDouglasPeuckerFunction

        protected double[][] ramerDouglasPeuckerFunction​(double[][] points,
                                                         int startIndex,
                                                         int endIndex)
      • reducePoints

        public int reducePoints​(double[] xValues,
                                double[] yValues,
                                double[] xPointErrorsPos,
                                double[] xPointErrorsNeg,
                                double[] yPointErrorsPos,
                                double[] yPointErrorsNeg,
                                java.lang.String[] styles,
                                boolean[] pointSelected,
                                int indexMin,
                                int indexMax)
        Description copied from interface: RendererDataReducer
        Internal function to the ErrorDataSetRenderer arrays are cached copies and operations are assumed to be performed in-place (<-> for performance reasons/minimisation of memory allocation)
        Specified by:
        reducePoints in interface RendererDataReducer
        Parameters:
        xValues - array of x coordinates
        yValues - array of y coordinates
        xPointErrorsPos - array of coordinates containing x+exp
        xPointErrorsNeg - array of coordinates containing x-exn
        yPointErrorsPos - array of coordinates containing x+eyp
        yPointErrorsNeg - array of coordinates containing x+eyn
        styles - point styles
        pointSelected - array containing the points that have been specially selected by the user
        indexMin - minimum index of those array that shall be considered
        indexMax - maximum index of those array that shall be considered
        Returns:
        effective number of points that remain after the reduction