Feature roadmap for OpenRocket 1.0 ---------------------------------- Must-have: - Go through thrust curves and select best ones - Updated splash screen Maybe: Postponed: ---------- Memory usage: - Reduce memory leakage when closing windows - Make simulation data immutable, don't store copies in undo/redo - Profile memory usage during operation (send data to server?) Logging: - Implement a central logging system - takes messages with different priorities - converts them into LogLine's that are passed to log handlers - printing log handler and storing log handler - bug reports to contain last ~50 log lines - LogLine - contains TraceException for log position information - contains sequential number - log storing handler stores separately debug and info/warn levels - remove all System.out/err writing, replace with logging Motor support: - Integration with thrustcurve.org (syncing?) - Reading thrust curves from external directory - Plot motor thrust curve - Water rocket modelling Optimization: - Automatic general rocket optimizer (for altitude, velocity, duration etc) that allows changing any rocket parameters for optimization - Analysis of various motors for the rocket. Search all motors by diameter, impulse range, manufacturer, simulate them and present the results. Running: - Windows executable wrapper (launch4j) - Allow only one instance of OpenRocket running (RMI communication) - Running/simulating from command line UI issues: - Only schedule rocket figure update instead of each time updating it - Importing flight data (file/altimeter) - Saving as SVG - Implement setDefaults() method for RocketComponent - BUG: Inner tube cluster rotation, edit with spinner arrows, slider wrong - NAR/CNES/etc competition validity checking - Print support - Drag and drop of components / other table items - Ctrl+scroll wheel to zoom in/out - Move components by dragging on the figure - Progress bar during startup Simulation: - Landing scatter plots - Simulate other branches - Remove need for 5m launch rod in real-time simulations (reduces apogee) A simulation listener that checks when sufficient velocity has been reached? Structural analysis: - Run a simulation with each step doing a component analysis - Compute the force between different components: - between body components (pushing against and pulling apart) - inner tubes and the parent body tubes - lateral forces on fins - individual fin normal forces? - Take into account acceleration, drag, gravity - Plot forces against time Component support: - Screw weights for nose cones / transitions - Support for external pods - Support for tube fins File support: - Reading (and writing) .RKT format Refactoring tasks: - Move startup class to src14 directory, remove reflection - Remove database etc. initialization from class initialization, create separate set of test motors - Extract event rules and data saving from Simulator into listeners - How to handle different simulation situations elegantly (launch rod, free flight, recovery) - Change SimulationStatus to include methods for obtaining basic position (maybe even change to an interface, implements Cloneable) - Modularize calculators, simulators, atmospheric conditions, etc. - Change Motor (immutable) to be a factory of MotorInstance (stateful) Done: ----- - Search field in motor selection dialog - Motor selection/editing from Edit configurations dialog - Change FreeformFinSet to throw checked exceptions - Fix engine block icons - Exporting flight data - Split cluster into separate components - Create application icon and take into use - Error dialog for uncaught exceptions - Check where plot data ends (all rest NaN) - Example rocket designs (hybrid w/ dual deployment, staged rocket) - Better error/warning dialogs when reading/writing files - Store custom materials - Read more thrust curve formats - Showing events in plots - Table boolean selecting by clicking label - Test automatic exception reporting (for 0.9.3) - Draw remaining event icons (for 0.9.3) - Update "About" dialog with icon and source info In 0.9.4: - Through-the-wall fins - Make ThicknessRingComponent implement RadialParent and allow attaching components to a TubeCoupler (for 0.9.4) - Save file as oldest OpenRocket format possible (for 0.9.4) - Non-exception bug handling - JTree text is cropped unnecessarily - Allow editing user-defined materials - [BUG] All configuration dialogs too high - Simulation plot dialog forces dialog one button row too high (All/None) - Add styrofoam and depron materials - Inform user about software updates In 0.9.5: - Add label to motor panel to tell current number of stages In 0.9.6: - Take into account all fins in interference effects - Two-fin rocket stable at large number of roll angles?! - Add slight randomness to yaw moment - Update simulation time step filtering from exponential MA to exponential growth until time step is reached (t1 = 1.5*t0) - Limit time step during while on launch rod - Re-investigate 15% reduction of three-fin CNa