diff --git a/core/src/net/sf/openrocket/rocketcomponent/RocketComponent.java b/core/src/net/sf/openrocket/rocketcomponent/RocketComponent.java index 7db79d321..cc7ccc3be 100644 --- a/core/src/net/sf/openrocket/rocketcomponent/RocketComponent.java +++ b/core/src/net/sf/openrocket/rocketcomponent/RocketComponent.java @@ -1722,6 +1722,10 @@ public abstract class RocketComponent implements ChangeSource, Cloneable, Iterab ringMass(outerRadius, innerRadius, x2 - x1, density)); } + protected static final double ringVolume( double outerRadius, double innerRadius, double length ) { + return ringMass( outerRadius, innerRadius, length, 1.0 ); + } + protected static final double ringMass(double outerRadius, double innerRadius, double length, double density) { return Math.PI * (MathUtil.pow2(outerRadius) - MathUtil.pow2(innerRadius)) * diff --git a/core/src/net/sf/openrocket/rocketcomponent/Transition.java b/core/src/net/sf/openrocket/rocketcomponent/Transition.java index fd52699b4..a0759e956 100644 --- a/core/src/net/sf/openrocket/rocketcomponent/Transition.java +++ b/core/src/net/sf/openrocket/rocketcomponent/Transition.java @@ -441,33 +441,33 @@ public class Transition extends SymmetricComponent { addBound(bounds, getLength() + aftShoulderLength, aftShoulderRadius); return bounds; } - + @Override - public double getComponentMass() { - double mass = super.getComponentMass(); + public double getComponentVolume() { + double volume = super.getComponentVolume(); if (getForeShoulderLength() > 0.001) { final double or = getForeShoulderRadius(); final double ir = Math.max(getForeShoulderRadius() - getForeShoulderThickness(), 0); - mass += ringMass(or, ir, getForeShoulderLength(), getMaterial().getDensity()); + volume += ringVolume( or, ir, getForeShoulderLength() ); } if (isForeShoulderCapped()) { final double ir = Math.max(getForeShoulderRadius() - getForeShoulderThickness(), 0); - mass += ringMass(ir, 0, getForeShoulderThickness(), getMaterial().getDensity()); + volume += ringVolume(ir, 0, getForeShoulderThickness() ); } if (getAftShoulderLength() > 0.001) { final double or = getAftShoulderRadius(); final double ir = Math.max(getAftShoulderRadius() - getAftShoulderThickness(), 0); - mass += ringMass(or, ir, getAftShoulderLength(), getMaterial().getDensity()); + volume += ringVolume(or, ir, getAftShoulderLength() ); } if (isAftShoulderCapped()) { final double ir = Math.max(getAftShoulderRadius() - getAftShoulderThickness(), 0); - mass += ringMass(ir, 0, getAftShoulderThickness(), getMaterial().getDensity()); + volume += ringVolume(ir, 0, getAftShoulderThickness() ); } - return mass; + return volume; } - + @Override public Coordinate getComponentCG() { Coordinate cg = super.getComponentCG(); diff --git a/core/test/net/sf/openrocket/rocketcomponent/SymmetricComponentVolumeTest.java b/core/test/net/sf/openrocket/rocketcomponent/SymmetricComponentVolumeTest.java index 340467a19..e539a84ea 100644 --- a/core/test/net/sf/openrocket/rocketcomponent/SymmetricComponentVolumeTest.java +++ b/core/test/net/sf/openrocket/rocketcomponent/SymmetricComponentVolumeTest.java @@ -59,8 +59,7 @@ public class SymmetricComponentVolumeTest extends BaseTestCase { System.out.println( volume + "\t" + mass ); - // FIXME - //assertEquals( volume, nc.getComponentVolume(), epsilonPercent * volume); + assertEquals( volume, nc.getComponentVolume(), epsilonPercent * volume); assertEquals( mass, nc.getMass(), epsilonPercent * mass ); } @@ -133,8 +132,7 @@ public class SymmetricComponentVolumeTest extends BaseTestCase { System.out.println( volume ); - // FIXME - //assertEquals( volume, nc.getComponentVolume(), epsilonPercent * volume); + assertEquals( volume, nc.getComponentVolume(), epsilonPercent * volume); assertEquals( mass, nc.getMass(), epsilonPercent * mass ); } @@ -196,8 +194,7 @@ public class SymmetricComponentVolumeTest extends BaseTestCase { System.out.println( volume ); - // FIXME - //assertEquals( volume, nc.getComponentVolume(), epsilonPercent * volume); + assertEquals( volume, nc.getComponentVolume(), epsilonPercent * volume); assertEquals( mass, nc.getMass(), epsilonPercent * mass ); } @@ -290,8 +287,7 @@ public class SymmetricComponentVolumeTest extends BaseTestCase { System.out.println( volume ); - // FIXME - //assertEquals( volume, nc.getComponentVolume(), epsilonPercent * volume); + assertEquals( volume, nc.getComponentVolume(), epsilonPercent * volume); assertEquals( mass, nc.getMass(), epsilonPercent * mass ); } @@ -386,8 +382,7 @@ public class SymmetricComponentVolumeTest extends BaseTestCase { System.out.println( volume ); - // FIXME - //assertEquals( volume, nc.getComponentVolume(), epsilonPercent * volume); + assertEquals( volume, nc.getComponentVolume(), epsilonPercent * volume); assertEquals( mass, nc.getMass(), epsilonPercent * mass ); }