package com.austinv11.collectiveframework.utils.math; /** * This is a helper object to handle ratios (i.e. 3:1, 2:5, etc) */ public class Ratio { private double[] originalValues; private double[] reducedValues; private double lcd; /** * Constructs a ratio * @param values The ratio values */ public Ratio(double... values) { originalValues = values; reducedValues = new double[values.length]; double lcd = MathUtils.findLowestCommonDenominator(values); this.lcd = lcd; if (Double.isNaN(lcd)) reducedValues = originalValues; else { for (int i = 0; i < values.length; i++) reducedValues[i] = values[i]/lcd; } } /** * Gets the provided ratio * @return The provided ratio */ public double[] getOriginalRatio() { return originalValues; } /** * Gets the ratio reduced by the lcd (if it exists) * @return The reduced ratio */ public double[] getReducedRatio() { return reducedValues; } /** * Retrieves the lcd for the ratio * @return The lcd */ public double getLCD() { return lcd; } }