1 package org.wcb.e6b;
2
3
4
5
6
7
8
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
20
21
22 public int getPressureAltitude() {
23 return prAltitude;
24 }
25
26
27
28
29
30 public void setPressureAltitude(int altitude) {
31 this.prAltitude = altitude;
32 }
33
34
35
36
37
38 public int getFahrenheitTemp() {
39 return fahrenheitTemp;
40 }
41
42
43
44
45
46 public void setFahrenheitTemp(int temp) {
47 this.fahrenheitTemp = temp;
48 }
49
50
51
52
53
54 public double getCentigradeTemp() {
55 return centigradeTemp;
56 }
57
58
59
60
61
62 public void setCentigradeTemp(double centigrade) {
63 this.centigradeTemp = centigrade;
64 }
65
66
67
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
77 }
78
79
80
81
82
83 public long densityAltitude() {
84 return Math.round(densityAltitude);
85 }
86
87 }