220 Commits

Author SHA1 Message Date
JoePfeiffer
00abce96ff Add unit test "testPhantomTubes" comparing a simple 3FNC rocket against the same rocket, implemented by replacing the fins by three pods, putting a 0-diameter body tube on each pod, and putting one fin on each pod. 2020-03-25 14:59:52 -06:00
Daniel_M_Williams
c4cff028b4 [fixes #540] Fins are now created with a default count of 3 2020-03-21 19:02:39 -04:00
Daniel_M_Williams
65a4698d37 [fix][Intellij] Intellij now correctly builds jars and tests with all the new libraries 2020-03-19 18:19:07 -04:00
Billy Olsen
ddfe7c5c90 Add unit tests for FlightData
Add unit tests to cover some of the FlightData object and
some of the calculations. This specifically covers the bits
for FlightData.getGroundHitVelocity() where the ground hit
velocity is calculated from a FlightDataBranch consisting
of a series of data points and events occuring during flight.

Signed-off-by: Billy Olsen <billy.olsen@gmail.com>
2020-03-10 19:14:24 -07:00
Neil Balch
f26e3afcf3 Upgrade codebase to Java 11 2019-10-28 08:56:05 -07:00
Wes Cravens
02634fef6f
Merge pull request #533 from teyrana/fix_525_zero_diameter
Fixes #525; Main Figure display rocket diameter again.
2019-04-10 10:47:46 -05:00
Daniel_M_Williams
93a60c94f7 [fixes #525] main window (again) displays max diameter of centerline components
-- added FlightConfiguration::getCoreComponents() method
2019-03-31 09:34:08 -04:00
JoePfeiffer
efacebf5d8 Refactored MassCalculation.calculateAssembly() to separate calculation
of structure from calculation of motors, so mass and CG overrides
don't affect motors

Modified structure calculation so that when an override is in effect
and children are also being overridden, don't include root of tree as
an element in its own right when computing MOI.

Modified MassCalculatorTest to look for correct MOI value.
2019-03-07 18:05:44 -07:00
JoePfeiffer
eb3a129e67 Modify FinSetCalc to only produce result for one fin, to be summed in
BarrowmanCalculator

Modify BarrowmanCalculator to actually sum fin nonaxial forces

Modify FinSetCalcTest to sum fins in test3Fin() and test4Fin()

Extra bonus:  if at some point we allow fins to be other than radially
symmetrical, this code should still work (not tested)
2019-02-11 15:37:21 -07:00
JoePfeiffer
13f7c583fd Changed logging in BarrowmanCalculator.java to use stderr (easier to
use with unittest)

Added "End Plate Test" rocket to TestRockets and BarrowmanCalcTest
2019-02-04 11:34:35 -07:00
JoePfeiffer
2e7b3da1c0 Addresses Issue 481
Modify BarrowmanCalculator to use InstanceMap and InstanceContext to
iterate through all components.  This addresses 481 by actually
computing nonaxial forces for all components, instead of computing a
single instanceable component and using it as a representative of all
instances.

Modify calculateNonAxialForces to accept a Transformation argument, so
they can use rotations from instances (only actually affects
FinSetCalc and TubeFinSetCalc)
2019-01-30 15:10:41 -07:00
Wes Cravens
1abf0d3834
Merge pull request #513 from teyrana/refactor_instance_map
Refactor instance map
2019-01-26 07:14:39 -06:00
Wes Cravens
7b0724ab0a
Merge pull request #507 from teyrana/fix_387_cp
Increase accuracy of Center-Of-Pressure calculations
2019-01-26 07:13:47 -06:00
Daniel_M_Williams
efabe81790 [feat] FlightConfiguration may now generate an InstanceMap 2019-01-25 22:27:15 -05:00
Daniel M Williams
01fd20ebcc [refactor] added code to tests for negative inertia / intersection case 2019-01-02 19:23:11 -05:00
Daniel M Williams
cf4a935302 [test] Refactored FreeformFinSetTest to de-dup code execution. 2019-01-02 19:11:32 -05:00
Daniel_M_Williams
eed5863790 [fixes #387] Increases accuracy of Center-Of-Pressure calculations on instanced assemblies 2019-01-02 19:06:46 -05:00
Daniel_M_Williams
055132aa99 [test] expands aerodynamics unit-test to verify CP.y, and .z coordinates (of fins on boosters) 2019-01-02 19:06:46 -05:00
Daniel_M_Williams
70b7537614 [fixes #500] May now calculate CG for fins attached to zero-dimension mounts 2018-12-22 04:50:01 -05:00
Daniel_M_Williams
51418e34bc [fixes #387] Fixes one source of off-axis CP error 2018-12-01 13:05:21 -05:00
Daniel_M_Williams
72c6f1d64d [fixes #471] Refactoring FreeformFinSet to accept root points outside of the base. (which generates bridge-points on-load) 2018-11-26 13:53:51 -05:00
Daniel_M_Williams
8ab739a304 [fix] Fixed RocketComponent::setAfter() => added unittest in TestRocket => fixed IntegrationTest 2018-10-27 16:10:31 -04:00
Daniel_M_Williams
166d358c14 [Feature] Freeform Fins may not be attched to variable-shaped body components
- Fins may be attached to Transitions (and subclass NoseCones )

  [Fix] FinSet now implements the Ring-Instanceable interface
  [Refactor] Rocket inherits from ComponentAssembly instead of RocketComponent
  [Fix][Refactor] Fin tabs are now correctly validated upon change
  [Fix] Fin tabs are now corrected to be no-bigger-than their fins
  [Refactor] FinSet.getBodyRadius(..) now requires an argument
  [Fix] restricted fin tab positioning to be strictly top/middle/bottom
  [Refactor] Reimplement FreeformFinSet.setPoint(...)
  [Fix] Prevent Freeform Fins movement past parent's top/front
  [bugfix] Fins are now addable to transitions from the GUI
  [Fix] Fins, Transitions are now drawn correctly in fin-design window
  [Minor] Added makeV2 rocket to TestRockets

  [fix] getRootPoints() impl & test
2018-10-27 14:41:01 -04:00
Daniel_M_Williams
b268d3aa59 [refactor] RocketComponent positioning is now centralized in AxialMethod class
- also relaxed visibility for Component::setAxialMethod(...)
2018-10-27 14:41:01 -04:00
Daniel_M_Williams
8656dd287d [fix] Fixes repeated bug in Presets/Material Loading -- inconsistent test criteria 2018-09-09 12:37:29 -04:00
Daniel_M_Williams
8dc851e1db [fix] cleanup up unused imports in core/test/net/sf/openrocket/rocketcomponent/* 2018-09-03 22:51:00 -04:00
Daniel_M_Williams
e4b6b25a8b [fixes #419] Adding new points to FreeformFins are now placed at the mouse cursor 2018-08-26 17:31:46 -04:00
Daniel_M_Williams
f3dbceba37 [refactor] separated FinSet Tests into files corresponding to FinSet, TrapezoidalFinSet, and FreeformFinSet 2018-08-26 17:27:41 -04:00
Daniel_M_Williams
fab167abdc [fix] Fixes the way BarrowmanCalculator handles instancing, particularly for ComponentAssemblies 2018-08-26 16:59:01 -04:00
Daniel_M_Williams
e6b788cb0b [test] Moved fins from core-body to booster-body; (they are now doubly-instanced); adjusted tests to accept this. 2018-08-26 16:59:01 -04:00
Daniel_M_Williams
7e5ab5de32 [fix] Revert patch 6289aef0... which introduced simulation anomalies 2018-08-26 16:59:01 -04:00
Daniel_M_Williams
1418cb902b [fixes #431] Fins default to instance count / fin count == 1
- Fixed init bug
- added unittests for fin count loading/saving/creation
2018-08-26 16:59:01 -04:00
Daniel_M_Williams
20473dbf82 [fix] file version 108 now correctly loads angle-offsets for all ComponentAssemblies 2018-02-03 10:52:44 -05:00
Daniel_M_Williams
4a874b6ba9 [fix] Fixed OpenRocketSaverTest: minimum file version is now 108 2018-01-27 20:35:49 -05:00
Daniel_M_Williams
0498900078 [feat] Added Positioning methods and interfaces for Axial, Radius, and Angle directions
- also added minor angle-wrapping function to MathUtil
2018-01-21 12:06:25 -05:00
Daniel_M_Williams
23d7397fa6 [refactor] Pods and ParallelStages are now attached to BodyTubes *only* 2018-01-13 14:35:16 -05:00
Daniel_M_Williams
20eff575f4 [fix] Fix MassCalculator Unittests.
(Effectively a re-write of the MassCalculation code)
- renamed some mass calculator accesor methods
- MassData, InertiaMatrix refactored into 'RigidBody' class

- refactors out cache code to separate wrapper class
- calculations now use the Transform class to translate masses, CM, and MOI

- new class: MassCalculation
  - contains relevant context for a given calculation: tree-root, type, time, config
  - contains most actual calculation code
  - calculations are tracked with a context class: MassCalculation
2017-12-25 20:56:11 -05:00
Daniel_M_Williams
6289aef0ef [fix] Fixed aerodynamic unittests
-changed FinSetCalc to output per-instance CNa
2017-12-25 20:56:11 -05:00
Daniel_M_Williams
1fac8818b5 [fix][test] Fixed filename sanitation issue in OpenRocketSaverTest 2017-12-25 20:56:11 -05:00
Daniel_M_Williams
b84de68575 [fix][test] Fixed RocketTest, FlightConfigurationTest 2017-12-25 20:56:11 -05:00
Daniel_M_Williams
356ec09094 [fix][unittest] Fixed RocketTest (required fix to RocketComponent#getInstanceLocations()) 2017-12-25 20:56:11 -05:00
Daniel_M_Williams
23a488db48 [Resolves #369] Fixes 3d rendering for instanced components
This is a relatively major refactor / rewrite of the 3d rendering code.

- components geometries are rendered recursively
- components inherit parents' transformations ( translation, rotation)
- implemented Transformation#toGLMatrix()
  -- openrocket transformations can be directly fed into Java OpenGL

- added: FinSet#getBoundingBox()
- improved documentation on RocketComponent Location methods

- Refactor RocketRenderer:
  - render component trees recursively
  - removed RocketRendere#isDrawn(c) -- return true in all implementations

- Refactor ComponentRenderer
  - renamed variables to be more descriptive
  - changed RocketComponent#toAbsolute(...) => RocketComponent#getComponentLocations()
- Adjust FinRender Code:
  - Render Single Fin Instance at-a-time
  - takes in an angle for the instance
  - assumes the fin is already at it's desired position.
  - renames 'fs' -> 'finSet'
2017-11-05 17:56:14 -05:00
Daniel_M_Williams
9456c3a14a [fix][test] Expanded Transformation unit tests 2017-11-05 11:11:16 -05:00
Daniel_M_Williams
eb72329c58 [fix][refactor] simplified rocketfigure drawing code
Fixes Issues:
- https://github.com/openrocket/openrocket/issues/366
- https://github.com/openrocket/openrocket/issues/323

- RocketFigure no longer draws specific stages:
  Starts drawing rocket, and then propogates location, angle/transformation downwards
  - fixed active/inactive visibility toggling
  - Fixed Drowing Bounds for RocketFigure
    - Fix: FlightConfiguration#getBounds()
    - Fix: FinSet#getComponentBounds()
    - Fix: InnerTube#getInstanceCount()
    - Add: Coordinate#MIN, Coordinate#MAX
    - Add: net.sf.openrocket.util.BoundingBox

- RocketComponent:
  - implement: #getInstanceLocations() // relative to parent component
  - implement #getInstanceAngles()
  - implement: #getComponentLocations()  (Refactor/rename of #getLocations() )

- Implement <x>#getInstanceOffsets() // relative to component-reference-point
  - FinSet
  - PodSet
  - ParallelStage
  - RailButton
  - InnerTube:

- fixed drawing shapes:
  - TubeShapes
  - BodyTube
  - Launch Lug
  - RingComponent (InnerTube, EngineBlock, Coupler)
  - Finset
  - Transition
  - Rail Button
2017-10-28 13:41:51 -04:00
Daniel_M_Williams
3e869e015b [Fix] Modified masscalc test for different active stages. 2016-12-23 18:32:15 -05:00
Kevin Ruland
f2d76e3b2b Merge remote-tracking branch 'upstream/master' into unstable 2016-10-23 13:50:08 -05:00
Kevin Ruland
d3240ec1a4 Merge remote-tracking branch 'upstream/unstable' into unstable 2016-10-23 13:16:06 -05:00
Daniel_M_Williams
02aefc6b6e [fix] Fixed RocketTest Failure 2016-10-22 22:58:41 -04:00
Kevin Ruland
6532743c3f Revising previous commit to include the missing files. 2016-10-10 19:50:17 -05:00
kruland2607
05d439bd1e Merge pull request #280 from teyrana/axialoffsetfix
[Refactor] Replaced redundant method: 'PositionValue(...)' with 'AxialOffset(...)'
2016-10-07 19:28:17 -05:00