Initial commit
[debian/openrocket] / src / net / sf / openrocket / rocketcomponent / CenteringRing.java
1 package net.sf.openrocket.rocketcomponent;
2
3 import net.sf.openrocket.util.Coordinate;
4
5
6 public class CenteringRing extends RadiusRingComponent {
7
8         public CenteringRing() {
9                 setOuterRadiusAutomatic(true);
10                 setInnerRadiusAutomatic(true);
11                 setLength(0.002);
12         }
13         
14         
15         @Override
16         public double getInnerRadius() {
17                 // Implement sibling inner radius automation
18                 if (isInnerRadiusAutomatic()) {
19                         innerRadius = 0;
20                         for (RocketComponent sibling: this.getParent().getChildren()) {
21                                 if (!(sibling instanceof RadialParent))  // Excludes itself
22                                         continue;
23
24                                 double pos1 = this.toRelative(Coordinate.NUL, sibling)[0].x;
25                                 double pos2 = this.toRelative(new Coordinate(getLength()), sibling)[0].x;
26                                 if (pos2 < 0 || pos1 > sibling.getLength())
27                                         continue;
28                                 
29                                 innerRadius = Math.max(innerRadius, ((InnerTube)sibling).getOuterRadius());
30                         }
31                         innerRadius = Math.min(innerRadius, getOuterRadius());
32                 }
33                 
34                 return super.getInnerRadius();
35         }
36
37         
38         @Override
39         public void setOuterRadiusAutomatic(boolean auto) {
40                 super.setOuterRadiusAutomatic(auto);
41         }
42         
43         @Override
44         public void setInnerRadiusAutomatic(boolean auto) {
45                 super.setInnerRadiusAutomatic(auto);
46         }
47         
48         @Override
49         public String getComponentName() {
50                 return "Centering ring";
51         }
52
53         @Override
54         public boolean isCompatible(Class<? extends RocketComponent> type) {
55                 return false;
56         }
57
58 }