1 package net.sf.openrocket.rocketcomponent;
3 import net.sf.openrocket.util.Coordinate;
6 public class CenteringRing extends RadiusRingComponent {
8 public CenteringRing() {
9 setOuterRadiusAutomatic(true);
10 setInnerRadiusAutomatic(true);
16 public double getInnerRadius() {
17 // Implement sibling inner radius automation
18 if (isInnerRadiusAutomatic()) {
20 for (RocketComponent sibling: this.getParent().getChildren()) {
21 if (!(sibling instanceof RadialParent)) // Excludes itself
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())
29 innerRadius = Math.max(innerRadius, ((InnerTube)sibling).getOuterRadius());
31 innerRadius = Math.min(innerRadius, getOuterRadius());
34 return super.getInnerRadius();
39 public void setOuterRadiusAutomatic(boolean auto) {
40 super.setOuterRadiusAutomatic(auto);
44 public void setInnerRadiusAutomatic(boolean auto) {
45 super.setInnerRadiusAutomatic(auto);
49 public String getComponentName() {
50 return "Centering ring";
54 public boolean isCompatible(Class<? extends RocketComponent> type) {