All Downloads are FREE. Search and download functionalities are using the official Maven repository.

eu.hansolo.steelseries.tools.Histogram Maven / Gradle / Ivy

package eu.hansolo.steelseries.tools;

import static java.lang.Math.round;


/**
 * @author Gerrit Grunwald 
 */
public class Histogram {

    private final float MIN_VALUE; // the minimum value of the gauge dial    
    private final float MINOR_TICKMARK_SPACING;  // the distance between two minor tickmarks
    private final double[] FREQUENCE;   // frequence[i] = # occurences of value i
    private double max;            // max frequency of any value
    private int n;

    // Create a new histogram. 
    public Histogram(final double MIN_VALUE, final double MAX_VALUE, final double MINOR_TICKMARK_SPACING) {
        this.MIN_VALUE = (float) MIN_VALUE;
        this.MINOR_TICKMARK_SPACING = (float) MINOR_TICKMARK_SPACING;
        n = (int) ((MAX_VALUE - MIN_VALUE) / MINOR_TICKMARK_SPACING);

        FREQUENCE = new double[n];
    }

    // Add one occurrence of the value i. 
    public void addDataPoint(final int INDEX) {
        FREQUENCE[INDEX > n - 1 ? n - 1 : INDEX]++;
        max = FREQUENCE[INDEX] > max ? FREQUENCE[INDEX] : max;
    }

    public void addDataPoint(final double VALUE) {
        int index = round((float) VALUE / MINOR_TICKMARK_SPACING) - round(MIN_VALUE / MINOR_TICKMARK_SPACING);
        addDataPoint(index);
    }

    public double[] getData() {
        return FREQUENCE.clone();
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy