/** * This type was created in VisualAge. */ class GearChart { private double tireWidth = 0; private double tireSection = 0; private double tireDiameter = 0; private int[] gearSets = new int[14]; private double[] gearRatios = new double[7]; private double[][] mphAtRpm = new double[6][36]; private int maxg = 0; private boolean m928 = false; private String boxName = null; /** * GearChart constructor comment. */ public GearChart() { // initialize all variables tireWidth = 0.0; tireSection = 0.0; tireDiameter = 0.0; for (int i = 0; i < gearSets.length; i++) gearSets[i] = 0; for (int i = 0; i < gearRatios.length; i++) gearRatios[i] = 0.0; for (int i = 0; i < gearRatios.length - 1; i++) { for (int j = 0; j < 36; j++) mphAtRpm[i][j] = 0.0; } maxg = 0; m928 = false; } /** * This method was created in VisualAge. */ public void compute(boolean sets) throws BadGearChartValue { double numer, denom; // check for valid variables if (tireWidth < 100.0) // invalid tire width throw new BadGearChartValue("Tire Width Invalid"); if (tireSection < 10.0) // invalid tire section throw new BadGearChartValue("Tire Section Invalid"); if (tireDiameter < 10.0) // invalid tire diameter throw new BadGearChartValue("Tire Diameter Invalid"); if (sets) { // check for valid entries for (int i = 0; i < 8; i++) // check for at least four gears entered if (gearSets[i] == 0) throw new BadGearChartValue("Gear Set " + i + "Invalid"); if (gearSets[12] == 0 || gearSets[13] == 0) // check for non-zero final drive throw new BadGearChartValue("Final Drive Invalid"); // fill in gear ratio array for (int i = 0, j = 0; i < 7; i++) { if (gearSets[j] == 0) { // no more gears gearRatios[i] = 0.0; j += 2; continue; } numer = (double) gearSets[j]; denom = (double) gearSets[j+1]; if (m928 && i < 5) { // 1-4 drive through 5th numer = numer * (double) gearSets[9]; // multiply by 5th gear denominator denom = denom * (double) gearSets[8]; // nultiply by 5th gear numerator } gearRatios[i] = numer / denom; j += 2; } } else { for (int i = 0; i < 4; i++) if (gearRatios[i] < 0.01) throw new BadGearChartValue("Gear " + i + "Invalid"); } // calculate tire section decimal (from percentage) double ar = tireSection / 100.0; // check if a fifth and/or sixth gear has been entered maxg = 0; if (sets) { if (gearSets[8] == 0) maxg = 4; else if (gearSets[10] == 0) maxg = 5; else maxg = 6; } else { if (gearRatios[4] <= 0.01) maxg = 4; else if (gearRatios[5] <= 0.01) maxg = 5; else maxg = 6; } // main body of calculation to fill in mph values for each rpm from 1000 to 8000 // in increments of 200 rpm, for each gear. boolean adjustGrat = false; if (gearRatios[0] > 1.0) // 1st gear should be > 1, need to reverse ratio adjustGrat = true; for (int rpm = 1000, j = 0; rpm <= 8000; j++) { for (int i = 0; i < maxg; i++) { double grat = gearRatios[i]; double rpmile = (20168.0 / (((tireWidth * ar) / 12.7) + (tireDiameter - 0.62))); if (adjustGrat) mphAtRpm[i][j] = (((rpm * (1/grat) * (1/gearRatios[6])) / rpmile) * 60.0); else mphAtRpm[i][j] = (((rpm * grat * gearRatios[6]) / rpmile) * 60.0); } rpm += 200; } } /** * This method was created in VisualAge. * @return java.lang.String */ public String getBoxName() { return boxName; } /** * This method was created in VisualAge. * @return double * @param i int */ public double getGearRatios(int i) { return gearRatios[i]; } /** * This method was created in VisualAge. * @return int * @param i int */ public int getGearSets(int i) { return gearSets[i]; } /** * This method was created in VisualAge. * @return boolean */ public boolean getM928() { return m928; } /** * This method was created in VisualAge. * @return int */ public int getMaxg() { return maxg; } /** * This method was created in VisualAge. * @return double * @param row int * @param col int */ public double getMphAtRpm(int col, int row) { return mphAtRpm[col][row]; } /** * This method was created in VisualAge. * @return double */ public double getTireDiameter() { return tireDiameter; } /** * This method was created in VisualAge. * @return double */ public double getTireSection() { return tireSection; } /** * This method was created in VisualAge. * @return double */ public double getTireWidth() { return tireWidth; } /** * This method was created in VisualAge. * @param s java.lang.String */ public void setBoxName(String s) { boxName = new String(s); } /** * This method was created in VisualAge. * @param i int * @param value int */ public void setGearRatios(int i, double value) { if (i < gearRatios.length) gearRatios[i] = value; } /** * This method was created in VisualAge. * @param i int * @param value int */ public void setGearSets(int i, int value) { if (i < gearSets.length) gearSets[i] = value; } /** * This method was created in VisualAge. * @param flag boolean */ public void setM928(boolean flag) { m928 = flag; } /** * This method was created in VisualAge. * @param diameter double */ public void setTireDiameter(double diameter) { tireDiameter = diameter; } /** * This method was created in VisualAge. * @param section double */ public void setTireSection(double section) { tireSection = section; } /** * This method was created in VisualAge. * @param width double */ public void setTireWidth(double width) { tireWidth = width; } }