create changelog entry
[debian/openrocket] / core / src / net / sf / openrocket / rocketcomponent / ReferenceType.java
1 /**
2  * 
3  */
4 package net.sf.openrocket.rocketcomponent;
5
6 public enum ReferenceType {
7         
8         NOSECONE {
9                 @Override
10                 public double getReferenceLength(Configuration config) {
11                         for (RocketComponent c: config) {
12                                 if (c instanceof SymmetricComponent) {
13                                         SymmetricComponent s = (SymmetricComponent)c;
14                                         if (s.getForeRadius() >= 0.0005)
15                                                 return s.getForeRadius() * 2;
16                                         if (s.getAftRadius() >= 0.0005)
17                                                 return s.getAftRadius() * 2;
18                                 }
19                         }
20                         return Rocket.DEFAULT_REFERENCE_LENGTH;
21                 }
22         },
23         
24         MAXIMUM {
25                 @Override
26                 public double getReferenceLength(Configuration config) {
27                         double r = 0;
28                         for (RocketComponent c: config) {
29                                 if (c instanceof SymmetricComponent) {
30                                         SymmetricComponent s = (SymmetricComponent)c;
31                                         r = Math.max(r, s.getForeRadius());
32                                         r = Math.max(r, s.getAftRadius());
33                                 }
34                         }
35                         r *= 2;
36                         if (r < 0.001)
37                                 r = Rocket.DEFAULT_REFERENCE_LENGTH;
38                         return r;
39                 }
40         }, 
41
42         CUSTOM {
43                 @Override
44                 public double getReferenceLength(Configuration config) {
45                         return config.getRocket().getCustomReferenceLength();
46                 }
47         };
48         
49         public abstract double getReferenceLength(Configuration rocket);
50 }