Makes consistent with BasicLandingStepper; more generally, if you don't need a more specialized derived from SimulationStatus (as is the case with RK4SimulationStepper), you don't need to create a new SimulationStatus when entering a new flight phase.
When no components are added, a rocket is showing -INFINITY for the
length. This is because the special case for length 0 is checking for
active stages, instead check the rocketBounds.isEmpty() to see if any
bounds have been added.
Fixes#714
Signed-off-by: Billy Olsen <billy.olsen@gmail.com>
TubeFinSets cause rocket size within the panel to be a bit off. Add
the BoxBounded interface to provide a tight BoundingBox.
Signed-off-by: Billy Olsen <billy.olsen@gmail.com>
Make the TubeFinSet RingInstanceable. This change updates the rendering
of both the 2D and 3D views to handle the RingInstanceable shapes. This
also updates the DocumentConfig to parse the new XML formats properly.
Signed-off-by: Billy Olsen <billy.olsen@gmail.com>
Modify code for getLongitudinalUnitInertia() and getRotationalUnitInertia() so similar functions have more similar code.
Add comments to clarify getLongitudinalUnitInertia() and getRotationalUnitInertia()
Remove extra multiplication by finCount in FinSet:getLongitudinalUnitInertia() and FinSet:getRotationalUnitInertia()
Restore check for single fin before transfering to center of fin set in FinSet:getRotationalUnitInertia()
I added parameter and return value desriptions for the method
StringUtil.isEmpty(String s).
Also, I added a test class StringUtilTest to test this method
(this method didn't have a test before).
The Desktop.open() method does not work within a Snap confined
application because it uses gnome apis which are restricted or
only defined within the snap itself. The confined snaps allow
for xdg-open to open the default application to handle opening
the specified mime-type (application/pdf) for print previews and
printing.
Signed-off-by: Billy Olsen <billy.olsen@gmail.com>
It turns out that the assumption of radial symmetry is absolutely pervasive in our CP calculations. Looking at FinSetCalc.calculateNonAxialForces(), we don't actually compute the CP of a fin -- we calculate its X value, and pin it to Y=Z=0.
The only exception to this is in BarrowmanCalculator.calculateNonAxialForces(), where the pinning only takes place if there are three or more fins in a FinSet. If we remove the test for number of fins in the FinSet, we are in essence making the assumption that there are more fins *somewhere* which will end up being radially symmetric.