1 package org.wcb.e6b;
2
3 /**
4 * Created by IntelliJ IDEA.
5 * User: wbogaardt
6 * Date: Aug 23, 2005
7 * Time: 7:02:17 PM
8 * To change this template use File | Settings | File Templates.
9 */
10
11 public class DensityAltitude extends AbstractE6B {
12
13 private int prAltitude;
14 private double centigradeTemp;
15 private double densityAltitude;
16 private int fahrenheitTemp;
17
18 /**
19 * The current pressure altitude setting.
20 * @return Pressure altitdue in feet
21 */
22 public int getPressureAltitude() {
23 return prAltitude;
24 }
25
26 /**
27 * Sets the pressure altitude.
28 * @param altitude in feet
29 */
30 public void setPressureAltitude(int altitude) {
31 this.prAltitude = altitude;
32 }
33
34 /**
35 * the Temperature in fahrenheit.
36 * @return current temp
37 */
38 public int getFahrenheitTemp() {
39 return fahrenheitTemp;
40 }
41
42 /**
43 * Sets the current temperature.
44 * @param temp the current fahrenheit temp
45 */
46 public void setFahrenheitTemp(int temp) {
47 this.fahrenheitTemp = temp;
48 }
49
50 /**
51 * The centigrade temperature set.
52 * @return current temp set.
53 */
54 public double getCentigradeTemp() {
55 return centigradeTemp;
56 }
57
58 /**
59 * Get the current centigrade temp.
60 * @param centigrade temp current
61 */
62 public void setCentigradeTemp(double centigrade) {
63 this.centigradeTemp = centigrade;
64 }
65
66 /**
67 * called after the above methods set.
68 */
69 public void calculate() {
70 if (fahrenheitTemp > 0) {
71 setCentigradeTemp((int) E6bConverter.fahrenheitToCelsius(fahrenheitTemp));
72 }
73 double tempKelvineConversion = E6bConverter.centigradeToKelvin(centigradeTemp);
74 double tempSpread = 273.15 + (15 - (.0019812 * prAltitude));
75 densityAltitude = prAltitude + (tempSpread / .0019812) * (1 - (Math.pow(tempSpread / tempKelvineConversion, .2349690)));
76 //densityAltitude = prAltitude + (272.30 / .0019812) * (1 - Math.pow((272.30 / kelvineConversion), 0.2349690));
77 }
78
79 /**
80 * the result value after calling calculate().
81 * @return the density altitude.
82 */
83 public long densityAltitude() {
84 return Math.round(densityAltitude);
85 }
86
87 }