<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://wiki.openrocket.info/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Plaa</id>
	<title>OpenRocket wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.openrocket.info/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Plaa"/>
	<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/Special:Contributions/Plaa"/>
	<updated>2026-06-04T17:29:55Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Main_Page&amp;diff=34133</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Main_Page&amp;diff=34133"/>
		<updated>2020-09-27T11:59:26Z</updated>

		<summary type="html">&lt;p&gt;Plaa: Update home page url&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the wiki for OpenRocket, an open-source model rocket simulator.  The OpenRocket documentation is written collaboratively here.&lt;br /&gt;
&lt;br /&gt;
The main web site for OpenRocket is &#039;&#039;&#039;http://openrocket.info/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== OpenRocket Documentation ===&lt;br /&gt;
&lt;br /&gt;
* [[User&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
* [[Feature comparison]]&lt;br /&gt;
&lt;br /&gt;
* [[FAQ|Frequently asked questions]]&lt;br /&gt;
&lt;br /&gt;
* [[Tips]]&lt;br /&gt;
&lt;br /&gt;
* [[List of useful custom expressions]]&lt;br /&gt;
&lt;br /&gt;
* [[Scripting with Python and JPype]]&lt;br /&gt;
&lt;br /&gt;
* [http://openrocket.sourceforge.net/documentation.html Technical Documentation]&lt;br /&gt;
&lt;br /&gt;
* [[Resources]]&lt;br /&gt;
&lt;br /&gt;
=== Developer resources ===&lt;br /&gt;
&lt;br /&gt;
* [[Developer&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
* [[Creating guided tours]]&lt;br /&gt;
&lt;br /&gt;
* [[ReleaseProcess|Release Process]]&lt;br /&gt;
&lt;br /&gt;
* New feature discussion pages:&lt;br /&gt;
** [[Feature wishlist]]&lt;br /&gt;
** [[Component databases]]&lt;br /&gt;
** [[Plugin system]]&lt;br /&gt;
** [[User interface]]&lt;br /&gt;
** [[Remote library interface]]&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[Instructions for translators]]&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Plaa</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Feature_comparison&amp;diff=34008</id>
		<title>Feature comparison</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Feature_comparison&amp;diff=34008"/>
		<updated>2016-06-07T18:17:10Z</updated>

		<summary type="html">&lt;p&gt;Plaa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides a side-by-side feature comparison of &#039;&#039;&#039;OpenRocket&#039;&#039;&#039; and &#039;&#039;&#039;RockSim&#039;&#039;&#039;.  Both represent the latest version of the software.&lt;br /&gt;
&lt;br /&gt;
While hosted on the OpenRocket wiki site, we have attempted to make this an objective comparison between the functionality of the two software products.  If you think something is wrong or omitted, please [[User:Plaa|contact us]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! License&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Open Source (GPLv3)&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | Proprietary&lt;br /&gt;
|-&lt;br /&gt;
! Price&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Free&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | $124&lt;br /&gt;
|-&lt;br /&gt;
! Supported platforms&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Windows, Mac, Linux&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | Windows, Mac&lt;br /&gt;
|-&lt;br /&gt;
! Supported file formats&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | ORK, RKT&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | RKT&lt;br /&gt;
|-&lt;br /&gt;
! Anti-piracy copy protection&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | None&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | [http://www.paceap.com/ PACE]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== UI features ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! Side/back view&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! 3D view&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Photorealistic 3D rendering&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Export 3D design&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes (3DS)&lt;br /&gt;
|-&lt;br /&gt;
! Design view rotation&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Any angle&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | Side and top only&lt;br /&gt;
|-&lt;br /&gt;
! Live CG/CP view&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Realtime simulation&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Design features ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! Basic components&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Freeform fins&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Asymmetric fin configurations&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Tube fins&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Experimental&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Ring-tail fins&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Fins attached to fins&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! External pods&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Canted fins / roll stabilization&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Standard component libraries&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Decals&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Clustering support&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes, modifiable&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | Yes, one-time wizard&lt;br /&gt;
|-&lt;br /&gt;
! Staging support&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes, unlimited&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | Yes, 3 stages&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Simulation features ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! Degrees of freedom&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | 6DOF&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | 3DOF&lt;br /&gt;
|-&lt;br /&gt;
! Geodetic calculation (Earth coordinates, coriolis effect)&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Simulations extensible by own code&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Simulation animation&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Plotting any simulated variables&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Exporting simulated data&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Computing custom variables&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Optimization and analysis ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! General design optimization&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Mass optimization&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | Yes (using general optimizer)&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Stability analysis&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes, per component&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | Yes, per stage&lt;br /&gt;
|-&lt;br /&gt;
! Drag analysis&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes, per component&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | Yes, per stage&lt;br /&gt;
|-&lt;br /&gt;
! Roll analysis&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Printing ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! Schematic view&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Stability information&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Simulation results&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Parts list&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Component templates&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | Nose cone, fin sets&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Nose cone, fin sets, centering rings&lt;br /&gt;
|-&lt;br /&gt;
! Fin placement guide&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Export to PDF&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
One attribute of interest when comparing pieces of software is how much each software is used and how much of a community exists around the software.  While it&#039;s impossible to get an objective measure of the usage and community activity, [http://www.google.com/trends/ Google Trends] does a rather good job at providing an indication of the relative interest levels over time.&lt;br /&gt;
&lt;br /&gt;
Since around 2014, OpenRocket and RockSim have received approximately the same amount of search hits.  The first version of OpenRocket was released in May 2009, RockSim in 1997.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;trends q=&amp;quot;RockSim,OpenRocket&amp;quot; date=&amp;quot;1/2009 96m&amp;quot; cmpt=&amp;quot;q&amp;quot; content=&amp;quot;1&amp;quot; cid=&amp;quot;TIMESERIES_GRAPH_0&amp;quot; export=&amp;quot;5&amp;quot; w=&amp;quot;700&amp;quot; h=&amp;quot;330&amp;quot;/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Plaa</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Feature_comparison&amp;diff=34007</id>
		<title>Feature comparison</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Feature_comparison&amp;diff=34007"/>
		<updated>2016-06-07T18:15:43Z</updated>

		<summary type="html">&lt;p&gt;Plaa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides a side-by-side feature comparison of &#039;&#039;&#039;OpenRocket&#039;&#039;&#039; and &#039;&#039;&#039;RockSim&#039;&#039;&#039;.  Both represent the latest version of the software.&lt;br /&gt;
&lt;br /&gt;
While hosted on the OpenRocket wiki site, we have attempted to make this an objective comparison between the functionality of the two software products.  If you think something is wrong or omitted, please [[User:Plaa|contact us]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! License&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Open Source (GPLv3)&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | Proprietary&lt;br /&gt;
|-&lt;br /&gt;
! Price&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Free&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | $124&lt;br /&gt;
|-&lt;br /&gt;
! Supported platforms&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Windows, Mac, Linux&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | Windows, Mac&lt;br /&gt;
|-&lt;br /&gt;
! Supported file formats&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | ORK, RKT&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | RKT&lt;br /&gt;
|-&lt;br /&gt;
! Anti-piracy copy protection&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | None&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | [http://www.paceap.com/ PACE]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== UI features ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! Side/back view&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! 3D view&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Photorealistic 3D rendering&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Export 3D design&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes (3DS)&lt;br /&gt;
|-&lt;br /&gt;
! Design view rotation&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Any angle&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | Side and top only&lt;br /&gt;
|-&lt;br /&gt;
! Live CG/CP view&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Realtime simulation&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Design features ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! Basic components&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Freeform fins&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Asymmetric fin configurations&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Tube fins&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Experimental&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Ring-tail fins&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Fins attached to fins&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! External pods&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Canted fins / roll stabilization&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Standard component libraries&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Decals&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Clustering support&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes, modifiable&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | Yes, one-time wizard&lt;br /&gt;
|-&lt;br /&gt;
! Staging support&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes, unlimited&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | Yes, 3 stages&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Simulation features ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! Degrees of freedom&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | 6DOF&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | 3DOF&lt;br /&gt;
|-&lt;br /&gt;
! Geodetic calculation (Earth coordinates, coriolis effect)&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Simulations extensible by own code&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Simulation animation&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Plotting any simulated variables&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Exporting simulated data&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Computing custom variables&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Optimization and analysis ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! General design optimization&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Mass optimization&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | Yes (using general optimizer)&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Stability analysis&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes, per component&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | Yes, per stage&lt;br /&gt;
|-&lt;br /&gt;
! Drag analysis&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes, per component&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | Yes, per stage&lt;br /&gt;
|-&lt;br /&gt;
! Roll analysis&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Printing ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! Schematic view&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Stability information&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Simulation results&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Parts list&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Component templates&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | Nose cone, fin sets&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Nose cone, fin sets, centering rings&lt;br /&gt;
|-&lt;br /&gt;
! Fin placement guide&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Export to PDF&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
One attribute of interest when comparing pieces of software is how much each software is used and how much of a community exists around the software.  While it&#039;s impossible to get an objective measure of the usage and community activity, [http://www.google.com/trends/ Google Trends] does a rather good job at providing an indication of the relative interest levels over time.&lt;br /&gt;
&lt;br /&gt;
Since around 2014, OpenRocket and RockSim have received approximately the same amount of search hits.  The first version of OpenRocket was released in May 2009, RockSim in 1997.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;trends q=&amp;quot;RockSim,OpenRocket&amp;quot; date=&amp;quot;1/2009 102m&amp;quot; cmpt=&amp;quot;q&amp;quot; content=&amp;quot;1&amp;quot; cid=&amp;quot;TIMESERIES_GRAPH_0&amp;quot; export=&amp;quot;5&amp;quot; w=&amp;quot;700&amp;quot; h=&amp;quot;330&amp;quot;/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Plaa</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Feature_comparison&amp;diff=16296</id>
		<title>Feature comparison</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Feature_comparison&amp;diff=16296"/>
		<updated>2015-02-13T18:53:47Z</updated>

		<summary type="html">&lt;p&gt;Plaa: Update trends section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides a side-by-side feature comparison of &#039;&#039;&#039;OpenRocket&#039;&#039;&#039; and &#039;&#039;&#039;RockSim&#039;&#039;&#039;.  Both represent the latest version of the software.&lt;br /&gt;
&lt;br /&gt;
While hosted on the OpenRocket wiki site, we have attempted to make this an objective comparison between the functionality of the two software products.  If you think something is wrong or omitted, please [[User:Plaa|contact us]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! License&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Open Source (GPLv3)&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | Proprietary&lt;br /&gt;
|-&lt;br /&gt;
! Price&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Free&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | $124&lt;br /&gt;
|-&lt;br /&gt;
! Supported platforms&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Windows, Mac, Linux&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | Windows, Mac&lt;br /&gt;
|-&lt;br /&gt;
! Supported file formats&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | ORK, RKT&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | RKT&lt;br /&gt;
|-&lt;br /&gt;
! Anti-piracy copy protection&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | None&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | [http://www.paceap.com/ PACE]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== UI features ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! Side/back view&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! 3D view&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Photorealistic 3D rendering&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Export 3D design&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes (3DS)&lt;br /&gt;
|-&lt;br /&gt;
! Design view rotation&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Any angle&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | Side and top only&lt;br /&gt;
|-&lt;br /&gt;
! Live CG/CP view&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Realtime simulation&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Design features ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! Basic components&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Freeform fins&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Asymmetric fin configurations&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Tube fins&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Ring-tail fins&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Fins attached to fins&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! External pods&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Canted fins / roll stabilization&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Standard component libraries&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Decals&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Clustering support&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes, modifiable&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | Yes, one-time wizard&lt;br /&gt;
|-&lt;br /&gt;
! Staging support&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes, unlimited&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | Yes, 3 stages&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Simulation features ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! Degrees of freedom&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | 6DOF&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | 3DOF&lt;br /&gt;
|-&lt;br /&gt;
! Geodetic calculation (Earth coordinates, coriolis effect)&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Simulations extensible by own code&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Simulation animation&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Plotting any simulated variables&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Exporting simulated data&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Computing custom variables&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Optimization and analysis ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! General design optimization&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Mass optimization&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | Yes (using general optimizer)&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Stability analysis&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes, per component&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | Yes, per stage&lt;br /&gt;
|-&lt;br /&gt;
! Drag analysis&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes, per component&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | Yes, per stage&lt;br /&gt;
|-&lt;br /&gt;
! Roll analysis&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Printing ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! Schematic view&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Stability information&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Simulation results&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Parts list&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Component templates&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | Nose cone, fin sets&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Nose cone, fin sets, centering rings&lt;br /&gt;
|-&lt;br /&gt;
! Fin placement guide&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Export to PDF&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Usage ==&lt;br /&gt;
&lt;br /&gt;
One attribute of interest when comparing pieces of software is how much each software is used and how much of a community exists around the software.  While it&#039;s impossible to get an objective measure of the usage and community activity, [http://www.google.com/trends/ Google Trends] does a rather good job at providing an indication of the relative interest levels over time.&lt;br /&gt;
&lt;br /&gt;
As of 2014, OpenRocket and RockSim receive approximately the same amount of search hits.  The first version of OpenRocket was released in May 2009, RockSim in 1997.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;trends q=&amp;quot;RockSim,OpenRocket&amp;quot; date=&amp;quot;1/2009 84m&amp;quot; cmpt=&amp;quot;q&amp;quot; content=&amp;quot;1&amp;quot; cid=&amp;quot;TIMESERIES_GRAPH_0&amp;quot; export=&amp;quot;5&amp;quot; w=&amp;quot;700&amp;quot; h=&amp;quot;330&amp;quot;/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Plaa</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Extending_OpenRocket&amp;diff=7469</id>
		<title>Extending OpenRocket</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Extending_OpenRocket&amp;diff=7469"/>
		<updated>2015-01-13T15:37:36Z</updated>

		<summary type="html">&lt;p&gt;Plaa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
OpenRocket is built to be extensible using plugins.  You can implement your own functionality or download plugins implemented by others.&lt;br /&gt;
&lt;br /&gt;
This document describes how to implement your own extensions to OpenRocket.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Plugins ==&lt;br /&gt;
&lt;br /&gt;
Extensions to OpenRocket are implemented as plugins.  All interfaces that may have multiple implementations should be implemented using plugin interfaces internally.  That way, external plugins may create new implementations.&lt;br /&gt;
&lt;br /&gt;
A plugin is compiled into a JAR file and placed into the OpenRocket plugin directory.  These JAR files are included in the OpenRocket classpath at startup and scanned for classes and interfaces annotated with &amp;lt;code&amp;gt;@Plugin&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* A &#039;&#039;&#039;plugin interface&#039;&#039;&#039; is a Java interface that is annotated with the &amp;lt;code&amp;gt;@Plugin&amp;lt;/code&amp;gt; annotation.  These interfaces are scanned from the classpath at startup and can be queried by the code.&lt;br /&gt;
* A &#039;&#039;&#039;plugin implementation&#039;&#039;&#039; is a Java class that implements a plugin interface and is annotated with the &amp;lt;code&amp;gt;@Plugin&amp;lt;/code&amp;gt; annotation.&lt;br /&gt;
&lt;br /&gt;
In practise the plugin interfaces are defined by the internal OpenRocket code, and are extension points which internal and external plugins can implement.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039;  Many of the internal interfaces have not yet been changed to use the plugin interface.  They will be migrated one by one.  Help is appreciated.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Simulation extensions ==&lt;br /&gt;
&lt;br /&gt;
Simulation extensions allow modifying simulations before or during a simulation.  They allow controlling almost every aspect of a simulation.&lt;br /&gt;
&lt;br /&gt;
A simulation extensions typically consists of 2-4 Java classes described below.  &#039;&#039;&#039;The recommended way of implementing these interfaces is by extending the abstract classes&#039;&#039;&#039;.  This allows maximum compatibility with future versions of OpenRocket when new methods are added to the interfaces.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! &lt;br /&gt;
! Interface / abstract class&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
! Simulation extension&lt;br /&gt;
| &#039;&#039;&amp;lt;code&amp;gt;SimulationExtension&amp;lt;/code&amp;gt;&#039;&#039; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;AbstractSimulationExtension&amp;lt;/code&amp;gt;&lt;br /&gt;
| Contains the extension configuration for a single simulation and a method that is called whenever the simulation is started.  A new instance is created for each simulation that has the extension defined.&lt;br /&gt;
|-&lt;br /&gt;
! Simulation extension &#039;&#039;provider&#039;&#039;&lt;br /&gt;
| &#039;&#039;&amp;lt;code&amp;gt;SimulationExtensionProvider&amp;lt;/code&amp;gt;&#039;&#039; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;AbstractSimulationExtensionProvider&amp;lt;/code&amp;gt;&lt;br /&gt;
| An OpenRocket plugin that functions as a factory class for the simulation extension.  It provides the extension ID, location in the UI menu and instances of the extension.&lt;br /&gt;
|-&lt;br /&gt;
! Simulation extension &#039;&#039;configurator&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;SwingSimulationExtensionConfigurator&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;AbstractSwingSimulationExtensionConfigurator&amp;lt;/code&amp;gt;&lt;br /&gt;
| An (optional) OpenRocket plugin that provides a GUI for configuring the simulation extension.&lt;br /&gt;
|-&lt;br /&gt;
! Simulation &#039;&#039;listener&#039;&#039;&lt;br /&gt;
| &#039;&#039;&amp;lt;code&amp;gt;SimulationListener&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;SimulationComputationListener&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;SimulationEventListener&amp;lt;/code&amp;gt;&#039;&#039; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;AbstractSimulationListener&amp;lt;/code&amp;gt;&lt;br /&gt;
| A listener that can be attached to a simulation at runtime.  The listener is notified of all actions during the simulation and it can modify and affect the simulation while it is being run.  The simulation extension may add a simulation listener to the simulation run when it is started.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Simulation extension class ===&lt;br /&gt;
&lt;br /&gt;
An instance of the simulation extension class is attached to each simulation that has the extension defined.  It contains the configuration of the extension and a method that is called when the simulation is run.&lt;br /&gt;
&lt;br /&gt;
You need to extend &amp;lt;code&amp;gt;AbstractSimulationExtension&amp;lt;/code&amp;gt; and implement at least the &amp;lt;code&amp;gt;initialize&amp;lt;/code&amp;gt; method.  This method is called whenever a simulation run is started.  It can modify the &amp;lt;code&amp;gt;SimulationConditions&amp;lt;/code&amp;gt;, which contains the launch conditions of the simulation.  It can also attach simulation listeners to the simulation, which allows interacting with the simulation while it is running.&lt;br /&gt;
&lt;br /&gt;
=== Simulation extension provider ===&lt;br /&gt;
&lt;br /&gt;
The provider is a factory class that creates instances of the simulation extension.  It also provides an ID string identifying the simulation extension and the name and menu location of the extension.&lt;br /&gt;
&lt;br /&gt;
When using &amp;lt;code&amp;gt;AbstractSimulationExtensionProvider&amp;lt;/code&amp;gt; you only need to provide the constructor the simulation extension class and the name and menu location.&lt;br /&gt;
&lt;br /&gt;
A single simulation extension provider can be used to provide multiple simulation extensions.  For example, the provider could scan a directory for scripts and provide a simulation extension for each script file.  The abstract class assumes you are only providing a single simulation extension.&lt;br /&gt;
&lt;br /&gt;
=== Simulation extension configurator ===&lt;br /&gt;
&lt;br /&gt;
The separate configurator provides a Swing GUI dialog to configure a single instance of a simulation extension.  It is implemented as a separate plugin so that the plugin itself can be used also on platforms not supporting Swing (such as Android).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;SwingSimulationExtensionConfigurator&amp;lt;/code&amp;gt; provides a ready framework where you only need to implement the &amp;lt;code&amp;gt;getConfigurationComponent&amp;lt;/code&amp;gt; method, where you add the necessary components to a ready &amp;lt;code&amp;gt;JPanel&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Simulation listeners ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Simulation listeners&#039;&#039;&#039; are pieces of custom code that are run during a simulation run.  They can either be implemented in Java, or in a scripting language of your choise by adding the Simulation extension in &#039;&#039;User code&#039;&#039; -&amp;gt; &#039;&#039;Scripts&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
In Java, the recommended way of implementing a simulation listener is by extending the &amp;lt;code&amp;gt;AbstractSimulationListener&amp;lt;/code&amp;gt; class and overriding the desired methods.&lt;br /&gt;
&lt;br /&gt;
In scripts, you only need to implement the methods you need.&lt;br /&gt;
&lt;br /&gt;
The methods, their arguments and return values are listed below.  For scripting languages, replace with the corresponding object (for example in Ruby return &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; instead of &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt;).  In many scripting languages, returning nothing or an undefined value will have the same effect as returning &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt;.  The methods may also throw exceptions to abort the simulation.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method signature&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
void &#039;&#039;&#039;startSimulation&#039;&#039;&#039;(SimulationStatus status) &amp;lt;br&amp;gt;&lt;br /&gt;
void &#039;&#039;&#039;endSimulation&#039;&#039;&#039;(SimulationStatus status, SimulationException exception)&lt;br /&gt;
| Called when starting and ending a simulation.  The &amp;lt;code&amp;gt;endSimulation&amp;lt;/code&amp;gt; method is provided the exception if the simulation is aborted by one.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
boolean &#039;&#039;&#039;preStep&#039;&#039;&#039;(SimulationStatus status) &amp;lt;br&amp;gt;&lt;br /&gt;
void &#039;&#039;&#039;postStep&#039;&#039;&#039;(SimulationStatus status)&lt;br /&gt;
| Called before and after taking a simulation step.  The &amp;lt;code&amp;gt;preStep&amp;lt;/code&amp;gt; method can prevent taking the step by returning &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
AccelerationData &#039;&#039;&#039;preAccelerationCalculation&#039;&#039;&#039;(SimulationStatus status) &amp;lt;br&amp;gt;&lt;br /&gt;
AccelerationData postAccelerationCalculation(SimulationStatus status, AccelerationData acceleration)&lt;br /&gt;
| Called before and after computing acceleration of the &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Plaa</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Extending_OpenRocket&amp;diff=7468</id>
		<title>Extending OpenRocket</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Extending_OpenRocket&amp;diff=7468"/>
		<updated>2015-01-09T22:17:42Z</updated>

		<summary type="html">&lt;p&gt;Plaa: Start documenting simulation listeners&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
OpenRocket is built to be extensible using plugins.  You can implement your own functionality or download plugins implemented by others.&lt;br /&gt;
&lt;br /&gt;
This document describes how to implement your own extensions to OpenRocket.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Plugins ==&lt;br /&gt;
&lt;br /&gt;
Extensions to OpenRocket are implemented as plugins.  All interfaces that may have multiple implementations should be implemented using plugin interfaces internally.  That way, external plugins may create new implementations.&lt;br /&gt;
&lt;br /&gt;
A plugin is compiled into a JAR file and placed into the OpenRocket plugin directory.  These JAR files are included in the OpenRocket classpath at startup and scanned for classes and interfaces annotated with &amp;lt;code&amp;gt;@Plugin&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* A &#039;&#039;&#039;plugin interface&#039;&#039;&#039; is a Java interface that is annotated with the &amp;lt;code&amp;gt;@Plugin&amp;lt;/code&amp;gt; annotation.  These interfaces are scanned from the classpath at startup and can be queried by the code.&lt;br /&gt;
* A &#039;&#039;&#039;plugin implementation&#039;&#039;&#039; is a Java class that implements a plugin interface and is annotated with the &amp;lt;code&amp;gt;@Plugin&amp;lt;/code&amp;gt; annotation.&lt;br /&gt;
&lt;br /&gt;
In practise the plugin interfaces are defined by the internal OpenRocket code, and are extension points which internal and external plugins can implement.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039;  Many of the internal interfaces have not yet been changed to use the plugin interface.  They will be migrated one by one.  Help is appreciated.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Simulation extensions ==&lt;br /&gt;
&lt;br /&gt;
Simulation extensions allow modifying simulations before or during a simulation.  They allow controlling almost every aspect of a simulation.&lt;br /&gt;
&lt;br /&gt;
A simulation extensions typically consists of 2-4 Java classes described below.  &#039;&#039;&#039;The recommended way of implementing these interfaces is by extending the abstract classes&#039;&#039;&#039;.  This allows maximum compatibility with future versions of OpenRocket when new methods are added to the interfaces.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! &lt;br /&gt;
! Interface / abstract class&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
! Simulation extension&lt;br /&gt;
| &#039;&#039;&amp;lt;code&amp;gt;SimulationExtension&amp;lt;/code&amp;gt;&#039;&#039; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;AbstractSimulationExtension&amp;lt;/code&amp;gt;&lt;br /&gt;
| Contains the extension configuration for a single simulation and a method that is called whenever the simulation is started.  A new instance is created for each simulation that has the extension defined.&lt;br /&gt;
|-&lt;br /&gt;
! Simulation extension &#039;&#039;provider&#039;&#039;&lt;br /&gt;
| &#039;&#039;&amp;lt;code&amp;gt;SimulationExtensionProvider&amp;lt;/code&amp;gt;&#039;&#039; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;AbstractSimulationExtensionProvider&amp;lt;/code&amp;gt;&lt;br /&gt;
| An OpenRocket plugin that functions as a factory class for the simulation extension.  It provides the extension ID, location in the UI menu and instances of the extension.&lt;br /&gt;
|-&lt;br /&gt;
! Simulation extension &#039;&#039;configurator&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;SwingSimulationExtensionConfigurator&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;AbstractSwingSimulationExtensionConfigurator&amp;lt;/code&amp;gt;&lt;br /&gt;
| An (optional) OpenRocket plugin that provides a GUI for configuring the simulation extension.&lt;br /&gt;
|-&lt;br /&gt;
! Simulation &#039;&#039;listener&#039;&#039;&lt;br /&gt;
| &#039;&#039;&amp;lt;code&amp;gt;SimulationListener&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;SimulationComputationListener&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;SimulationEventListener&amp;lt;/code&amp;gt;&#039;&#039; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;AbstractSimulationListener&amp;lt;/code&amp;gt;&lt;br /&gt;
| A listener that can be attached to a simulation at runtime.  The listener is notified of all actions during the simulation and it can modify and affect the simulation while it is being run.  The simulation extension may add a simulation listener to the simulation run when it is started.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Simulation extension class ===&lt;br /&gt;
&lt;br /&gt;
An instance of the simulation extension class is attached to each simulation that has the extension defined.  It contains the configuration of the extension and a method that is called when the simulation is run.&lt;br /&gt;
&lt;br /&gt;
You need to extend &amp;lt;code&amp;gt;AbstractSimulationExtension&amp;lt;/code&amp;gt; and implement at least the &amp;lt;code&amp;gt;initialize&amp;lt;/code&amp;gt; method.  This method is called whenever a simulation run is started.  It can modify the &amp;lt;code&amp;gt;SimulationConditions&amp;lt;/code&amp;gt;, which contains the launch conditions of the simulation.  It can also attach simulation listeners to the simulation, which allows interacting with the simulation while it is running.&lt;br /&gt;
&lt;br /&gt;
=== Simulation extension provider ===&lt;br /&gt;
&lt;br /&gt;
The provider is a factory class that creates instances of the simulation extension.  It also provides an ID string identifying the simulation extension and the name and menu location of the extension.&lt;br /&gt;
&lt;br /&gt;
When using &amp;lt;code&amp;gt;AbstractSimulationExtensionProvider&amp;lt;/code&amp;gt; you only need to provide the constructor the simulation extension class and the name and menu location.&lt;br /&gt;
&lt;br /&gt;
A single simulation extension provider can be used to provide multiple simulation extensions.  For example, the provider could scan a directory for scripts and provide a simulation extension for each script file.  The abstract class assumes you are only providing a single simulation extension.&lt;br /&gt;
&lt;br /&gt;
=== Simulation extension configurator ===&lt;br /&gt;
&lt;br /&gt;
The separate configurator provides a Swing GUI dialog to configure a single instance of a simulation extension.  It is implemented as a separate plugin so that the plugin itself can be used also on platforms not supporting Swing (such as Android).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;SwingSimulationExtensionConfigurator&amp;lt;/code&amp;gt; provides a ready framework where you only need to implement the &amp;lt;code&amp;gt;getConfigurationComponent&amp;lt;/code&amp;gt; method, where you add the necessary components to a ready &amp;lt;code&amp;gt;JPanel&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Simulation listeners ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Simulation listeners&#039;&#039;&#039; are pieces of custom code that are run during a simulation run.  They can either be implemented in Java, or in a scripting language of your choise by adding the Simulation extension in &#039;&#039;User code&#039;&#039; -&amp;gt; &#039;&#039;Scripts&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
In Java, the recommended way of implementing a simulation listener is by extending the &amp;lt;code&amp;gt;AbstractSimulationListener&amp;lt;/code&amp;gt; class and overriding the desired methods.&lt;br /&gt;
&lt;br /&gt;
In scripts, you only need to implement the methods you need.&lt;br /&gt;
&lt;br /&gt;
The methods, their arguments and return values are listed below.  For scripting languages, replace with the corresponding object (for example in Ruby return &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; instead of &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt;).  In many scripting languages, returning nothing or an undefined value will have the same effect as returning &amp;lt;code&amp;gt;null&amp;lt;/code&amp;gt;.  The methods may also throw exceptions to abort the simulation.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method signature&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
! void startSimulation(SimulationStatus status)&lt;br /&gt;
| Called when starting a simulation.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Plaa</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Extending_OpenRocket&amp;diff=7467</id>
		<title>Extending OpenRocket</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Extending_OpenRocket&amp;diff=7467"/>
		<updated>2014-12-26T23:00:18Z</updated>

		<summary type="html">&lt;p&gt;Plaa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
OpenRocket is built to be extensible using plugins.  You can implement your own functionality or download plugins implemented by others.&lt;br /&gt;
&lt;br /&gt;
This document describes how to implement your own extensions to OpenRocket.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Plugins ==&lt;br /&gt;
&lt;br /&gt;
Extensions to OpenRocket are implemented as plugins.  All interfaces that may have multiple implementations should be implemented using plugin interfaces internally.  That way, external plugins may create new implementations.&lt;br /&gt;
&lt;br /&gt;
A plugin is compiled into a JAR file and placed into the OpenRocket plugin directory.  These JAR files are included in the OpenRocket classpath at startup and scanned for classes and interfaces annotated with &amp;lt;code&amp;gt;@Plugin&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* A &#039;&#039;&#039;plugin interface&#039;&#039;&#039; is a Java interface that is annotated with the &amp;lt;code&amp;gt;@Plugin&amp;lt;/code&amp;gt; annotation.  These interfaces are scanned from the classpath at startup and can be queried by the code.&lt;br /&gt;
* A &#039;&#039;&#039;plugin implementation&#039;&#039;&#039; is a Java class that implements a plugin interface and is annotated with the &amp;lt;code&amp;gt;@Plugin&amp;lt;/code&amp;gt; annotation.&lt;br /&gt;
&lt;br /&gt;
In practise the plugin interfaces are defined by the internal OpenRocket code, and are extension points which internal and external plugins can implement.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039;  Many of the internal interfaces have not yet been changed to use the plugin interface.  They will be migrated one by one.  Help is appreciated.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Simulation extensions ==&lt;br /&gt;
&lt;br /&gt;
Simulation extensions allow modifying simulations before or during a simulation.  They allow controlling almost every aspect of a simulation.&lt;br /&gt;
&lt;br /&gt;
A simulation extensions typically consists of 2-4 Java classes described below.  &#039;&#039;&#039;The recommended way of implementing these interfaces is by extending the abstract classes&#039;&#039;&#039;.  This allows maximum compatibility with future versions of OpenRocket when new methods are added to the interfaces.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! &lt;br /&gt;
! Interface / abstract class&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
! Simulation extension&lt;br /&gt;
| &#039;&#039;&amp;lt;code&amp;gt;SimulationExtension&amp;lt;/code&amp;gt;&#039;&#039; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;AbstractSimulationExtension&amp;lt;/code&amp;gt;&lt;br /&gt;
| Contains the extension configuration for a single simulation and a method that is called whenever the simulation is started.  A new instance is created for each simulation that has the extension defined.&lt;br /&gt;
|-&lt;br /&gt;
! Simulation extension &#039;&#039;provider&#039;&#039;&lt;br /&gt;
| &#039;&#039;&amp;lt;code&amp;gt;SimulationExtensionProvider&amp;lt;/code&amp;gt;&#039;&#039; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;AbstractSimulationExtensionProvider&amp;lt;/code&amp;gt;&lt;br /&gt;
| An OpenRocket plugin that functions as a factory class for the simulation extension.  It provides the extension ID, location in the UI menu and instances of the extension.&lt;br /&gt;
|-&lt;br /&gt;
! Simulation extension &#039;&#039;configurator&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;SwingSimulationExtensionConfigurator&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;AbstractSwingSimulationExtensionConfigurator&amp;lt;/code&amp;gt;&lt;br /&gt;
| An (optional) OpenRocket plugin that provides a GUI for configuring the simulation extension.&lt;br /&gt;
|-&lt;br /&gt;
! Simulation &#039;&#039;listener&#039;&#039;&lt;br /&gt;
| &#039;&#039;&amp;lt;code&amp;gt;SimulationListener&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;SimulationComputationListener&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;SimulationEventListener&amp;lt;/code&amp;gt;&#039;&#039; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;AbstractSimulationListener&amp;lt;/code&amp;gt;&lt;br /&gt;
| A listener that can be attached to a simulation at runtime.  The listener is notified of all actions during the simulation and it can modify and affect the simulation while it is being run.  The simulation extension may add a simulation listener to the simulation run when it is started.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Simulation extension class ===&lt;br /&gt;
&lt;br /&gt;
An instance of the simulation extension class is attached to each simulation that has the extension defined.  It contains the configuration of the extension and a method that is called when the simulation is run.&lt;br /&gt;
&lt;br /&gt;
You need to extend &amp;lt;code&amp;gt;AbstractSimulationExtension&amp;lt;/code&amp;gt; and implement at least the &amp;lt;code&amp;gt;initialize&amp;lt;/code&amp;gt; method.  This method is called whenever a simulation run is started.  It can modify the &amp;lt;code&amp;gt;SimulationConditions&amp;lt;/code&amp;gt;, which contains the launch conditions of the simulation.  It can also attach simulation listeners to the simulation, which allows interacting with the simulation while it is running.&lt;br /&gt;
&lt;br /&gt;
=== Simulation extension provider ===&lt;br /&gt;
&lt;br /&gt;
The provider is a factory class that creates instances of the simulation extension.  It also provides an ID string identifying the simulation extension and the name and menu location of the extension.&lt;br /&gt;
&lt;br /&gt;
When using &amp;lt;code&amp;gt;AbstractSimulationExtensionProvider&amp;lt;/code&amp;gt; you only need to provide the constructor the simulation extension class and the name and menu location.&lt;br /&gt;
&lt;br /&gt;
A single simulation extension provider can be used to provide multiple simulation extensions.  For example, the provider could scan a directory for scripts and provide a simulation extension for each script file.  The abstract class assumes you are only providing a single simulation extension.&lt;br /&gt;
&lt;br /&gt;
=== Simulation extension configurator ===&lt;br /&gt;
&lt;br /&gt;
The separate configurator provides a Swing GUI dialog to configure a single instance of a simulation extension.  It is implemented as a separate plugin so that the plugin itself can be used also on platforms not supporting Swing (such as Android).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;SwingSimulationExtensionConfigurator&amp;lt;/code&amp;gt; provides a ready framework where you only need to implement the &amp;lt;code&amp;gt;getConfigurationComponent&amp;lt;/code&amp;gt; method, where you add the necessary components to a ready &amp;lt;code&amp;gt;JPanel&amp;lt;/code&amp;gt;.&lt;/div&gt;</summary>
		<author><name>Plaa</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Extending_OpenRocket&amp;diff=7466</id>
		<title>Extending OpenRocket</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Extending_OpenRocket&amp;diff=7466"/>
		<updated>2014-12-26T22:21:05Z</updated>

		<summary type="html">&lt;p&gt;Plaa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
OpenRocket is built to be extensible using plugins.  You can implement your own functionality or download plugins implemented by others.&lt;br /&gt;
&lt;br /&gt;
This document describes how to implement your own extensions to OpenRocket.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Plugins ==&lt;br /&gt;
&lt;br /&gt;
Extensions to OpenRocket are implemented as plugins.  All interfaces that may have multiple implementations should be implemented using plugin interfaces internally.  That way, external plugins may create new implementations.&lt;br /&gt;
&lt;br /&gt;
A plugin is compiled into a JAR file and placed into the OpenRocket plugin directory.  These JAR files are included in the OpenRocket classpath at startup and scanned for classes and interfaces annotated with &amp;lt;code&amp;gt;@Plugin&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* A &#039;&#039;&#039;plugin interface&#039;&#039;&#039; is a Java interface that is annotated with the &amp;lt;code&amp;gt;@Plugin&amp;lt;/code&amp;gt; annotation.  These interfaces are scanned from the classpath at startup and can be queried by the code.&lt;br /&gt;
* A &#039;&#039;&#039;plugin implementation&#039;&#039;&#039; is a Java class that implements a plugin interface and is annotated with the &amp;lt;code&amp;gt;@Plugin&amp;lt;/code&amp;gt; annotation.&lt;br /&gt;
&lt;br /&gt;
In practise the plugin interfaces are defined by the internal OpenRocket code, and are extension points which internal and external plugins can implement.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039;  Many of the internal interfaces have not yet been changed to use the plugin interface.  They will be migrated one by one.  Help is appreciated.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Simulation extensions ==&lt;br /&gt;
&lt;br /&gt;
Simulation extensions allow modifying simulations before or during a simulation.  They allow controlling almost every aspect of a simulation.&lt;br /&gt;
&lt;br /&gt;
A simulation extensions typically consists of 2-4 Java classes described below.  &#039;&#039;&#039;The recommended way of implementing these interfaces is by extending the abstract classes&#039;&#039;&#039;.  This allows maximum compatibility with future versions of OpenRocket when new methods are added to the interfaces.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! &lt;br /&gt;
! Interface / abstract class&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
! Simulation extension&lt;br /&gt;
| &#039;&#039;&amp;lt;code&amp;gt;SimulationExtension&amp;lt;/code&amp;gt;&#039;&#039; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;AbstractSimulationExtension&amp;lt;/code&amp;gt;&lt;br /&gt;
| Contains the extension configuration for a single simulation and a method that is called whenever the simulation is started.  A new instance is created for each simulation that has the extension defined.&lt;br /&gt;
|-&lt;br /&gt;
! Simulation extension &#039;&#039;provider&#039;&#039;&lt;br /&gt;
| &#039;&#039;&amp;lt;code&amp;gt;SimulationExtensionProvider&amp;lt;/code&amp;gt;&#039;&#039; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;AbstractSimulationExtensionProvider&amp;lt;/code&amp;gt;&lt;br /&gt;
| An OpenRocket plugin that functions as a factory class for the simulation extension.  It provides the extension ID, location in the UI menu and instances of the extension.&lt;br /&gt;
|-&lt;br /&gt;
! Simulation extension &#039;&#039;configurator&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;SwingSimulationExtensionConfigurator&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;AbstractSwingSimulationExtensionConfigurator&amp;lt;/code&amp;gt;&lt;br /&gt;
| An (optional) OpenRocket plugin that provides a GUI for configuring the simulation extension.&lt;br /&gt;
|-&lt;br /&gt;
! Simulation &#039;&#039;listener&#039;&#039;&lt;br /&gt;
| &#039;&#039;&amp;lt;code&amp;gt;SimulationListener&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;SimulationComputationListener&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;SimulationEventListener&amp;lt;/code&amp;gt;&#039;&#039; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;AbstractSimulationListener&amp;lt;/code&amp;gt;&lt;br /&gt;
| A listener that can be attached to a simulation at runtime.  The listener is notified of all actions during the simulation and it can modify and affect the simulation while it is being run.  The simulation extension may add a simulation listener to the simulation run when it is started.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Simulation extension class ===&lt;br /&gt;
&lt;br /&gt;
An instance of the simulation extension class is attached to each simulation that has the extension defined.  It contains the configuration of the extension and a method that is called when the simulation is run.&lt;br /&gt;
&lt;br /&gt;
You need to extend &amp;lt;code&amp;gt;AbstractSimulationExtension&amp;lt;/code&amp;gt; and implement at least the &amp;lt;code&amp;gt;initialize&amp;lt;/code&amp;gt; method.  This method is called whenever a simulation run is started.  It can modify the &amp;lt;code&amp;gt;SimulationConditions&amp;lt;/code&amp;gt;, which contains the launch conditions of the simulation.  It can also attach simulation listeners to the simulation, which allows interacting with the simulation while it is running.&lt;br /&gt;
&lt;br /&gt;
=== Simulation extension provider ===&lt;br /&gt;
&lt;br /&gt;
The provider is a factory class that creates instances of the simulation extension.  It also provides an ID string identifying the simulation extension and the name and menu location of the extension.&lt;br /&gt;
&lt;br /&gt;
When using &amp;lt;code&amp;gt;AbstractSimulationExtensionProvider&amp;lt;/code&amp;gt; you only need to provide the constructor the simulation extension class and the name and menu location.&lt;br /&gt;
&lt;br /&gt;
A single simulation extension provider can be used to provide multiple simulation extensions.  For example, the provider could scan a directory for scripts and provide a simulation extension for each script file.  The abstract class assumes you are only providing a single simulation extension.&lt;/div&gt;</summary>
		<author><name>Plaa</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Extending_OpenRocket&amp;diff=7465</id>
		<title>Extending OpenRocket</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Extending_OpenRocket&amp;diff=7465"/>
		<updated>2014-12-26T19:30:23Z</updated>

		<summary type="html">&lt;p&gt;Plaa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
OpenRocket is built to be extensible using plugins.  You can implement your own functionality or download plugins implemented by others.&lt;br /&gt;
&lt;br /&gt;
This document describes how to implement your own extensions to OpenRocket.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Plugins ==&lt;br /&gt;
&lt;br /&gt;
Extensions to OpenRocket are implemented as plugins.  All interfaces that may have multiple implementations should be implemented using plugin interfaces internally.  That way, external plugins may create new implementations.&lt;br /&gt;
&lt;br /&gt;
A plugin is compiled into a JAR file and placed into the OpenRocket plugin directory.  These JAR files are included in the OpenRocket classpath at startup and scanned for classes and interfaces annotated with &amp;lt;code&amp;gt;@Plugin&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* A &#039;&#039;&#039;plugin interface&#039;&#039;&#039; is a Java interface that is annotated with the &amp;lt;code&amp;gt;@Plugin&amp;lt;/code&amp;gt; annotation.  These interfaces are scanned from the classpath at startup and can be queried by the code.&lt;br /&gt;
* A &#039;&#039;&#039;plugin implementation&#039;&#039;&#039; is a Java class that implements a plugin interface and is annotated with the &amp;lt;code&amp;gt;@Plugin&amp;lt;/code&amp;gt; annotation.&lt;br /&gt;
&lt;br /&gt;
In practise the plugin interfaces are defined by the internal OpenRocket code, and are extension points which internal and external plugins can implement.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039;  Many of the internal interfaces have not yet been changed to use the plugin interface.  They will be migrated one by one.  Help is appreciated.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Simulation extensions ==&lt;br /&gt;
&lt;br /&gt;
Simulation extensions allow modifying simulations before or during a simulation.  They allow controlling almost every aspect of a simulation.&lt;br /&gt;
&lt;br /&gt;
A simulation extensions typically consists of 2-4 Java classes described below.  &#039;&#039;&#039;The recommended way of implementing these interfaces is by extending the abstract classes&#039;&#039;&#039;.  This allows maximum compatibility with future versions of OpenRocket when new methods are added to the interfaces.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! &lt;br /&gt;
! Interface / abstract class&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
! Simulation extension&lt;br /&gt;
| &#039;&#039;&amp;lt;code&amp;gt;SimulationExtension&amp;lt;/code&amp;gt;&#039;&#039; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;AbstractSimulationExtension&amp;lt;/code&amp;gt;&lt;br /&gt;
| Contains the extension configuration for a single simulation and a method that is called whenever the simulation is started.  A new instance is created for each simulation that has the extension defined.&lt;br /&gt;
|-&lt;br /&gt;
! Simulation extension &#039;&#039;provider&#039;&#039;&lt;br /&gt;
| &#039;&#039;&amp;lt;code&amp;gt;SimulationExtensionProvider&amp;lt;/code&amp;gt;&#039;&#039; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;AbstractSimulationExtensionProvider&amp;lt;/code&amp;gt;&lt;br /&gt;
| An OpenRocket plugin that functions as a factory class for the simulation extension.  It provides the extension ID, location in the UI menu and instances of the extension.&lt;br /&gt;
|-&lt;br /&gt;
! Simulation extension &#039;&#039;configurator&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;SwingSimulationExtensionConfigurator&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;AbstractSwingSimulationExtensionConfigurator&amp;lt;/code&amp;gt;&lt;br /&gt;
| An (optional) OpenRocket plugin that provides a GUI for configuring the simulation extension.&lt;br /&gt;
|-&lt;br /&gt;
! Simulation &#039;&#039;listener&#039;&#039;&lt;br /&gt;
| &#039;&#039;&amp;lt;code&amp;gt;SimulationListener&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;SimulationComputationListener&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;SimulationEventListener&amp;lt;/code&amp;gt;&#039;&#039; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;AbstractSimulationListener&amp;lt;/code&amp;gt;&lt;br /&gt;
| A listener that can be attached to a simulation at runtime.  The listener is notified of all actions during the simulation and it can modify and affect the simulation while it is being run.  The simulation extension may add a simulation listener to the simulation run when it is started.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Simulation extension class ===&lt;br /&gt;
&lt;br /&gt;
An instance of the simulation extension class is attached to each simulation that has the extension defined.  It contains the configuration of the extension and a method that is called when the simulation is run.&lt;br /&gt;
&lt;br /&gt;
You need to extend &amp;lt;code&amp;gt;AbstractSimulationExtension&amp;lt;/code&amp;gt; and implement at least the &amp;lt;code&amp;gt;initialize&amp;lt;/code&amp;gt; method.  This method is called whenever a simulation run is started.  It can modify the &amp;lt;code&amp;gt;SimulationConditions&amp;lt;/code&amp;gt;, which contains the launch conditions of the simulation.  It can also attach simulation listeners to the simulation, which allows interacting with the simulation while it is running.&lt;/div&gt;</summary>
		<author><name>Plaa</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Extending_OpenRocket&amp;diff=7464</id>
		<title>Extending OpenRocket</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Extending_OpenRocket&amp;diff=7464"/>
		<updated>2014-12-25T21:11:47Z</updated>

		<summary type="html">&lt;p&gt;Plaa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
OpenRocket is built to be extensible using plugins.  You can implement your own functionality or download plugins implemented by others.&lt;br /&gt;
&lt;br /&gt;
This document describes how to implement your own extensions to OpenRocket.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Plugins ==&lt;br /&gt;
&lt;br /&gt;
Extensions to OpenRocket are implemented as plugins.  All interfaces that may have multiple implementations should be implemented using plugin interfaces internally.  That way, external plugins may create new implementations.&lt;br /&gt;
&lt;br /&gt;
A plugin is compiled into a JAR file and placed into the OpenRocket plugin directory.  These JAR files are included in the OpenRocket classpath at startup and scanned for classes and interfaces annotated with &amp;lt;code&amp;gt;@Plugin&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* A &#039;&#039;&#039;plugin interface&#039;&#039;&#039; is a Java interface that is annotated with the &amp;lt;code&amp;gt;@Plugin&amp;lt;/code&amp;gt; annotation.  These interfaces are scanned from the classpath at startup and can be queried by the code.&lt;br /&gt;
* A &#039;&#039;&#039;plugin implementation&#039;&#039;&#039; is a Java class that implements a plugin interface and is annotated with the &amp;lt;code&amp;gt;@Plugin&amp;lt;/code&amp;gt; annotation.&lt;br /&gt;
&lt;br /&gt;
In practise the plugin interfaces are defined by the internal OpenRocket code, and are extension points which internal and external plugins can implement.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039;  Many of the internal interfaces have not yet been changed to use the plugin interface.  They will be migrated one by one.  Help is appreciated.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Simulation extensions ==&lt;br /&gt;
&lt;br /&gt;
Simulation extensions allow modifying simulations before or during a simulation.  They allow controlling almost every aspect of a simulation.&lt;br /&gt;
&lt;br /&gt;
A simulation extensions typically consists of 2-4 Java classes:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! &lt;br /&gt;
! Interface / abstract class&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
! Simulation extension&lt;br /&gt;
| &#039;&#039;&amp;lt;code&amp;gt;SimulationExtension&amp;lt;/code&amp;gt;&#039;&#039; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;AbstractSimulationExtension&amp;lt;/code&amp;gt;&lt;br /&gt;
| Contains the extension configuration for a single simulation and a method that is called whenever the simulation is started.  A new instance is created for each simulation that has the extension defined.&lt;br /&gt;
|-&lt;br /&gt;
! Simulation extension &#039;&#039;provider&#039;&#039;&lt;br /&gt;
| &#039;&#039;&amp;lt;code&amp;gt;SimulationExtensionProvider&amp;lt;/code&amp;gt;&#039;&#039; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;AbstractSimulationExtensionProvider&amp;lt;/code&amp;gt;&lt;br /&gt;
| An OpenRocket plugin that functions as a factory class for the simulation extension.  It provides the extension ID, location in the UI menu and instances of the extension.&lt;br /&gt;
|-&lt;br /&gt;
! Simulation extension &#039;&#039;configurator&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;SwingSimulationExtensionConfigurator&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;AbstractSwingSimulationExtensionConfigurator&amp;lt;/code&amp;gt;&lt;br /&gt;
| An (optional) OpenRocket plugin that provides a GUI for configuring the simulation extension.&lt;br /&gt;
|-&lt;br /&gt;
! Simulation &#039;&#039;listener&#039;&#039;&lt;br /&gt;
| &#039;&#039;&amp;lt;code&amp;gt;SimulationListener&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;SimulationComputationListener&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;SimulationEventListener&amp;lt;/code&amp;gt;&#039;&#039; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;AbstractSimulationListener&amp;lt;/code&amp;gt;&lt;br /&gt;
| A listener that can be attached to a simulation at runtime.  The listener is notified of all actions during the simulation and it can modify and affect the simulation while it is being run.  The simulation extension may add a simulation listener to the simulation run when it is started.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The recommended way of implementing these interfaces is by extending the abstract classes&#039;&#039;&#039;.  This allows maximum compatibility with future versions of OpenRocket when new methods are added to the interfaces.&lt;/div&gt;</summary>
		<author><name>Plaa</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Extending_OpenRocket&amp;diff=7463</id>
		<title>Extending OpenRocket</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Extending_OpenRocket&amp;diff=7463"/>
		<updated>2014-12-25T21:08:59Z</updated>

		<summary type="html">&lt;p&gt;Plaa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Extending OpenRocket ==&lt;br /&gt;
&lt;br /&gt;
OpenRocket is built to be extensible using plugins.  You can implement your own functionality or download plugins implemented by others.&lt;br /&gt;
&lt;br /&gt;
This document describes how to implement your own extensions to OpenRocket.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Plugins ===&lt;br /&gt;
&lt;br /&gt;
Extensions to OpenRocket are implemented as plugins.  All interfaces that may have multiple implementations should be implemented using plugin interfaces internally.  That way, external plugins may create new implementations.&lt;br /&gt;
&lt;br /&gt;
A plugin is compiled into a JAR file and placed into the OpenRocket plugin directory.  These JAR files are included in the OpenRocket classpath at startup and scanned for classes and interfaces annotated with &amp;lt;code&amp;gt;@Plugin&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* A &#039;&#039;&#039;plugin interface&#039;&#039;&#039; is a Java interface that is annotated with the &amp;lt;code&amp;gt;@Plugin&amp;lt;/code&amp;gt; annotation.  These interfaces are scanned from the classpath at startup and can be queried by the code.&lt;br /&gt;
* A &#039;&#039;&#039;plugin implementation&#039;&#039;&#039; is a Java class that implements a plugin interface and is annotated with the &amp;lt;code&amp;gt;@Plugin&amp;lt;/code&amp;gt; annotation.&lt;br /&gt;
&lt;br /&gt;
In practise the plugin interfaces are defined by the internal OpenRocket code, and are extension points which internal and external plugins can implement.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039;  Many of the internal interfaces have not yet been changed to use the plugin interface.  They will be migrated one by one.  Help is appreciated.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Simulation extensions ===&lt;br /&gt;
&lt;br /&gt;
Simulation extensions allow modifying simulations before or during a simulation.  They allow controlling almost every aspect of a simulation.&lt;br /&gt;
&lt;br /&gt;
A simulation extensions typically consists of 2-4 Java classes:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! &lt;br /&gt;
! Interface / abstract class&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
! Simulation extension&lt;br /&gt;
| &#039;&#039;&amp;lt;code&amp;gt;SimulationExtension&amp;lt;/code&amp;gt;&#039;&#039; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;AbstractSimulationExtension&amp;lt;/code&amp;gt;&lt;br /&gt;
| Contains the extension configuration for a single simulation and a method that is called whenever the simulation is started.  A new instance is created for each simulation that has the extension defined.&lt;br /&gt;
|-&lt;br /&gt;
! Simulation extension &#039;&#039;provider&#039;&#039;&lt;br /&gt;
| &#039;&#039;&amp;lt;code&amp;gt;SimulationExtensionProvider&amp;lt;/code&amp;gt;&#039;&#039; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;AbstractSimulationExtensionProvider&amp;lt;/code&amp;gt;&lt;br /&gt;
| An OpenRocket plugin that functions as a factory class for the simulation extension.  It provides the extension ID, location in the UI menu and instances of the extension.&lt;br /&gt;
|-&lt;br /&gt;
! Simulation extension &#039;&#039;configurator&#039;&#039;&lt;br /&gt;
| &amp;lt;code&amp;gt;SwingSimulationExtensionConfigurator&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;AbstractSwingSimulationExtensionConfigurator&amp;lt;/code&amp;gt;&lt;br /&gt;
| An (optional) OpenRocket plugin that provides a GUI for configuring the simulation extension.&lt;br /&gt;
|-&lt;br /&gt;
! Simulation &#039;&#039;listener&#039;&#039;&lt;br /&gt;
| &#039;&#039;&amp;lt;code&amp;gt;SimulationListener&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;SimulationComputationListener&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;SimulationEventListener&amp;lt;/code&amp;gt;&#039;&#039; &amp;lt;br&amp;gt; &amp;lt;code&amp;gt;AbstractSimulationListener&amp;lt;/code&amp;gt;&lt;br /&gt;
| A listener that can be attached to a simulation at runtime.  The listener is notified of all actions during the simulation and it can modify and affect the simulation while it is being run.  The simulation extension may add a simulation listener to the simulation run when it is started.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The recommended way of implementing these interfaces is by extending the abstract classes&#039;&#039;&#039;.  This allows maximum compatibility with future versions of OpenRocket when new methods are added to the interfaces.&lt;/div&gt;</summary>
		<author><name>Plaa</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Extending_OpenRocket&amp;diff=7462</id>
		<title>Extending OpenRocket</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Extending_OpenRocket&amp;diff=7462"/>
		<updated>2014-12-25T20:47:28Z</updated>

		<summary type="html">&lt;p&gt;Plaa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Extending OpenRocket ==&lt;br /&gt;
&lt;br /&gt;
OpenRocket is built to be extensible using plugins.  You can implement your own functionality or download plugins implemented by others.&lt;br /&gt;
&lt;br /&gt;
This document describes how to implement your own extensions to OpenRocket.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Plugins ===&lt;br /&gt;
&lt;br /&gt;
Extensions to OpenRocket are implemented as plugins.  All interfaces that may have multiple implementations should be implemented using plugin interfaces internally.  That way, external plugins may create new implementations.&lt;br /&gt;
&lt;br /&gt;
A plugin is compiled into a JAR file and placed into the OpenRocket plugin directory.  These JAR files are included in the OpenRocket classpath at startup and scanned for classes and interfaces annotated with &amp;lt;code&amp;gt;@Plugin&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* A &#039;&#039;&#039;plugin interface&#039;&#039;&#039; is a Java interface that is annotated with the &amp;lt;code&amp;gt;@Plugin&amp;lt;/code&amp;gt; annotation.  These interfaces are scanned from the classpath at startup and can be queried by the code.&lt;br /&gt;
* A &#039;&#039;&#039;plugin implementation&#039;&#039;&#039; is a Java class that implements a plugin interface and is annotated with the &amp;lt;code&amp;gt;@Plugin&amp;lt;/code&amp;gt; annotation.&lt;br /&gt;
&lt;br /&gt;
In practise the plugin interfaces are defined by the internal OpenRocket code, and are extension points which internal and external plugins can implement.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039;  Many of the internal interfaces have not yet been changed to use the plugin interface.  They will be migrated one by one.  Help is appreciated.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Simulation extensions ===&lt;br /&gt;
&lt;br /&gt;
Simulation extensions allow modifying simulations before or during a simulation.  They allow controlling almost every aspect of a simulation.&lt;br /&gt;
&lt;br /&gt;
A simulation extensions typically consists of 2-4 Java classes:&lt;br /&gt;
&lt;br /&gt;
* The &#039;&#039;&#039;simulation extension&#039;&#039;&#039; implements the &amp;lt;code&amp;gt;SimulationExtension&amp;lt;/code&amp;gt; interface.  A new instance is created for each simulation that has the extension defined.  It contains the extension configuration and a method that is called whenever a simulation is started.&lt;br /&gt;
* The &#039;&#039;&#039;simulation extension provider&#039;&#039;&#039; is a plugin implementation that functions as a factory class for the simulation extension.  It implements the &amp;lt;code&amp;gt;SimulationExtensionProvider&amp;lt;/code&amp;gt; interface.&lt;br /&gt;
* A &#039;&#039;&#039;simulation extension configurator&#039;&#039;&#039; is an optional plugin implementation that provides a GUI for configuring a simulation extension.  It implements the &amp;lt;code&amp;gt;SwingSimulationExtensionConfigurator&amp;lt;/code&amp;gt; interface.&lt;br /&gt;
* A &#039;&#039;&#039;simulation listener&#039;&#039;&#039; is a listener that is attached to a simulation at runtime.  The listener is notified of all actions during the simulation and it can modify and affect the simulation while it is being run.  The simulation extension may add a simulation listener to the simulation run when it is started.  A simulation listener implements one or more of the interfaces &amp;lt;code&amp;gt;SimulationListener&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;SimulationComputationListener&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;SimulationEventListener&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The recommended way of implementing these interfaces&#039;&#039;&#039; is by extending the abstract classes &amp;lt;code&amp;gt;AbstractSimulationExtension&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;AbstractSimulationExtensionProvider&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;AbstractSwingSimulationExtensionConfigurator&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;AbstractSimulationListener&amp;lt;/code&amp;gt;.  This allows maximum compatibility with future versions of OpenRocket when new methods are added to the interfaces.&lt;/div&gt;</summary>
		<author><name>Plaa</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Extending_OpenRocket&amp;diff=7461</id>
		<title>Extending OpenRocket</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Extending_OpenRocket&amp;diff=7461"/>
		<updated>2014-12-25T19:50:34Z</updated>

		<summary type="html">&lt;p&gt;Plaa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Extending OpenRocket ==&lt;br /&gt;
&lt;br /&gt;
OpenRocket is built to be extensible using plugins.  You can implement your own functionality or download plugins implemented by others.&lt;br /&gt;
&lt;br /&gt;
This document describes how to implement your own extensions to OpenRocket.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Plugins ===&lt;br /&gt;
&lt;br /&gt;
Extensions to OpenRocket are implemented as plugins.  All interfaces that may have multiple implementations should be implemented using plugin interfaces internally.  That way, external plugins may create new implementations.&lt;br /&gt;
&lt;br /&gt;
A plugin is compiled into a JAR file and placed into the OpenRocket plugin directory.  These JAR files are included in the OpenRocket classpath at startup and scanned for classes and interfaces annotated with &amp;lt;code&amp;gt;@Plugin&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* A &#039;&#039;&#039;plugin interface&#039;&#039;&#039; is a Java interface that is annotated with the &amp;lt;code&amp;gt;@Plugin&amp;lt;/code&amp;gt; annotation.  These interfaces are scanned from the classpath at startup and can be queried by the code.&lt;br /&gt;
* A &#039;&#039;&#039;plugin implementation&#039;&#039;&#039; is a Java class that implements a plugin interface and is annotated with the &amp;lt;code&amp;gt;@Plugin&amp;lt;/code&amp;gt; annotation.&lt;br /&gt;
&lt;br /&gt;
In practise the plugin interfaces are defined by the internal OpenRocket code, and are extension points which internal and external plugins can implement.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039;  Many of the internal interfaces have not yet been changed to use the plugin interface.  They will be migrated one by one.  Help is appreciated.&lt;/div&gt;</summary>
		<author><name>Plaa</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Extending_OpenRocket&amp;diff=7460</id>
		<title>Extending OpenRocket</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Extending_OpenRocket&amp;diff=7460"/>
		<updated>2014-12-25T19:18:09Z</updated>

		<summary type="html">&lt;p&gt;Plaa: Created page with &amp;quot; == Extending OpenRocket ==  OpenRocket is built to be extensible using plugins.  You can implement your own functionality or download plugins implemented by others.  This doc...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Extending OpenRocket ==&lt;br /&gt;
&lt;br /&gt;
OpenRocket is built to be extensible using plugins.  You can implement your own functionality or download plugins implemented by others.&lt;br /&gt;
&lt;br /&gt;
This document describes how to implement your own extensions to OpenRocket.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Plugins ===&lt;br /&gt;
&lt;br /&gt;
Extensions to OpenRocket are implemented as plugins.  All interfaces that may have multiple implementations should be implemented using plugin interfaces internally.  That way, external plugins may create new implementations.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039;  Many of the internal interfaces have not yet been changed to use the plugin interface.  They will be migrated one by one.  Help is appreciated.&lt;/div&gt;</summary>
		<author><name>Plaa</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Feature_comparison&amp;diff=460</id>
		<title>Feature comparison</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Feature_comparison&amp;diff=460"/>
		<updated>2013-02-09T06:42:59Z</updated>

		<summary type="html">&lt;p&gt;Plaa: /* Design features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides a side-by-side feature comparison of &#039;&#039;&#039;OpenRocket&#039;&#039;&#039; and &#039;&#039;&#039;RockSim&#039;&#039;&#039;.  Both represent the latest version of the software.&lt;br /&gt;
&lt;br /&gt;
While hosted on the OpenRocket wiki site, we have attempted to make this an objective comparison between the functionality of the two software products.  If you think something is wrong or omitted, please [[User:Plaa|contact us]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! License&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Open Source (GPLv3)&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | Proprietary&lt;br /&gt;
|-&lt;br /&gt;
! Price&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Free&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | $124&lt;br /&gt;
|-&lt;br /&gt;
! Supported platforms&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Windows, Mac, Linux&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | Windows, Mac&lt;br /&gt;
|-&lt;br /&gt;
! Supported file formats&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | ORK, RKT&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | RKT&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== UI features ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! Side/back view&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! 3D view&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Design view rotation&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Any angle&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | Side and top only&lt;br /&gt;
|-&lt;br /&gt;
! Live CG/CP view&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Realtime simulation&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Design features ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! Basic components&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Freeform fins&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Asymmetric fin configurations&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Tube fins&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Ring-tail fins&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! External pods&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Canted fins / roll stabilization&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Standard component libraries&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Decals&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Clustering support&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes, modifiable&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | Yes, one-time wizard&lt;br /&gt;
|-&lt;br /&gt;
! Staging support&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes, unlimited&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | Yes, 3 stages&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Simulation features ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! Degrees of freedom&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | 6DOF&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | 3DOF&lt;br /&gt;
|-&lt;br /&gt;
! Geodetic calculation (Earth coordinates, coriolis effect)&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Simulations extensible by own code&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Simulation animation&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Plotting any simulated variables&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Exporting simulated data&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Computing custom variables&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Optimization and analysis ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! General design optimization&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Mass optimization&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | Yes (using general optimizer)&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Stability analysis&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes, per component&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | Yes, per stage&lt;br /&gt;
|-&lt;br /&gt;
! Drag analysis&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes, per component&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | Yes, per stage&lt;br /&gt;
|-&lt;br /&gt;
! Roll analysis&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Printing ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! Schematic view&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Stability information&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Simulation results&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Parts list&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Component templates&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | Nose cone, fin sets&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Nose cone, fin sets, centering rings&lt;br /&gt;
|-&lt;br /&gt;
! Fin placement guide&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Export to PDF&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Plaa</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Feature_comparison&amp;diff=459</id>
		<title>Feature comparison</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Feature_comparison&amp;diff=459"/>
		<updated>2013-02-09T06:37:59Z</updated>

		<summary type="html">&lt;p&gt;Plaa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides a side-by-side feature comparison of &#039;&#039;&#039;OpenRocket&#039;&#039;&#039; and &#039;&#039;&#039;RockSim&#039;&#039;&#039;.  Both represent the latest version of the software.&lt;br /&gt;
&lt;br /&gt;
While hosted on the OpenRocket wiki site, we have attempted to make this an objective comparison between the functionality of the two software products.  If you think something is wrong or omitted, please [[User:Plaa|contact us]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! License&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Open Source (GPLv3)&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | Proprietary&lt;br /&gt;
|-&lt;br /&gt;
! Price&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Free&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | $124&lt;br /&gt;
|-&lt;br /&gt;
! Supported platforms&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Windows, Mac, Linux&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | Windows, Mac&lt;br /&gt;
|-&lt;br /&gt;
! Supported file formats&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | ORK, RKT&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | RKT&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== UI features ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! Side/back view&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! 3D view&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Design view rotation&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Any angle&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | Side and top only&lt;br /&gt;
|-&lt;br /&gt;
! Live CG/CP view&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Realtime simulation&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Design features ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! Basic components&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Freeform fins&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Asymmetric fin configurations&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Tube fins&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Ring-tail fins&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! External pods&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Canted fins / roll stabilization&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Standard component libraries&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Decals&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Clustering support&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes, modifiable&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | Yes, one-time wizard&lt;br /&gt;
|-&lt;br /&gt;
! Staging support&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes, unlimited&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | Yes, 3 stages&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Simulation features ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! Degrees of freedom&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | 6DOF&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | 3DOF&lt;br /&gt;
|-&lt;br /&gt;
! Geodetic calculation (Earth coordinates, coriolis effect)&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Simulations extensible by own code&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Simulation animation&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Plotting any simulated variables&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Exporting simulated data&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Computing custom variables&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Optimization and analysis ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! General design optimization&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Mass optimization&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | Yes (using general optimizer)&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Stability analysis&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes, per component&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | Yes, per stage&lt;br /&gt;
|-&lt;br /&gt;
! Drag analysis&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes, per component&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | Yes, per stage&lt;br /&gt;
|-&lt;br /&gt;
! Roll analysis&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Printing ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! Schematic view&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Stability information&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Simulation results&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Parts list&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Component templates&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | Nose cone, fin sets&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Nose cone, fin sets, centering rings&lt;br /&gt;
|-&lt;br /&gt;
! Fin placement guide&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Export to PDF&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Plaa</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Plugin_system&amp;diff=73</id>
		<title>Plugin system</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Plugin_system&amp;diff=73"/>
		<updated>2012-09-27T10:24:41Z</updated>

		<summary type="html">&lt;p&gt;Plaa: /* Guice */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== The Problem ==&lt;br /&gt;
&lt;br /&gt;
There are many cases where it is desirable to add a feature to openrocket which is useful in a specific context, but not really appropriate for inclusion in openrocket core. For this reason it is desirable to have some kind of plugin framework, as is found in many other applications.&lt;br /&gt;
&lt;br /&gt;
In our case we refer to plugins as something that is installed onto the user&#039;s computer which is found by OR and provides additional functionality. The functionality might be simulation listeners, new motor types etc.&lt;br /&gt;
&lt;br /&gt;
The plugin system has ties to dependency injection, and ideally one solution would cover both plugin discovery related items and dependency injection.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Type of plugins ==&lt;br /&gt;
&lt;br /&gt;
A list of different use-cases for plugins which have different kinds of requirements:&lt;br /&gt;
&lt;br /&gt;
* Simulation listeners:  Tied to a specific simulation, possible to select from a menu and configurable via a UI.  Configuration needs to be stored/loaded from the ORK file.&lt;br /&gt;
* Auxilliary tools:  Plugin adds options to some menu on the main window.  Plugin may interact or modify the rocket.  (Similar to rocket optimization)&lt;br /&gt;
* Optimization modifiers/targets:  Defining new types of optimization targets or parameters.&lt;br /&gt;
* Startup tips:  New startup tip types. (Not implemented yet)&lt;br /&gt;
* New motor types&lt;br /&gt;
* New simulation / aerodynamic computation engines&lt;br /&gt;
&lt;br /&gt;
Some of these may be singletons, others contain state and need to be instantiated properly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* Configuration&lt;br /&gt;
** Some plugins need configuration via a UI&lt;br /&gt;
** How to distinguish what is part of core and what is a plugin?&lt;br /&gt;
* Automatic discovery&lt;br /&gt;
** Drop a JAR to the plugin folder and it will be used.&lt;br /&gt;
* Localisation support&lt;br /&gt;
* Dependency management&lt;br /&gt;
** Some plugins may depend on others and be able to automatically load them. This in turn requires that plugins have a consistent identifier / URI and version number.&lt;br /&gt;
** I don&#039;t think we &#039;&#039;need&#039;&#039; plugin dependency management in the foreseeable future, and such a system may complicate things considerably. -Sampo&lt;br /&gt;
* Plugins implemented in other languages&lt;br /&gt;
** Should be possible to create a plugin that allows writing other plugins in scripting languages (e.g. JavaScript/Ruby)&lt;br /&gt;
* Simplified access to openrocket document / software state&lt;br /&gt;
** E.g. currently selected component&lt;br /&gt;
* Compatibility&lt;br /&gt;
** What happens when changes are made to the core that break the plugin?&lt;br /&gt;
** Should we have some API versioning that defines which plugins are compatible?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Anti requirements ==&lt;br /&gt;
&lt;br /&gt;
(Discuss)&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
Options for discussion:&lt;br /&gt;
&lt;br /&gt;
=== JSPF ===&lt;br /&gt;
http://code.google.com/p/jspf/&lt;br /&gt;
&lt;br /&gt;
Pro:&lt;br /&gt;
* Has direct functionality for loading all JAR files from a certain directory as plugins&lt;br /&gt;
* Straightforward to use&lt;br /&gt;
* Can auto-inject other plugins as dependencies&lt;br /&gt;
* Annotation-based plugin definition&lt;br /&gt;
* Light-weight (JSPF core is 320K)&lt;br /&gt;
* Works on Android (though automatic discovery is not possible)&lt;br /&gt;
&lt;br /&gt;
Cons:&lt;br /&gt;
* Plugin-orientated, not directly meant for DI (though can be used for that somewhat)&lt;br /&gt;
* Plugins are always instantiated by JSPF, you cannot register a plugin instance.  Thus massive use of provider interfaces would be required.&lt;br /&gt;
* All plugins are singletons.  Need to use provider interfaces.&lt;br /&gt;
&lt;br /&gt;
(&#039;&#039;Provider interface&#039;&#039; means that you do not directly ask for a plugin, but instead ask for a plugin provider, which in turn returns 0-N plugin instances.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== ServiceLoader + home made ===&lt;br /&gt;
http://docs.oracle.com/javase/6/docs/api/java/util/ServiceLoader.html&lt;br /&gt;
&lt;br /&gt;
Pro:&lt;br /&gt;
* Simple, built into the JRE&lt;br /&gt;
* Already used in some parts of OR&lt;br /&gt;
* Works on Android&lt;br /&gt;
&lt;br /&gt;
Con:&lt;br /&gt;
* JARs from plugin directory need to be added to classpath separately (not a bit thing with a custom ClassLoader)&lt;br /&gt;
* Does not do DI&lt;br /&gt;
* We need to write framework code for plugin management&lt;br /&gt;
* Plugin writers need to define the proper service META-INF (no annotations)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Reflections + home made ===&lt;br /&gt;
https://code.google.com/p/reflections/&lt;br /&gt;
&lt;br /&gt;
Pro:&lt;br /&gt;
* Allows easily to search the classpath for annotations or interface implementations&lt;br /&gt;
* Full flexibility on plugin structure&lt;br /&gt;
&lt;br /&gt;
Cons:&lt;br /&gt;
* JARs from plugin directory need to be added to classpath separately (not a bit thing with a custom ClassLoader)&lt;br /&gt;
* Does not do DI&lt;br /&gt;
* Unknown does it work on Android&lt;br /&gt;
* The core is lightweight, but requires (at least) Guava and Javassist, altogether ~2MB&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Spring ===&lt;br /&gt;
http://www.springsource.org/&lt;br /&gt;
&lt;br /&gt;
Pro:&lt;br /&gt;
* Proper IoC framework, built for the purpose&lt;br /&gt;
* Supports AutoWiring of dependencies&lt;br /&gt;
* Should be possible to list all beans matching to an interface/annotation&lt;br /&gt;
* Modular, we need core+beans (~1MB)&lt;br /&gt;
&lt;br /&gt;
Cons:&lt;br /&gt;
* JARs from plugin directory need to be added to classpath separately (not a bit thing with a custom ClassLoader)&lt;br /&gt;
* Unknown does it work on Android&lt;br /&gt;
* Need some boilerplate code for pluging functionality&lt;br /&gt;
* Might need provider interfaces (or some black magic using BeanFactories etc)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Guice ===&lt;br /&gt;
http://code.google.com/p/google-guice/&lt;br /&gt;
&lt;br /&gt;
Pro:&lt;br /&gt;
* Probably more lightweight than Spring&lt;br /&gt;
* Proper IoC framework&lt;br /&gt;
* Works on Android&lt;br /&gt;
* Plugin-like systems may be supported using Multibindings (http://code.google.com/p/google-guice/wiki/Multibindings)&lt;br /&gt;
&lt;br /&gt;
Cons:&lt;br /&gt;
* Unfamiliar to Sampo  :)&lt;br /&gt;
&lt;br /&gt;
=== Others ===&lt;br /&gt;
&lt;br /&gt;
Other options that have been considered but seem too immature or too heavy to use:&lt;br /&gt;
&lt;br /&gt;
* JPF (http://jpf.sourceforge.net/), seems more customizable and configurable than JSPF, but not sure do we need the extra muscle. Looks functional, but last activity was in 2007.&lt;br /&gt;
* OSGi (http://en.wikipedia.org/wiki/OSGi), even more heavy-weight service discovery mechanism, similar to (or used by) Eclipse plug-in system.&lt;br /&gt;
* Java Module System (JSR 277), slated for inclusion to Java 7, but wasn&#039;t.  Seems pretty inactive (early draft from 2006) and seems to include language changes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== A Rough Interface Design (from a plugin writers point of view) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;This section considers plugins from the point of view of &amp;quot;auxilliary tool&amp;quot; plugins, which is a minority use case.  Take this section with a grain of salt.&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
General operation:&lt;br /&gt;
&lt;br /&gt;
The name for each plugin will correspond to an item in the plugins menu.&lt;br /&gt;
Subitems of each item in the plugins menu will be automatically generated as follows:&lt;br /&gt;
* About plugin : makes an about box, present for all plugins.&lt;br /&gt;
* for each &#039;enableable&#039; modifier, a check box of the form [X] Enable ModifierName will be generated. When enabled, the enable method of the modifier will be called. This would then do what is necessary to modify OR to always run the plugin code, for example: make the simulation always load the simulation modifier.&lt;br /&gt;
* for each &#039;configurable&#039; modifier, an item which opens the configuration window&lt;br /&gt;
* any additional menu items as defined in each modifier. For example, a rocket modifier might have an item which changes the selected component in some way.&lt;br /&gt;
&lt;br /&gt;
Code design:&lt;br /&gt;
&lt;br /&gt;
 interface Plugin:&lt;br /&gt;
  - name, version, URI, date, author, licence, description&lt;br /&gt;
  - list of dependent plugin URI&#039;s and versions&lt;br /&gt;
  - list of conflicting plugin URI&#039;s and versions&lt;br /&gt;
  - list of modifiers&lt;br /&gt;
&lt;br /&gt;
 abstract class AbstractPlugin implements Plugin:&lt;br /&gt;
  * everything required for loading, setting menu, translations etc&lt;br /&gt;
  - getSetting(key), setSetting(key, value) : a simple mechanism for locally storing various settings&lt;br /&gt;
  - getFile(name), storeFile(file), rmfile(name) : a simple mechanism for locally storing cache files etc&lt;br /&gt;
&lt;br /&gt;
 static class MyPlugin extends AbstractPlugin:&lt;br /&gt;
  * the users implementation&lt;br /&gt;
&lt;br /&gt;
 files:&lt;br /&gt;
  messages_?.properties : translations to use, inside plugin jar&lt;br /&gt;
&lt;br /&gt;
 interface Modifier:&lt;br /&gt;
  - plugin this modifier is a member of&lt;br /&gt;
  - enableable boolean&lt;br /&gt;
  - enable(), disable()&lt;br /&gt;
  - configurable boolean&lt;br /&gt;
  - configurator&lt;br /&gt;
  - additional menu items and actions&lt;br /&gt;
&lt;br /&gt;
 abstract class RocketModifier implements Modifier:&lt;br /&gt;
  - enable(), disable() : &lt;br /&gt;
  - getSelectedComponent() : returns currently selected rocket component&lt;br /&gt;
  - onChange() : called when a component is changed&lt;br /&gt;
  * various other helper methods as necessary&lt;br /&gt;
&lt;br /&gt;
 static class MyRocketModifier:&lt;br /&gt;
  * the users implementation of something that works with or modifies the rocket design&lt;br /&gt;
&lt;br /&gt;
 abstract class SimulationModifier implements Modifier:&lt;br /&gt;
  * basically everything currently in simulation listeners, possibly simplified (do we need 3 separate interfaces?)&lt;br /&gt;
&lt;br /&gt;
 static class MySimulationModifier extends AbstractSimulationModifier:&lt;br /&gt;
  * the users implementation&lt;br /&gt;
&lt;br /&gt;
 abstract class configurator:&lt;br /&gt;
  a class which automatically generates a standardised configuration dialog box based on just a simple list of variables and selectors.&lt;br /&gt;
  Variables would be saved automatically when the OK button is clicked using plugin setSettings().&lt;/div&gt;</summary>
		<author><name>Plaa</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Plugin_system&amp;diff=72</id>
		<title>Plugin system</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Plugin_system&amp;diff=72"/>
		<updated>2012-09-26T13:11:55Z</updated>

		<summary type="html">&lt;p&gt;Plaa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== The Problem ==&lt;br /&gt;
&lt;br /&gt;
There are many cases where it is desirable to add a feature to openrocket which is useful in a specific context, but not really appropriate for inclusion in openrocket core. For this reason it is desirable to have some kind of plugin framework, as is found in many other applications.&lt;br /&gt;
&lt;br /&gt;
In our case we refer to plugins as something that is installed onto the user&#039;s computer which is found by OR and provides additional functionality. The functionality might be simulation listeners, new motor types etc.&lt;br /&gt;
&lt;br /&gt;
The plugin system has ties to dependency injection, and ideally one solution would cover both plugin discovery related items and dependency injection.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Type of plugins ==&lt;br /&gt;
&lt;br /&gt;
A list of different use-cases for plugins which have different kinds of requirements:&lt;br /&gt;
&lt;br /&gt;
* Simulation listeners:  Tied to a specific simulation, possible to select from a menu and configurable via a UI.  Configuration needs to be stored/loaded from the ORK file.&lt;br /&gt;
* Auxilliary tools:  Plugin adds options to some menu on the main window.  Plugin may interact or modify the rocket.  (Similar to rocket optimization)&lt;br /&gt;
* Optimization modifiers/targets:  Defining new types of optimization targets or parameters.&lt;br /&gt;
* Startup tips:  New startup tip types. (Not implemented yet)&lt;br /&gt;
* New motor types&lt;br /&gt;
* New simulation / aerodynamic computation engines&lt;br /&gt;
&lt;br /&gt;
Some of these may be singletons, others contain state and need to be instantiated properly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* Configuration&lt;br /&gt;
** Some plugins need configuration via a UI&lt;br /&gt;
** How to distinguish what is part of core and what is a plugin?&lt;br /&gt;
* Automatic discovery&lt;br /&gt;
** Drop a JAR to the plugin folder and it will be used.&lt;br /&gt;
* Localisation support&lt;br /&gt;
* Dependency management&lt;br /&gt;
** Some plugins may depend on others and be able to automatically load them. This in turn requires that plugins have a consistent identifier / URI and version number.&lt;br /&gt;
** I don&#039;t think we &#039;&#039;need&#039;&#039; plugin dependency management in the foreseeable future, and such a system may complicate things considerably. -Sampo&lt;br /&gt;
* Plugins implemented in other languages&lt;br /&gt;
** Should be possible to create a plugin that allows writing other plugins in scripting languages (e.g. JavaScript/Ruby)&lt;br /&gt;
* Simplified access to openrocket document / software state&lt;br /&gt;
** E.g. currently selected component&lt;br /&gt;
* Compatibility&lt;br /&gt;
** What happens when changes are made to the core that break the plugin?&lt;br /&gt;
** Should we have some API versioning that defines which plugins are compatible?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Anti requirements ==&lt;br /&gt;
&lt;br /&gt;
(Discuss)&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
Options for discussion:&lt;br /&gt;
&lt;br /&gt;
=== JSPF ===&lt;br /&gt;
http://code.google.com/p/jspf/&lt;br /&gt;
&lt;br /&gt;
Pro:&lt;br /&gt;
* Has direct functionality for loading all JAR files from a certain directory as plugins&lt;br /&gt;
* Straightforward to use&lt;br /&gt;
* Can auto-inject other plugins as dependencies&lt;br /&gt;
* Annotation-based plugin definition&lt;br /&gt;
* Light-weight (JSPF core is 320K)&lt;br /&gt;
* Works on Android (though automatic discovery is not possible)&lt;br /&gt;
&lt;br /&gt;
Cons:&lt;br /&gt;
* Plugin-orientated, not directly meant for DI (though can be used for that somewhat)&lt;br /&gt;
* Plugins are always instantiated by JSPF, you cannot register a plugin instance.  Thus massive use of provider interfaces would be required.&lt;br /&gt;
* All plugins are singletons.  Need to use provider interfaces.&lt;br /&gt;
&lt;br /&gt;
(&#039;&#039;Provider interface&#039;&#039; means that you do not directly ask for a plugin, but instead ask for a plugin provider, which in turn returns 0-N plugin instances.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== ServiceLoader + home made ===&lt;br /&gt;
http://docs.oracle.com/javase/6/docs/api/java/util/ServiceLoader.html&lt;br /&gt;
&lt;br /&gt;
Pro:&lt;br /&gt;
* Simple, built into the JRE&lt;br /&gt;
* Already used in some parts of OR&lt;br /&gt;
* Works on Android&lt;br /&gt;
&lt;br /&gt;
Con:&lt;br /&gt;
* JARs from plugin directory need to be added to classpath separately (not a bit thing with a custom ClassLoader)&lt;br /&gt;
* Does not do DI&lt;br /&gt;
* We need to write framework code for plugin management&lt;br /&gt;
* Plugin writers need to define the proper service META-INF (no annotations)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Reflections + home made ===&lt;br /&gt;
https://code.google.com/p/reflections/&lt;br /&gt;
&lt;br /&gt;
Pro:&lt;br /&gt;
* Allows easily to search the classpath for annotations or interface implementations&lt;br /&gt;
* Full flexibility on plugin structure&lt;br /&gt;
&lt;br /&gt;
Cons:&lt;br /&gt;
* JARs from plugin directory need to be added to classpath separately (not a bit thing with a custom ClassLoader)&lt;br /&gt;
* Does not do DI&lt;br /&gt;
* Unknown does it work on Android&lt;br /&gt;
* The core is lightweight, but requires (at least) Guava and Javassist, altogether ~2MB&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Spring ===&lt;br /&gt;
http://www.springsource.org/&lt;br /&gt;
&lt;br /&gt;
Pro:&lt;br /&gt;
* Proper IoC framework, built for the purpose&lt;br /&gt;
* Supports AutoWiring of dependencies&lt;br /&gt;
* Should be possible to list all beans matching to an interface/annotation&lt;br /&gt;
* Modular, we need core+beans (~1MB)&lt;br /&gt;
&lt;br /&gt;
Cons:&lt;br /&gt;
* JARs from plugin directory need to be added to classpath separately (not a bit thing with a custom ClassLoader)&lt;br /&gt;
* Unknown does it work on Android&lt;br /&gt;
* Need some boilerplate code for pluging functionality&lt;br /&gt;
* Might need provider interfaces (or some black magic using BeanFactories etc)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Guice ===&lt;br /&gt;
http://code.google.com/p/google-guice/&lt;br /&gt;
&lt;br /&gt;
Pro:&lt;br /&gt;
* Probably more lightweight than Spring&lt;br /&gt;
* Proper IoC framework&lt;br /&gt;
* Works on Android&lt;br /&gt;
&lt;br /&gt;
Cons:&lt;br /&gt;
* Does not support autowiring, all dependencies need to be configured by hand (?)&lt;br /&gt;
* AFAIK does not offer a list of matching beans, i.e. may not be suitable for the plugin system&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Others ===&lt;br /&gt;
&lt;br /&gt;
Other options that have been considered but seem too immature or too heavy to use:&lt;br /&gt;
&lt;br /&gt;
* JPF (http://jpf.sourceforge.net/), seems more customizable and configurable than JSPF, but not sure do we need the extra muscle. Looks functional, but last activity was in 2007.&lt;br /&gt;
* OSGi (http://en.wikipedia.org/wiki/OSGi), even more heavy-weight service discovery mechanism, similar to (or used by) Eclipse plug-in system.&lt;br /&gt;
* Java Module System (JSR 277), slated for inclusion to Java 7, but wasn&#039;t.  Seems pretty inactive (early draft from 2006) and seems to include language changes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== A Rough Interface Design (from a plugin writers point of view) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;This section considers plugins from the point of view of &amp;quot;auxilliary tool&amp;quot; plugins, which is a minority use case.  Take this section with a grain of salt.&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
General operation:&lt;br /&gt;
&lt;br /&gt;
The name for each plugin will correspond to an item in the plugins menu.&lt;br /&gt;
Subitems of each item in the plugins menu will be automatically generated as follows:&lt;br /&gt;
* About plugin : makes an about box, present for all plugins.&lt;br /&gt;
* for each &#039;enableable&#039; modifier, a check box of the form [X] Enable ModifierName will be generated. When enabled, the enable method of the modifier will be called. This would then do what is necessary to modify OR to always run the plugin code, for example: make the simulation always load the simulation modifier.&lt;br /&gt;
* for each &#039;configurable&#039; modifier, an item which opens the configuration window&lt;br /&gt;
* any additional menu items as defined in each modifier. For example, a rocket modifier might have an item which changes the selected component in some way.&lt;br /&gt;
&lt;br /&gt;
Code design:&lt;br /&gt;
&lt;br /&gt;
 interface Plugin:&lt;br /&gt;
  - name, version, URI, date, author, licence, description&lt;br /&gt;
  - list of dependent plugin URI&#039;s and versions&lt;br /&gt;
  - list of conflicting plugin URI&#039;s and versions&lt;br /&gt;
  - list of modifiers&lt;br /&gt;
&lt;br /&gt;
 abstract class AbstractPlugin implements Plugin:&lt;br /&gt;
  * everything required for loading, setting menu, translations etc&lt;br /&gt;
  - getSetting(key), setSetting(key, value) : a simple mechanism for locally storing various settings&lt;br /&gt;
  - getFile(name), storeFile(file), rmfile(name) : a simple mechanism for locally storing cache files etc&lt;br /&gt;
&lt;br /&gt;
 static class MyPlugin extends AbstractPlugin:&lt;br /&gt;
  * the users implementation&lt;br /&gt;
&lt;br /&gt;
 files:&lt;br /&gt;
  messages_?.properties : translations to use, inside plugin jar&lt;br /&gt;
&lt;br /&gt;
 interface Modifier:&lt;br /&gt;
  - plugin this modifier is a member of&lt;br /&gt;
  - enableable boolean&lt;br /&gt;
  - enable(), disable()&lt;br /&gt;
  - configurable boolean&lt;br /&gt;
  - configurator&lt;br /&gt;
  - additional menu items and actions&lt;br /&gt;
&lt;br /&gt;
 abstract class RocketModifier implements Modifier:&lt;br /&gt;
  - enable(), disable() : &lt;br /&gt;
  - getSelectedComponent() : returns currently selected rocket component&lt;br /&gt;
  - onChange() : called when a component is changed&lt;br /&gt;
  * various other helper methods as necessary&lt;br /&gt;
&lt;br /&gt;
 static class MyRocketModifier:&lt;br /&gt;
  * the users implementation of something that works with or modifies the rocket design&lt;br /&gt;
&lt;br /&gt;
 abstract class SimulationModifier implements Modifier:&lt;br /&gt;
  * basically everything currently in simulation listeners, possibly simplified (do we need 3 separate interfaces?)&lt;br /&gt;
&lt;br /&gt;
 static class MySimulationModifier extends AbstractSimulationModifier:&lt;br /&gt;
  * the users implementation&lt;br /&gt;
&lt;br /&gt;
 abstract class configurator:&lt;br /&gt;
  a class which automatically generates a standardised configuration dialog box based on just a simple list of variables and selectors.&lt;br /&gt;
  Variables would be saved automatically when the OK button is clicked using plugin setSettings().&lt;/div&gt;</summary>
		<author><name>Plaa</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Plugin_system&amp;diff=71</id>
		<title>Plugin system</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Plugin_system&amp;diff=71"/>
		<updated>2012-09-26T12:59:12Z</updated>

		<summary type="html">&lt;p&gt;Plaa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== The Problem ==&lt;br /&gt;
&lt;br /&gt;
There are many cases where it is desirable to add a feature to openrocket which is useful in a specific context, but not really appropriate for inclusion in openrocket core. For this reason it is desirable to have some kind of plugin framework, as is found in many other applications.&lt;br /&gt;
&lt;br /&gt;
In our case we refer to plugins as something that is installed onto the user&#039;s computer which is found by OR and provides additional functionality. The functionality might be simulation listeners, new motor types etc.&lt;br /&gt;
&lt;br /&gt;
The plugin system has ties to dependency injection, and ideally one solution would cover both plugin discovery related items and dependency injection.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Type of plugins ==&lt;br /&gt;
&lt;br /&gt;
A list of different use-cases for plugins which have different kinds of requirements:&lt;br /&gt;
&lt;br /&gt;
* Simulation listeners:  Tied to a specific simulation, possible to select from a menu and configurable via a UI.  Configuration needs to be stored/loaded from the ORK file.&lt;br /&gt;
* Auxilliary tools:  Plugin adds options to some menu on the main window.  Plugin may interact or modify the rocket.  (Similar to rocket optimization)&lt;br /&gt;
* Optimization modifiers/targets:  Defining new types of optimization targets or parameters.&lt;br /&gt;
* Startup tips:  New startup tip types. (Not implemented yet)&lt;br /&gt;
* New motor types&lt;br /&gt;
* New simulation / aerodynamic computation engines&lt;br /&gt;
&lt;br /&gt;
Some of these may be singletons, others contain state and need to be instantiated properly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* Configuration&lt;br /&gt;
  * Some plugins need configuration via a UI&lt;br /&gt;
  * How to distinguish what is part of core and what is a plugin?&lt;br /&gt;
* Automatic discovery&lt;br /&gt;
  * Drop a JAR to the plugin folder and it will be used.&lt;br /&gt;
* Localisation support&lt;br /&gt;
* Dependency management&lt;br /&gt;
  * Some plugins may depend on others and be able to automatically load them. This in turn requires that plugins have a consistent identifier / URI and version number.&lt;br /&gt;
  * I don&#039;t think we &#039;&#039;need&#039;&#039; plugin dependency management in the foreseeable future, and such a system may complicate things considerably. -Sampo&lt;br /&gt;
* Plugins implemented in other languages&lt;br /&gt;
  * Should be possible to create a plugin that allows writing other plugins in scripting languages (e.g. JavaScript/Ruby)&lt;br /&gt;
* Simplified access to openrocket document / software state&lt;br /&gt;
  * E.g. currently selected component&lt;br /&gt;
* Compatibility&lt;br /&gt;
  * What happens when changes are made to the core that break the plugin?&lt;br /&gt;
  * Should we have some API versioning that defines which plugins are compatible?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Anti requirements ==&lt;br /&gt;
&lt;br /&gt;
(Discuss)&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
Options for discussion:&lt;br /&gt;
&lt;br /&gt;
=== JSPF ===&lt;br /&gt;
http://code.google.com/p/jspf/&lt;br /&gt;
&lt;br /&gt;
Pro:&lt;br /&gt;
* Has direct functionality for loading all JAR files from a certain directory as plugins&lt;br /&gt;
* Straightforward to use&lt;br /&gt;
* Can auto-inject other plugins as dependencies&lt;br /&gt;
* Annotation-based plugin definition&lt;br /&gt;
* Light-weight (JSPF core is 320K)&lt;br /&gt;
* Works on Android (though automatic discovery is not possible)&lt;br /&gt;
&lt;br /&gt;
Cons:&lt;br /&gt;
* Plugin-orientated, not directly meant for DI (though can be used for that somewhat)&lt;br /&gt;
* Plugins are always instantiated by JSPF, you cannot register a plugin instance.  Thus massive use of provider interfaces would be required.&lt;br /&gt;
* All plugins are singletons.  Need to use provider interfaces.&lt;br /&gt;
&lt;br /&gt;
(&#039;&#039;Provider interface&#039;&#039; means that you do not directly ask for a plugin, but instead ask for a plugin provider, which in turn returns 0-N plugin instances.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== ServiceLoader + home made ===&lt;br /&gt;
http://docs.oracle.com/javase/6/docs/api/java/util/ServiceLoader.html&lt;br /&gt;
&lt;br /&gt;
Pro:&lt;br /&gt;
* Simple, built into the JRE&lt;br /&gt;
* Already used in some parts of OR&lt;br /&gt;
* Works on Android&lt;br /&gt;
&lt;br /&gt;
Con:&lt;br /&gt;
* JARs from plugin directory need to be added to classpath separately (not a bit thing with a custom ClassLoader)&lt;br /&gt;
* Does not do DI&lt;br /&gt;
* We need to write framework code for plugin management&lt;br /&gt;
* Plugin writers need to define the proper service META-INF (no annotations)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Reflections + home made ===&lt;br /&gt;
https://code.google.com/p/reflections/&lt;br /&gt;
&lt;br /&gt;
Pro:&lt;br /&gt;
* Allows easily to search the classpath for annotations or interface implementations&lt;br /&gt;
* Full flexibility on plugin structure&lt;br /&gt;
&lt;br /&gt;
Cons:&lt;br /&gt;
* JARs from plugin directory need to be added to classpath separately (not a bit thing with a custom ClassLoader)&lt;br /&gt;
* Does not do DI&lt;br /&gt;
* Unknown does it work on Android&lt;br /&gt;
* The core is lightweight, but requires (at least) Guava and Javassist, altogether ~2MB&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Spring ===&lt;br /&gt;
http://www.springsource.org/&lt;br /&gt;
&lt;br /&gt;
Pro:&lt;br /&gt;
* Proper IoC framework, built for the purpose&lt;br /&gt;
* Supports AutoWiring of dependencies&lt;br /&gt;
* Should be possible to list beans matching to an interface/annotation&lt;br /&gt;
* Modular, we need core+beans (~1MB)&lt;br /&gt;
&lt;br /&gt;
Cons:&lt;br /&gt;
* JARs from plugin directory need to be added to classpath separately (not a bit thing with a custom ClassLoader)&lt;br /&gt;
* Unknown does it work on Android&lt;br /&gt;
* Need some boilerplate code for pluging functionality&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Others ===&lt;br /&gt;
&lt;br /&gt;
Other options that have been considered but seem too immature or too heavy to use:&lt;br /&gt;
&lt;br /&gt;
* JPF (http://jpf.sourceforge.net/), seems more customizable and configurable than JSPF, but not sure do we need the extra muscle. Looks functional, but last activity was in 2007.&lt;br /&gt;
* OSGi (http://en.wikipedia.org/wiki/OSGi), even more heavy-weight service discovery mechanism, similar to (or used by) Eclipse plug-in system.&lt;br /&gt;
* Java Module System (JSR 277), slated for inclusion to Java 7, but wasn&#039;t.  Seems pretty inactive (early draft from 2006) and seems to include language changes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== A Rough Interface Design (from a plugin writers point of view) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;This section considers plugins from the point of view of &amp;quot;auxilliary tool&amp;quot; plugins, which is a minority use case.  Take this section with a grain of salt.&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
General operation:&lt;br /&gt;
&lt;br /&gt;
The name for each plugin will correspond to an item in the plugins menu.&lt;br /&gt;
Subitems of each item in the plugins menu will be automatically generated as follows:&lt;br /&gt;
* About plugin : makes an about box, present for all plugins.&lt;br /&gt;
* for each &#039;enableable&#039; modifier, a check box of the form [X] Enable ModifierName will be generated. When enabled, the enable method of the modifier will be called. This would then do what is necessary to modify OR to always run the plugin code, for example: make the simulation always load the simulation modifier.&lt;br /&gt;
* for each &#039;configurable&#039; modifier, an item which opens the configuration window&lt;br /&gt;
* any additional menu items as defined in each modifier. For example, a rocket modifier might have an item which changes the selected component in some way.&lt;br /&gt;
&lt;br /&gt;
Code design:&lt;br /&gt;
&lt;br /&gt;
 interface Plugin:&lt;br /&gt;
  - name, version, URI, date, author, licence, description&lt;br /&gt;
  - list of dependent plugin URI&#039;s and versions&lt;br /&gt;
  - list of conflicting plugin URI&#039;s and versions&lt;br /&gt;
  - list of modifiers&lt;br /&gt;
&lt;br /&gt;
 abstract class AbstractPlugin implements Plugin:&lt;br /&gt;
  * everything required for loading, setting menu, translations etc&lt;br /&gt;
  - getSetting(key), setSetting(key, value) : a simple mechanism for locally storing various settings&lt;br /&gt;
  - getFile(name), storeFile(file), rmfile(name) : a simple mechanism for locally storing cache files etc&lt;br /&gt;
&lt;br /&gt;
 static class MyPlugin extends AbstractPlugin:&lt;br /&gt;
  * the users implementation&lt;br /&gt;
&lt;br /&gt;
 files:&lt;br /&gt;
  messages_?.properties : translations to use, inside plugin jar&lt;br /&gt;
&lt;br /&gt;
 interface Modifier:&lt;br /&gt;
  - plugin this modifier is a member of&lt;br /&gt;
  - enableable boolean&lt;br /&gt;
  - enable(), disable()&lt;br /&gt;
  - configurable boolean&lt;br /&gt;
  - configurator&lt;br /&gt;
  - additional menu items and actions&lt;br /&gt;
&lt;br /&gt;
 abstract class RocketModifier implements Modifier:&lt;br /&gt;
  - enable(), disable() : &lt;br /&gt;
  - getSelectedComponent() : returns currently selected rocket component&lt;br /&gt;
  - onChange() : called when a component is changed&lt;br /&gt;
  * various other helper methods as necessary&lt;br /&gt;
&lt;br /&gt;
 static class MyRocketModifier:&lt;br /&gt;
  * the users implementation of something that works with or modifies the rocket design&lt;br /&gt;
&lt;br /&gt;
 abstract class SimulationModifier implements Modifier:&lt;br /&gt;
  * basically everything currently in simulation listeners, possibly simplified (do we need 3 separate interfaces?)&lt;br /&gt;
&lt;br /&gt;
 static class MySimulationModifier extends AbstractSimulationModifier:&lt;br /&gt;
  * the users implementation&lt;br /&gt;
&lt;br /&gt;
 abstract class configurator:&lt;br /&gt;
  a class which automatically generates a standardised configuration dialog box based on just a simple list of variables and selectors.&lt;br /&gt;
  Variables would be saved automatically when the OK button is clicked using plugin setSettings().&lt;/div&gt;</summary>
		<author><name>Plaa</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Plugin_system&amp;diff=70</id>
		<title>Plugin system</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Plugin_system&amp;diff=70"/>
		<updated>2012-09-26T12:57:44Z</updated>

		<summary type="html">&lt;p&gt;Plaa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== The Problem ==&lt;br /&gt;
&lt;br /&gt;
There are many cases where it is desirable to add a feature to openrocket which is useful in a specific context, but not really appropriate for inclusion in openrocket core. For this reason it is desirable to have some kind of plugin framework, as is found in many other applications.&lt;br /&gt;
&lt;br /&gt;
In our case we refer to plugins as something that is installed onto the user&#039;s computer which is found by OR and provides additional functionality. The functionality might be simulation listeners, new motor types etc.&lt;br /&gt;
&lt;br /&gt;
The plugin system has ties to dependency injection, and ideally one solution would cover both plugin discovery related items and dependency injection.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Type of plugins ==&lt;br /&gt;
&lt;br /&gt;
A list of different use-cases for plugins which have different kinds of requirements:&lt;br /&gt;
&lt;br /&gt;
* Simulation listeners:  Tied to a specific simulation, possible to select from a menu and configurable via a UI.  Configuration needs to be stored/loaded from the ORK file.&lt;br /&gt;
* Auxilliary tools:  Plugin adds options to some menu on the main window.  Plugin may interact or modify the rocket.  (Similar to rocket optimization)&lt;br /&gt;
* Optimization modifiers/targets:  Defining new types of optimization targets or parameters.&lt;br /&gt;
* Startup tips:  New startup tip types. (Not implemented yet)&lt;br /&gt;
* New motor types&lt;br /&gt;
* New simulation / aerodynamic computation engines&lt;br /&gt;
&lt;br /&gt;
Some of these may be singletons, others contain state and need to be instantiated properly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* Configuration&lt;br /&gt;
  * Some plugins need configuration via a UI&lt;br /&gt;
  * How to distinguish what is part of core and what is a plugin?&lt;br /&gt;
* Automatic discovery&lt;br /&gt;
  * Drop a JAR to the plugin folder and it will be used.&lt;br /&gt;
* Localisation support&lt;br /&gt;
* Dependency management&lt;br /&gt;
  * Some plugins may depend on others and be able to automatically load them. This in turn requires that plugins have a consistent identifier / URI and version number.&lt;br /&gt;
  * I don&#039;t think we &#039;&#039;need&#039;&#039; plugin dependency management in the foreseeable future, and such a system may complicate things considerably. -Sampo&lt;br /&gt;
* Plugins implemented in other languages&lt;br /&gt;
  * Should be possible to create a plugin that allows writing other plugins in scripting languages (e.g. JavaScript/Ruby)&lt;br /&gt;
* Simplified access to openrocket document / software state&lt;br /&gt;
  * E.g. currently selected component&lt;br /&gt;
* Compatibility&lt;br /&gt;
  * What happens when changes are made to the core that break the plugin?&lt;br /&gt;
  * Should we have some API versioning that defines which plugins are compatible?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Anti requirements ==&lt;br /&gt;
&lt;br /&gt;
(Discuss)&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
Options for discussion:&lt;br /&gt;
&lt;br /&gt;
=== JSPF ===&lt;br /&gt;
http://code.google.com/p/jspf/&lt;br /&gt;
&lt;br /&gt;
Pro:&lt;br /&gt;
* Has direct functionality for loading all JAR files from a certain directory as plugins&lt;br /&gt;
* Straightforward to use&lt;br /&gt;
* Can auto-inject other plugins as dependencies&lt;br /&gt;
* Annotation-based plugin definition&lt;br /&gt;
* Light-weight (JSPF core is 320K)&lt;br /&gt;
* Works on Android (though automatic discovery is not possible)&lt;br /&gt;
&lt;br /&gt;
Cons:&lt;br /&gt;
* Plugin-orientated, not directly meant for DI (though can be used for that somewhat)&lt;br /&gt;
* Plugins are always instantiated by JSPF, you cannot register a plugin instance.  Thus massive use of provider interfaces would be required.&lt;br /&gt;
* All plugins are singletons.  Need to use provider interfaces.&lt;br /&gt;
&lt;br /&gt;
(&#039;&#039;Provider interface&#039;&#039; means that you do not directly ask for a plugin, but instead ask for a plugin provider, which in turn returns 0-N plugin instances.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== ServiceLoader + home made ===&lt;br /&gt;
http://docs.oracle.com/javase/6/docs/api/java/util/ServiceLoader.html&lt;br /&gt;
&lt;br /&gt;
Pro:&lt;br /&gt;
* Simple, built into the JRE&lt;br /&gt;
* Already used in some parts of OR&lt;br /&gt;
* Works on Android&lt;br /&gt;
&lt;br /&gt;
Con:&lt;br /&gt;
* JARs from plugin directory need to be added to classpath separately (not a bit thing with a custom ClassLoader)&lt;br /&gt;
* Does not do DI&lt;br /&gt;
* We need to write framework code for plugin management&lt;br /&gt;
* Plugin writers need to define the proper service META-INF (no annotations)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Reflections + home made ===&lt;br /&gt;
https://code.google.com/p/reflections/&lt;br /&gt;
&lt;br /&gt;
Pro:&lt;br /&gt;
* Allows easily to search the classpath for annotations or interface implementations&lt;br /&gt;
* Full flexibility on plugin structure&lt;br /&gt;
&lt;br /&gt;
Cons:&lt;br /&gt;
* JARs from plugin directory need to be added to classpath separately (not a bit thing with a custom ClassLoader)&lt;br /&gt;
* Does not do DI&lt;br /&gt;
* Unknown does it work on Android&lt;br /&gt;
* The core is lightweight, but requires (at least) Guava and Javassist, altogether ~2MB&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Spring ===&lt;br /&gt;
http://www.springsource.org/&lt;br /&gt;
&lt;br /&gt;
Pro:&lt;br /&gt;
* Proper IoC framework, built for the purpose&lt;br /&gt;
* Supports AutoWiring of dependencies&lt;br /&gt;
* Should be possible to list beans matching to an interface/annotation&lt;br /&gt;
* Modular, we need core+beans (~1MB)&lt;br /&gt;
&lt;br /&gt;
Cons:&lt;br /&gt;
* JARs from plugin directory need to be added to classpath separately (not a bit thing with a custom ClassLoader)&lt;br /&gt;
* Unknown does it work on Android&lt;br /&gt;
* Need some boilerplate code for pluging functionality&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Others ===&lt;br /&gt;
&lt;br /&gt;
Other options that have been considered but seem too immature or too heavy to use:&lt;br /&gt;
&lt;br /&gt;
* JPF (http://jpf.sourceforge.net/), seems more customizable and&lt;br /&gt;
configurable than JSPF, but not sure do we need the extra muscle.&lt;br /&gt;
Looks functional, but last activity was in 2007.&lt;br /&gt;
* OSGi (http://en.wikipedia.org/wiki/OSGi), even more heavy-weight&lt;br /&gt;
service discovery mechanism, similar to (or used by) Eclipse plug-in&lt;br /&gt;
system.&lt;br /&gt;
* Java Module System (JSR 277), slated for inclusion to Java 7, but&lt;br /&gt;
wasn&#039;t.  Seems pretty inactive (early draft from 2006) and seems to&lt;br /&gt;
include language changes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Plugin frameworks ===&lt;br /&gt;
&lt;br /&gt;
Various plug-in frameworks exist for java, and may significantly reduce the time required to implement the plugin feature.&lt;br /&gt;
&lt;br /&gt;
Directly coding the plug-in just requires the new interface to extend the&lt;br /&gt;
Plugin interface and to add the annotations to the implementation&lt;br /&gt;
class. This is a simple and light-weight solution which may well be quite suitable.&lt;br /&gt;
&lt;br /&gt;
Of the alternative plug-in frameworks which exist, the most&lt;br /&gt;
interesting is JSPF (http://code.google.com/p/jspf/).  Here&lt;br /&gt;
you can just say &amp;quot;load all JAR files from this directory as plug-ins&amp;quot;&lt;br /&gt;
and &amp;quot;add all plug-ins from the current classpath&amp;quot;. You can then query&lt;br /&gt;
for plug-ins using a variety of methods.  It seems very simple to use,&lt;br /&gt;
it uses pojos and pure interfaces, and plug-ins themselves are made&lt;br /&gt;
just by implementing the interface and adding some annotations.&lt;br /&gt;
&lt;br /&gt;
JSPF also seems to work on Android, though the discovery system is&lt;br /&gt;
somewhat dysfunctional, and you need to list all of the plug-in&lt;br /&gt;
classes explicitly (http://code.google.com/p/jspf/wiki/RunningOnAndroid).  This should be&lt;br /&gt;
okay, we just need to have an additional implementation for Android&lt;br /&gt;
that lists the necessary plug-ins for the basic functionality.  I&lt;br /&gt;
don&#039;t see it as a problem if some of the extensibility is missing on&lt;br /&gt;
Android.&lt;br /&gt;
&lt;br /&gt;
Other frameworks that have been considered:&lt;br /&gt;
&lt;br /&gt;
* ServiceLoader class + startup scripting.  Simple, built-in, but we&lt;br /&gt;
need to implement the plug-in system ourselves.&lt;br /&gt;
* JPF (http://jpf.sourceforge.net/), seems more customizable and&lt;br /&gt;
configurable than JSPF, but not sure do we need the extra muscle.&lt;br /&gt;
Looks functional, but last activity was in 2007.&lt;br /&gt;
* OSGi (http://en.wikipedia.org/wiki/OSGi), even more heavy-weight&lt;br /&gt;
service discovery mechanism, similar to (or used by) Eclipse plug-in&lt;br /&gt;
system.&lt;br /&gt;
* Java Module System (JSR 277), slated for inclusion to Java 7, but&lt;br /&gt;
wasn&#039;t.  Seems pretty inactive (early draft from 2006) and seems to&lt;br /&gt;
include language changes.&lt;br /&gt;
&lt;br /&gt;
== A Rough Interface Design (from a plugin writers point of view) ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;This section considers plugins from the point of view of &amp;quot;auxilliary tool&amp;quot; plugins, which is a minority use case.  Take this section with a grain of salt.&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
General operation:&lt;br /&gt;
&lt;br /&gt;
The name for each plugin will correspond to an item in the plugins menu.&lt;br /&gt;
Subitems of each item in the plugins menu will be automatically generated as follows:&lt;br /&gt;
* About plugin : makes an about box, present for all plugins.&lt;br /&gt;
* for each &#039;enableable&#039; modifier, a check box of the form [X] Enable ModifierName will be generated. When enabled, the enable method of the modifier will be called. This would then do what is necessary to modify OR to always run the plugin code, for example: make the simulation always load the simulation modifier.&lt;br /&gt;
* for each &#039;configurable&#039; modifier, an item which opens the configuration window&lt;br /&gt;
* any additional menu items as defined in each modifier. For example, a rocket modifier might have an item which changes the selected component in some way.&lt;br /&gt;
&lt;br /&gt;
Code design:&lt;br /&gt;
&lt;br /&gt;
 interface Plugin:&lt;br /&gt;
  - name, version, URI, date, author, licence, description&lt;br /&gt;
  - list of dependent plugin URI&#039;s and versions&lt;br /&gt;
  - list of conflicting plugin URI&#039;s and versions&lt;br /&gt;
  - list of modifiers&lt;br /&gt;
&lt;br /&gt;
 abstract class AbstractPlugin implements Plugin:&lt;br /&gt;
  * everything required for loading, setting menu, translations etc&lt;br /&gt;
  - getSetting(key), setSetting(key, value) : a simple mechanism for locally storing various settings&lt;br /&gt;
  - getFile(name), storeFile(file), rmfile(name) : a simple mechanism for locally storing cache files etc&lt;br /&gt;
&lt;br /&gt;
 static class MyPlugin extends AbstractPlugin:&lt;br /&gt;
  * the users implementation&lt;br /&gt;
&lt;br /&gt;
 files:&lt;br /&gt;
  messages_?.properties : translations to use, inside plugin jar&lt;br /&gt;
&lt;br /&gt;
 interface Modifier:&lt;br /&gt;
  - plugin this modifier is a member of&lt;br /&gt;
  - enableable boolean&lt;br /&gt;
  - enable(), disable()&lt;br /&gt;
  - configurable boolean&lt;br /&gt;
  - configurator&lt;br /&gt;
  - additional menu items and actions&lt;br /&gt;
&lt;br /&gt;
 abstract class RocketModifier implements Modifier:&lt;br /&gt;
  - enable(), disable() : &lt;br /&gt;
  - getSelectedComponent() : returns currently selected rocket component&lt;br /&gt;
  - onChange() : called when a component is changed&lt;br /&gt;
  * various other helper methods as necessary&lt;br /&gt;
&lt;br /&gt;
 static class MyRocketModifier:&lt;br /&gt;
  * the users implementation of something that works with or modifies the rocket design&lt;br /&gt;
&lt;br /&gt;
 abstract class SimulationModifier implements Modifier:&lt;br /&gt;
  * basically everything currently in simulation listeners, possibly simplified (do we need 3 separate interfaces?)&lt;br /&gt;
&lt;br /&gt;
 static class MySimulationModifier extends AbstractSimulationModifier:&lt;br /&gt;
  * the users implementation&lt;br /&gt;
&lt;br /&gt;
 abstract class configurator:&lt;br /&gt;
  a class which automatically generates a standardised configuration dialog box based on just a simple list of variables and selectors.&lt;br /&gt;
  Variables would be saved automatically when the OK button is clicked using plugin setSettings().&lt;/div&gt;</summary>
		<author><name>Plaa</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Plugin_system&amp;diff=69</id>
		<title>Plugin system</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Plugin_system&amp;diff=69"/>
		<updated>2012-09-26T12:31:52Z</updated>

		<summary type="html">&lt;p&gt;Plaa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== The Problem ==&lt;br /&gt;
&lt;br /&gt;
There are many cases where it is desirable to add a feature to openrocket which is useful in a specific context, but not really appropriate for inclusion in openrocket core. For this reason it is desirable to have some kind of plugin framework, as is found in many other applications.&lt;br /&gt;
&lt;br /&gt;
In our case we refer to plugins as something that is installed onto the user&#039;s computer which is found by OR and provides additional functionality. The functionality might be simulation listeners, new motor types etc.&lt;br /&gt;
&lt;br /&gt;
== Type of plugins ==&lt;br /&gt;
&lt;br /&gt;
A list of different use-cases for plugins which have different kinds of requirements:&lt;br /&gt;
&lt;br /&gt;
* Simulation listeners:  Tied to a specific simulation, possible to select from a menu and configurable via a UI.  Configuration needs to be stored/loaded from the ORK file.&lt;br /&gt;
* Auxilliary tools:  Plugin adds options to some menu on the main window.  Plugin may interact or modify the rocket.  (Similar to rocket optimization)&lt;br /&gt;
* Optimization modifiers/targets:  Defining new types of optimization targets or parameters.&lt;br /&gt;
* Startup tips:  New startup tip types. (Not implemented yet)&lt;br /&gt;
* New motor types&lt;br /&gt;
* New simulation / aerodynamic computation engines&lt;br /&gt;
&lt;br /&gt;
Some of these may be singletons, others contain state and need to be instantiated properly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* Configuration&lt;br /&gt;
  * Some plugins need configuration via a UI&lt;br /&gt;
  * How to distinguish what is part of core and what is a plugin?&lt;br /&gt;
* Automatic discovery&lt;br /&gt;
  * Drop a JAR to the plugin folder and it will be used.&lt;br /&gt;
* Localisation support&lt;br /&gt;
* Dependency management&lt;br /&gt;
  * Some plugins may depend on others and be able to automatically load them. This in turn requires that plugins have a consistent identifier / URI and version number.&lt;br /&gt;
  * I don&#039;t think we &#039;&#039;need&#039;&#039; plugin dependency management in the foreseeable future, and such a system may complicate things considerably. -Sampo&lt;br /&gt;
* Plugins implemented in other languages&lt;br /&gt;
  * Should be possible to create a plugin that allows writing other plugins in scripting languages (e.g. JavaScript/Ruby)&lt;br /&gt;
* Simplified access to openrocket document / software state&lt;br /&gt;
  * E.g. currently selected component&lt;br /&gt;
&lt;br /&gt;
== Anti requirements ==&lt;br /&gt;
&lt;br /&gt;
(Discuss)&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
=== Plugin frameworks ===&lt;br /&gt;
&lt;br /&gt;
Various plug-in frameworks exist for java, and may significantly reduce the time required to implement the plugin feature.&lt;br /&gt;
&lt;br /&gt;
Directly coding the plug-in just requires the new interface to extend the&lt;br /&gt;
Plugin interface and to add the annotations to the implementation&lt;br /&gt;
class. This is a simple and light-weight solution which may well be quite suitable.&lt;br /&gt;
&lt;br /&gt;
Of the alternative plug-in frameworks which exist, the most&lt;br /&gt;
interesting is JSPF (http://code.google.com/p/jspf/).  Here&lt;br /&gt;
you can just say &amp;quot;load all JAR files from this directory as plug-ins&amp;quot;&lt;br /&gt;
and &amp;quot;add all plug-ins from the current classpath&amp;quot;. You can then query&lt;br /&gt;
for plug-ins using a variety of methods.  It seems very simple to use,&lt;br /&gt;
it uses pojos and pure interfaces, and plug-ins themselves are made&lt;br /&gt;
just by implementing the interface and adding some annotations.&lt;br /&gt;
&lt;br /&gt;
JSPF also seems to work on Android, though the discovery system is&lt;br /&gt;
somewhat dysfunctional, and you need to list all of the plug-in&lt;br /&gt;
classes explicitly (http://code.google.com/p/jspf/wiki/RunningOnAndroid).  This should be&lt;br /&gt;
okay, we just need to have an additional implementation for Android&lt;br /&gt;
that lists the necessary plug-ins for the basic functionality.  I&lt;br /&gt;
don&#039;t see it as a problem if some of the extensibility is missing on&lt;br /&gt;
Android.&lt;br /&gt;
&lt;br /&gt;
Other frameworks that have been considered:&lt;br /&gt;
&lt;br /&gt;
* ServiceLoader class + startup scripting.  Simple, built-in, but we&lt;br /&gt;
need to implement the plug-in system ourselves.&lt;br /&gt;
* JPF (http://jpf.sourceforge.net/), seems more customizable and&lt;br /&gt;
configurable than JSPF, but not sure do we need the extra muscle.&lt;br /&gt;
Looks functional, but last activity was in 2007.&lt;br /&gt;
* OSGi (http://en.wikipedia.org/wiki/OSGi), even more heavy-weight&lt;br /&gt;
service discovery mechanism, similar to (or used by) Eclipse plug-in&lt;br /&gt;
system.&lt;br /&gt;
* Java Module System (JSR 277), slated for inclusion to Java 7, but&lt;br /&gt;
wasn&#039;t.  Seems pretty inactive (early draft from 2006) and seems to&lt;br /&gt;
include language changes.&lt;br /&gt;
&lt;br /&gt;
=== A Rough Design (from a plugin writers point of view) ===&lt;br /&gt;
&lt;br /&gt;
General operation:&lt;br /&gt;
&lt;br /&gt;
The name for each plugin will correspond to an item in the plugins menu.&lt;br /&gt;
Subitems of each item in the plugins menu will be automatically generated as follows:&lt;br /&gt;
* About plugin : makes an about box, present for all plugins.&lt;br /&gt;
* for each &#039;enableable&#039; modifier, a check box of the form [X] Enable ModifierName will be generated. When enabled, the enable method of the modifier will be called. This would then do what is necessary to modify OR to always run the plugin code, for example: make the simulation always load the simulation modifier.&lt;br /&gt;
* for each &#039;configurable&#039; modifier, an item which opens the configuration window&lt;br /&gt;
* any additional menu items as defined in each modifier. For example, a rocket modifier might have an item which changes the selected component in some way.&lt;br /&gt;
&lt;br /&gt;
Code design:&lt;br /&gt;
&lt;br /&gt;
 interface Plugin:&lt;br /&gt;
  - name, version, URI, date, author, licence, description&lt;br /&gt;
  - list of dependent plugin URI&#039;s and versions&lt;br /&gt;
  - list of conflicting plugin URI&#039;s and versions&lt;br /&gt;
  - list of modifiers&lt;br /&gt;
&lt;br /&gt;
 abstract class AbstractPlugin implements Plugin:&lt;br /&gt;
  * everything required for loading, setting menu, translations etc&lt;br /&gt;
  - getSetting(key), setSetting(key, value) : a simple mechanism for locally storing various settings&lt;br /&gt;
  - getFile(name), storeFile(file), rmfile(name) : a simple mechanism for locally storing cache files etc&lt;br /&gt;
&lt;br /&gt;
 static class MyPlugin extends AbstractPlugin:&lt;br /&gt;
  * the users implementation&lt;br /&gt;
&lt;br /&gt;
 files:&lt;br /&gt;
  messages_?.properties : translations to use, inside plugin jar&lt;br /&gt;
&lt;br /&gt;
 interface Modifier:&lt;br /&gt;
  - plugin this modifier is a member of&lt;br /&gt;
  - enableable boolean&lt;br /&gt;
  - enable(), disable()&lt;br /&gt;
  - configurable boolean&lt;br /&gt;
  - configurator&lt;br /&gt;
  - additional menu items and actions&lt;br /&gt;
&lt;br /&gt;
 abstract class RocketModifier implements Modifier:&lt;br /&gt;
  - enable(), disable() : &lt;br /&gt;
  - getSelectedComponent() : returns currently selected rocket component&lt;br /&gt;
  - onChange() : called when a component is changed&lt;br /&gt;
  * various other helper methods as necessary&lt;br /&gt;
&lt;br /&gt;
 static class MyRocketModifier:&lt;br /&gt;
  * the users implementation of something that works with or modifies the rocket design&lt;br /&gt;
&lt;br /&gt;
 abstract class SimulationModifier implements Modifier:&lt;br /&gt;
  * basically everything currently in simulation listeners, possibly simplified (do we need 3 separate interfaces?)&lt;br /&gt;
&lt;br /&gt;
 static class MySimulationModifier extends AbstractSimulationModifier:&lt;br /&gt;
  * the users implementation&lt;br /&gt;
&lt;br /&gt;
 abstract class configurator:&lt;br /&gt;
  a class which automatically generates a standardised configuration dialog box based on just a simple list of variables and selectors.&lt;br /&gt;
  Variables would be saved automatically when the OK button is clicked using plugin setSettings().&lt;/div&gt;</summary>
		<author><name>Plaa</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Tips&amp;diff=406</id>
		<title>Tips</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Tips&amp;diff=406"/>
		<updated>2012-09-25T14:01:17Z</updated>

		<summary type="html">&lt;p&gt;Plaa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page collects a list of short (1-3 sentences) tips for using OpenRocket.  Later on they may be included in the software as a &amp;quot;tip of the day&amp;quot; system.&lt;br /&gt;
&lt;br /&gt;
= General use =&lt;br /&gt;
&lt;br /&gt;
* You can type in equations in the entry fields instead of numbers.  For example, to double a length you can type &#039;&#039;&#039;3.1*2&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* The component tree will display any component comments as tool tips.  You can set the comment on the &#039;&#039;&#039;Comment&#039;&#039;&#039; tab of the component configuration dialog.&lt;br /&gt;
&lt;br /&gt;
* If you want to always load a specific .ork file, you can specify the filename as a command line argument when starting openrocket.&lt;br /&gt;
&lt;br /&gt;
* You can choose your preferred units from &#039;&#039;&#039;Edit&#039;&#039;&#039; &amp;amp;rarr; &#039;&#039;&#039;Preferences...&#039;&#039;&#039;.  You can individually change the units by clicking the unit symbol. &lt;br /&gt;
&lt;br /&gt;
= Rocket design =&lt;br /&gt;
&lt;br /&gt;
* A rocket design can have a number of &#039;&#039;motor configurations&#039;&#039;.  When simulating a flight, you select which motor configuration you use.  You can edit the motor configurations using &#039;&#039;&#039;Tools&#039;&#039;&#039; &amp;amp;rarr; &#039;&#039;&#039;Motor configurations...&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Motors can be attached to either body tubes or inner tubes.  You can attach one on the &#039;&#039;&#039;Motor&#039;&#039;&#039; tab of the configuration dialog.&lt;br /&gt;
&lt;br /&gt;
* You can scale a single component or an entire design using &#039;&#039;&#039;Edit&#039;&#039;&#039; &amp;amp;rarr; &#039;&#039;&#039;Scale...&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* You can define custom materials by selecting &#039;&#039;&#039;Custom&#039;&#039;&#039; from the bottom of a material selection list.&lt;br /&gt;
&lt;br /&gt;
* You can select ready components from the preset dropdown on the top-right of the component editing dialog.  Tick the box in the table to add the component to the dropdown menu.&lt;br /&gt;
&lt;br /&gt;
* You can select components by clicking them in the diagram, or edit them by double-clicking.&lt;br /&gt;
&lt;br /&gt;
* To get the best accuracy possible, you can weight your components and enter the override the calculated weight on the &#039;&#039;&#039;Override&#039; tab when editing components.&lt;br /&gt;
&lt;br /&gt;
* You can define through-the-wall fin tabs on the &#039;&#039;&#039;Fin tabs&#039;&#039;&#039; tab when editing a fin set.&lt;br /&gt;
&lt;br /&gt;
* Your rocket&#039;s surface roughness can affect flight altitude significantly.  Select the appropriate roughness on the &#039;&#039;&#039;Component finish&#039;&#039;&#039; dropdown.  You can set the same finish for all components by clicking &#039;&#039;&#039;Set for all&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* You will see immediate results of a flight simulation on the lower-left corner of the design diagram.  This reflects a flight with your currently selected motor configuration.&lt;br /&gt;
&lt;br /&gt;
* In case OpenRocket cannot reliably compute the aerodynamic properties of the rocket, you will see warnings on the lower-right corner of the design diagram.&lt;br /&gt;
&lt;br /&gt;
* You can create clustered rockets easily using the &#039;&#039;&#039;Cluster&#039;&#039;&#039; tab when editing Inner tubes.  Any motors or components attached to the inner tube will be present on all copies of the inner tube.&lt;br /&gt;
&lt;br /&gt;
* Centering rings, Engine blocks, Couplers and Bulkheads can automatically compute the relevant dimensions from the other components when the &#039;&#039;&#039;Automatic&#039;&#039;&#039; checkbox is selected.&lt;br /&gt;
&lt;br /&gt;
* You can simulate launch rails or pins by creating filled launch lugs of the corresponding size.&lt;br /&gt;
&lt;br /&gt;
* Only body components and fin sets affect the aerodynamics of the rocket.  Even if an internal component extrudes outside of the body tube, its effect will not be taken into account in simulations!&lt;br /&gt;
&lt;br /&gt;
* You can add stages to your rocket by pressing &#039;&#039;&#039;New stage&#039;&#039;&#039; on the main screen.  Stage separation is configured on the &#039;&#039;&#039;Separation&#039;&#039;&#039; tab when editing a stage.&lt;br /&gt;
&lt;br /&gt;
* You can fully customize the simulation plots on the &#039;&#039;&#039;Plot data&#039;&#039;&#039; tab.  Choose on of the preset configurations or experiment with the other options.&lt;br /&gt;
&lt;br /&gt;
* You can export simulated flight data to be analyzed by another program using the &#039;&#039;&#039;Export data&#039;&#039;&#039; tab when editing a simulation.&lt;br /&gt;
&lt;br /&gt;
* The ball on the right side of the simulation table indicates the state of the simulation.  Red means that the design has been changed since the simulation was last run, yellow means the data has been loaded from a file, and green means it is up-to-date.&lt;br /&gt;
&lt;br /&gt;
* If a potential problem occurred during a simulated flight, you will see a red exclamation mark (!) next to your simulation.  Hover over the simulation to see what the warning is about.&lt;br /&gt;
&lt;br /&gt;
* You can duplicate components or move them to another design by using normal copy-paste functionality.&lt;br /&gt;
&lt;br /&gt;
* You can move components by drag-dropping them in the component tree.&lt;br /&gt;
&lt;br /&gt;
* You can examine details on the stability and drag characteristics of your rocket using &#039;&#039;&#039;Tools&#039;&#039;&#039; &amp;amp;rarr; &#039;&#039;&#039;Component analysis...&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* You can optimize the shape, size or mass of your rocket using &#039;&#039;&#039;Tools&#039;&#039;&#039; &amp;amp;rarr; &#039;&#039;&#039;Rocket optimization...&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Custom expressions allow you to compute flight parameters that are not computed by OpenRocket by default.  You define them using &#039;&#039;&#039;Tools&#039;&#039;&#039; &amp;amp;rarr; &#039;&#039;&#039;Custom expressions...&#039;&#039;&#039;  See [https://sourceforge.net/apps/mediawiki/openrocket/index.php?title=List_of_useful_custom_expressions the wiki] for ideas.&lt;/div&gt;</summary>
		<author><name>Plaa</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Tips&amp;diff=405</id>
		<title>Tips</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Tips&amp;diff=405"/>
		<updated>2012-09-25T13:59:22Z</updated>

		<summary type="html">&lt;p&gt;Plaa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page collects a list of short (1-3 sentences) tips for using OpenRocket.  Later on they may be included in the software as a &amp;quot;tip of the day&amp;quot; system.&lt;br /&gt;
&lt;br /&gt;
= General use =&lt;br /&gt;
&lt;br /&gt;
* You can type in equations in the entry fields instead of numbers.  For example, to double a length you can type &#039;&#039;&#039;3.1*2&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* The component tree will display any component comments as tool tips.  You can set the comment on the &#039;&#039;&#039;Comment&#039;&#039;&#039; tab of the component configuration dialog.&lt;br /&gt;
&lt;br /&gt;
* If you want to always load a specific .ork file, you can specify the filename as a command line argument when starting openrocket.&lt;br /&gt;
&lt;br /&gt;
= Rocket design =&lt;br /&gt;
&lt;br /&gt;
* A rocket design can have a number of &#039;&#039;motor configurations&#039;&#039;.  When simulating a flight, you select which motor configuration you use.  You can edit the motor configurations using &#039;&#039;&#039;Tools&#039;&#039;&#039; &amp;amp;rarr; &#039;&#039;&#039;Motor configurations...&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Motors can be attached to either body tubes or inner tubes.  You can attach one on the &#039;&#039;&#039;Motor&#039;&#039;&#039; tab of the configuration dialog.&lt;br /&gt;
&lt;br /&gt;
* You can scale a single component or an entire design using &#039;&#039;&#039;Edit&#039;&#039;&#039; &amp;amp;rarr; &#039;&#039;&#039;Scale...&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* You can define custom materials by selecting &#039;&#039;&#039;Custom&#039;&#039;&#039; from the bottom of a material selection list.&lt;br /&gt;
&lt;br /&gt;
* You can select ready components from the preset dropdown on the top-right of the component editing dialog.  Tick the box in the table to add the component to the dropdown menu.&lt;br /&gt;
&lt;br /&gt;
* You can select components by clicking them in the diagram, or edit them by double-clicking.&lt;br /&gt;
&lt;br /&gt;
* To get the best accuracy possible, you can weight your components and enter the override the calculated weight on the &#039;&#039;&#039;Override&#039; tab when editing components.&lt;br /&gt;
&lt;br /&gt;
* You can define through-the-wall fin tabs on the &#039;&#039;&#039;Fin tabs&#039;&#039;&#039; tab when editing a fin set.&lt;br /&gt;
&lt;br /&gt;
* Your rocket&#039;s surface roughness can affect flight altitude significantly.  Select the appropriate roughness on the &#039;&#039;&#039;Component finish&#039;&#039;&#039; dropdown.  You can set the same finish for all components by clicking &#039;&#039;&#039;Set for all&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* You will see immediate results of a flight simulation on the lower-left corner of the design diagram.  This reflects a flight with your currently selected motor configuration.&lt;br /&gt;
&lt;br /&gt;
* In case OpenRocket cannot reliably compute the aerodynamic properties of the rocket, you will see warnings on the lower-right corner of the design diagram.&lt;br /&gt;
&lt;br /&gt;
* You can create clustered rockets easily using the &#039;&#039;&#039;Cluster&#039;&#039;&#039; tab when editing Inner tubes.  Any motors or components attached to the inner tube will be present on all copies of the inner tube.&lt;br /&gt;
&lt;br /&gt;
* Centering rings, Engine blocks, Couplers and Bulkheads can automatically compute the relevant dimensions from the other components when the &#039;&#039;&#039;Automatic&#039;&#039;&#039; checkbox is selected.&lt;br /&gt;
&lt;br /&gt;
* You can simulate launch rails or pins by creating filled launch lugs of the corresponding size.&lt;br /&gt;
&lt;br /&gt;
* Only body components and fin sets affect the aerodynamics of the rocket.  Even if an internal component extrudes outside of the body tube, its effect will not be taken into account in simulations!&lt;br /&gt;
&lt;br /&gt;
* You can add stages to your rocket by pressing &#039;&#039;&#039;New stage&#039;&#039;&#039; on the main screen.  Stage separation is configured on the &#039;&#039;&#039;Separation&#039;&#039;&#039; tab when editing a stage.&lt;br /&gt;
&lt;br /&gt;
* You can fully customize the simulation plots on the &#039;&#039;&#039;Plot data&#039;&#039;&#039; tab.  Choose on of the preset configurations or experiment with the other options.&lt;br /&gt;
&lt;br /&gt;
* You can export simulated flight data to be analyzed by another program using the &#039;&#039;&#039;Export data&#039;&#039;&#039; tab when editing a simulation.&lt;br /&gt;
&lt;br /&gt;
* The ball on the right side of the simulation table indicates the state of the simulation.  Red means that the design has been changed since the simulation was last run, yellow means the data has been loaded from a file, and green means it is up-to-date.&lt;br /&gt;
&lt;br /&gt;
* If a potential problem occurred during a simulated flight, you will see a red exclamation mark (!) next to your simulation.  Hover over the simulation to see what the warning is about.&lt;br /&gt;
&lt;br /&gt;
* You can duplicate components or move them to another design by using normal copy-paste functionality.&lt;br /&gt;
&lt;br /&gt;
* You can move components by drag-dropping them in the component tree.&lt;br /&gt;
&lt;br /&gt;
* You can examine details on the stability and drag characteristics of your rocket using &#039;&#039;&#039;Tools&#039;&#039;&#039; &amp;amp;rarr; &#039;&#039;&#039;Component analysis...&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* You can optimize the shape, size or mass of your rocket using &#039;&#039;&#039;Tools&#039;&#039;&#039; &amp;amp;rarr; &#039;&#039;&#039;Rocket optimization...&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Custom expressions allow you to compute flight parameters that are not computed by OpenRocket by default.  You define them using &#039;&#039;&#039;Tools&#039;&#039;&#039; &amp;amp;rarr; &#039;&#039;&#039;Custom expressions...&#039;&#039;&#039;  See [https://sourceforge.net/apps/mediawiki/openrocket/index.php?title=List_of_useful_custom_expressions the wiki] for ideas.&lt;/div&gt;</summary>
		<author><name>Plaa</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Tips&amp;diff=404</id>
		<title>Tips</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Tips&amp;diff=404"/>
		<updated>2012-09-25T13:58:39Z</updated>

		<summary type="html">&lt;p&gt;Plaa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page collects a list of short (1-3 sentences) tips for using OpenRocket.  Later on they may be included in the software as a &amp;quot;tip of the day&amp;quot; system.&lt;br /&gt;
&lt;br /&gt;
= General use =&lt;br /&gt;
&lt;br /&gt;
* You can type in equations in the entry fields instead of numbers.  For example, to double a length you can type &#039;&#039;&#039;3.1*2&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* The component tree will display any component comments as tool tips.  You can set the comment on the &#039;&#039;&#039;Comment&#039;&#039;&#039; tab of the component configuration dialog.&lt;br /&gt;
&lt;br /&gt;
* If you want to always load a specific .ork file, you can specify the filename as a command line argument when starting openrocket.&lt;br /&gt;
&lt;br /&gt;
= Rocket design =&lt;br /&gt;
&lt;br /&gt;
* A rocket design can have a number of &#039;&#039;motor configurations&#039;&#039;.  When simulating a flight, you select which motor configuration you use.  You can edit the motor configurations using &#039;&#039;&#039;Tools&#039;&#039;&#039; &amp;amp;rarr; &#039;&#039;&#039;Motor configurations...&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Motors can be attached to either body tubes or inner tubes.  You can attach one on the &#039;&#039;&#039;Motor&#039;&#039;&#039; tab of the configuration dialog.&lt;br /&gt;
&lt;br /&gt;
* You can scale a single component or an entire design using &#039;&#039;&#039;Edit&#039;&#039;&#039; &amp;amp;rarr; &#039;&#039;&#039;Scale...&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* You can define custom materials by selecting &#039;&#039;&#039;Custom&#039;&#039;&#039; from the bottom of a material selection list.&lt;br /&gt;
&lt;br /&gt;
* You can select ready components from the preset dropdown on the top-right of the component editing dialog.  Tick the box in the table to add the component to the dropdown menu.&lt;br /&gt;
&lt;br /&gt;
* You can select components by clicking them in the diagram, or edit them by double-clicking.&lt;br /&gt;
&lt;br /&gt;
* To get the best accuracy possible, you can weight your components and enter the override the calculated weight on the &#039;&#039;&#039;Override&#039; tab when editing components.&lt;br /&gt;
&lt;br /&gt;
* You can define through-the-wall fin tabs on the &#039;&#039;&#039;Fin tabs&#039;&#039;&#039; tab when editing a fin set.&lt;br /&gt;
&lt;br /&gt;
* Your rocket&#039;s surface roughness can affect flight altitude significantly.  Select the appropriate roughness on the &#039;&#039;&#039;Component finish&#039;&#039;&#039; dropdown.  You can set the same finish for all components by clicking &#039;&#039;&#039;Set for all&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* You will see immediate results of a flight simulation on the lower-left corner of the design diagram.  This reflects a flight with your currently selected motor configuration.&lt;br /&gt;
&lt;br /&gt;
* In case OpenRocket cannot reliably compute the aerodynamic properties of the rocket, you will see warnings on the lower-right corner of the design diagram.&lt;br /&gt;
&lt;br /&gt;
* You can create clustered rockets easily using the &#039;&#039;&#039;Cluster&#039;&#039;&#039; tab when editing Inner tubes.  Any motors or components attached to the inner tube will be present on all copies of the inner tube.&lt;br /&gt;
&lt;br /&gt;
* Centering rings, Engine blocks, Couplers and Bulkheads can automatically compute the relevant dimensions from the other components when the &#039;&#039;&#039;Automatic&#039;&#039;&#039; checkbox is selected.&lt;br /&gt;
&lt;br /&gt;
* You can simulate launch rails or pins by creating filled launch lugs of the corresponding size.&lt;br /&gt;
&lt;br /&gt;
* Only body components and fin sets affect the aerodynamics of the rocket.  Even if an internal component extrudes outside of the body tube, its effect will not be taken into account in simulations!&lt;br /&gt;
&lt;br /&gt;
* You can add stages to your rocket by pressing &#039;&#039;&#039;New stage&#039;&#039;&#039; on the main screen.  Stage separation is configured on the &#039;&#039;&#039;Separation&#039;&#039;&#039; tab when editing a stage.&lt;br /&gt;
&lt;br /&gt;
* You can fully customize the simulation plots on the &#039;&#039;&#039;Plot data&#039;&#039;&#039; tab.  Choose on of the preset configurations or experiment with the other options.&lt;br /&gt;
&lt;br /&gt;
* You can export simulated flight data to be analyzed by another program using the &#039;&#039;&#039;Export data&#039;&#039;&#039; tab when editing a simulation.&lt;br /&gt;
&lt;br /&gt;
* The ball on the right side of the simulation table indicates the state of the simulation.  Red means that the design has been changed since the simulation was last run, yellow means the data has been loaded from a file, and green means it is up-to-date.&lt;br /&gt;
&lt;br /&gt;
* If a potential problem occurred during a simulated flight, you will see a red exclamation mark (!) next to your simulation.  Hover over the simulation to see what the warning is about.&lt;br /&gt;
&lt;br /&gt;
* You can duplicate components or move them to another design by using normal copy-paste functionality.&lt;br /&gt;
&lt;br /&gt;
* You can move components by drag-dropping them in the component tree.&lt;br /&gt;
&lt;br /&gt;
* You can examine details on the stability and drag characteristics of your rocket using &#039;&#039;&#039;Tools&#039;&#039;&#039; &amp;amp;rarr; &#039;&#039;&#039;Component analysis...&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* You can optimize the shape, size or mass of your rocket using &#039;&#039;&#039;Tools&#039;&#039;&#039; &amp;amp;rarr; &#039;&#039;&#039;Rocket optimization...&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Custom expressions allow you to compute flight parameters that are not computed by OpenRocket by default.  You define them using &#039;&#039;&#039;Tools&#039;&#039;&#039; &amp;amp;rarr; &#039;&#039;&#039;Custom expressions...&#039;&#039;&#039;  See [[https://sourceforge.net/apps/mediawiki/openrocket/index.php?title=List_of_useful_custom_expressions|the wiki]] for ideas.&lt;/div&gt;</summary>
		<author><name>Plaa</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Tips&amp;diff=403</id>
		<title>Tips</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Tips&amp;diff=403"/>
		<updated>2012-09-25T13:48:42Z</updated>

		<summary type="html">&lt;p&gt;Plaa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page collects a list of short (1-3 sentences) tips for using OpenRocket.  Later on they may be included in the software as a &amp;quot;tip of the day&amp;quot; system.&lt;br /&gt;
&lt;br /&gt;
= General use =&lt;br /&gt;
&lt;br /&gt;
* You can type in equations in the entry fields instead of numbers.  For example, to double a length you can type &#039;&#039;&#039;3.1*2&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* The component tree will display any component comments as tool tips.  You can set the comment on the &#039;&#039;&#039;Comment&#039;&#039;&#039; tab of the component configuration dialog.&lt;br /&gt;
&lt;br /&gt;
* If you want to always load a specific .ork file, you can specify the filename as a command line argument when starting openrocket.&lt;br /&gt;
&lt;br /&gt;
= Rocket design =&lt;br /&gt;
&lt;br /&gt;
* Motors can be attached to either body tubes or inner tubes.  You can attach one on the &#039;&#039;&#039;Motor&#039;&#039;&#039; tab of the configuration dialog.&lt;br /&gt;
&lt;br /&gt;
* You can configure all motor selections by selecting &#039;&#039;&#039;Edit configurations&#039;&#039;&#039; from the &#039;&#039;&#039;Motor configuration&#039;&#039;&#039; dropdown.&lt;br /&gt;
&lt;br /&gt;
* You can scale a single component or an entire design using &#039;&#039;&#039;Edit&#039;&#039;&#039; &amp;amp;rarr; &#039;&#039;&#039;Scale...&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* You can define custom materials by selecting &#039;&#039;&#039;Custom&#039;&#039;&#039; from the bottom of a material selection list.&lt;br /&gt;
&lt;br /&gt;
* You can select ready components from the preset dropdown on the top-right of the component editing dialog.  Tick the box in the table to add the component to the dropdown menu.&lt;br /&gt;
&lt;br /&gt;
* You can select components by clicking them in the diagram, or edit them by double-clicking.&lt;br /&gt;
&lt;br /&gt;
* To get the best accuracy possible, you can weight your components and enter the override the calculated weight on the &#039;&#039;&#039;Override&#039; tab when editing components.&lt;br /&gt;
&lt;br /&gt;
* You can define through-the-wall fin tabs on the &#039;&#039;&#039;Fin tabs&#039;&#039;&#039; tab when editing a fin set.&lt;br /&gt;
&lt;br /&gt;
* Your rocket&#039;s surface roughness can affect flight altitude significantly.  Select the appropriate roughness on the &#039;&#039;&#039;Component finish&#039;&#039;&#039; dropdown.  You can set the same finish for all components by clicking &#039;&#039;&#039;Set for all&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* You will see immediate results of a flight simulation on the lower-left corner of the design diagram.  This reflects a flight with your currently selected motor configuration.&lt;br /&gt;
&lt;br /&gt;
* In case OpenRocket cannot reliably compute the aerodynamic properties of the rocket, you will see warnings on the lower-right corner of the design diagram.&lt;br /&gt;
&lt;br /&gt;
* You can create clustered rockets easily using the &#039;&#039;&#039;Cluster&#039;&#039;&#039; tab when editing Inner tubes.  Any motors or components attached to the inner tube will be present on all copies of the inner tube.&lt;br /&gt;
&lt;br /&gt;
* Centering rings, Engine blocks, Couplers and Bulkheads can automatically compute the relevant dimensions from the other components when the &#039;&#039;&#039;Automatic&#039;&#039;&#039; checkbox is selected.&lt;br /&gt;
&lt;br /&gt;
* You can simulate launch rails or pins by creating filled launch lugs of the corresponding size.&lt;br /&gt;
&lt;br /&gt;
* Only body components and fin sets affect the aerodynamics of the rocket.  Even if an internal component extrudes outside of the body tube, its effect will not be taken into account in simulations!&lt;br /&gt;
&lt;br /&gt;
* You can add stages to your rocket by pressing &#039;&#039;&#039;New stage&#039;&#039;&#039; on the main screen.  Stage separation is configured on the &#039;&#039;&#039;Separation&#039;&#039;&#039; tab when editing a stage.&lt;br /&gt;
&lt;br /&gt;
* You can fully customize the simulation plots on the &#039;&#039;&#039;Plot data&#039;&#039;&#039; tab.  Choose on of the preset configurations or experiment with the other options.&lt;br /&gt;
&lt;br /&gt;
* You can export simulated flight data to be analyzed by another program using the &#039;&#039;&#039;Export data&#039;&#039;&#039; tab when editing a simulation.&lt;br /&gt;
&lt;br /&gt;
* The ball on the right side of the simulation table indicates the state of the simulation.  Red means that the design has been changed since the simulation was last run, yellow means the data has been loaded from a file, and green means it is up-to-date.&lt;br /&gt;
&lt;br /&gt;
* If a potential problem occurred during a simulated flight, you will see a red exclamation mark (!) next to your simulation.  Hover over the simulation to see what the warning is about.&lt;br /&gt;
&lt;br /&gt;
* You can duplicate components or move them to another design by using normal copy-paste functionality.&lt;br /&gt;
&lt;br /&gt;
* You can move components by drag-dropping them in the component tree.&lt;br /&gt;
&lt;br /&gt;
* You can examine details on the stability and drag characteristics of your rocket&lt;/div&gt;</summary>
		<author><name>Plaa</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Tips&amp;diff=402</id>
		<title>Tips</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Tips&amp;diff=402"/>
		<updated>2012-09-25T13:39:25Z</updated>

		<summary type="html">&lt;p&gt;Plaa: tips&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page collects a list of short (1-3 sentences) tips for using OpenRocket.  Later on they may be included in the software as a &amp;quot;tip of the day&amp;quot; system.&lt;br /&gt;
&lt;br /&gt;
= General use =&lt;br /&gt;
&lt;br /&gt;
* You can type in equations in the entry fields instead of numbers.  For example, to double a length you can type &#039;&#039;&#039;3.1*2&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* The component tree will display any component comments as tool tips.  You can set the comment on the &#039;&#039;&#039;Comment&#039;&#039;&#039; tab of the component configuration dialog.&lt;br /&gt;
&lt;br /&gt;
* If you want to always load a specific .ork file, you can specify the filename as a command line argument when starting openrocket.&lt;br /&gt;
&lt;br /&gt;
= Rocket design =&lt;br /&gt;
&lt;br /&gt;
* Motors can be attached to either body tubes or inner tubes.  You can attach one on the &#039;&#039;&#039;Motor&#039;&#039;&#039; tab of the configuration dialog.&lt;br /&gt;
&lt;br /&gt;
* You can configure all motor selections by selecting &#039;&#039;&#039;Edit configurations&#039;&#039;&#039; from the &#039;&#039;&#039;Motor configuration&#039;&#039;&#039; dropdown.&lt;br /&gt;
&lt;br /&gt;
* You can scale a single component or an entire design using &#039;&#039;&#039;Edit&#039;&#039;&#039; &amp;amp;rarr; &#039;&#039;&#039;Scale...&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* You can define custom materials by selecting &#039;&#039;&#039;Custom&#039;&#039;&#039; from the bottom of a material selection list.&lt;br /&gt;
&lt;br /&gt;
* You can select ready components from the preset dropdown on the top-right of the component editing dialog.  Tick the box in the table to add the component to the dropdown menu.&lt;br /&gt;
&lt;br /&gt;
* You can select components by clicking them in the diagram, or edit them by double-clicking.&lt;br /&gt;
&lt;br /&gt;
* To get the best accuracy possible, you can weight your components and enter the override the calculated weight on the &#039;&#039;&#039;Override&#039; tab when editing components.&lt;br /&gt;
&lt;br /&gt;
* You can define through-the-wall fin tabs on the &#039;&#039;&#039;Fin tabs&#039;&#039;&#039; tab when editing a fin set.&lt;br /&gt;
&lt;br /&gt;
* Your rocket&#039;s surface roughness can affect flight altitude significantly.  Select the appropriate roughness on the &#039;&#039;&#039;Component finish&#039;&#039;&#039; dropdown.  You can set the same finish for all components by clicking &#039;&#039;&#039;Set for all&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* You will see immediate results of a flight simulation on the lower-left corner of the design diagram.  This reflects a flight with your currently selected motor configuration.&lt;br /&gt;
&lt;br /&gt;
* In case OpenRocket cannot reliably compute the aerodynamic properties of the rocket, you will see warnings on the lower-right corner of the design diagram.&lt;br /&gt;
&lt;br /&gt;
* You can create clustered rockets easily using the &#039;&#039;&#039;Cluster&#039;&#039;&#039; tab when editing Inner tubes.  Any motors or components attached to the inner tube will be present on all copies of the inner tube.&lt;br /&gt;
&lt;br /&gt;
* Centering rings, Engine blocks, Couplers and Bulkheads can automatically compute the relevant dimensions from the other components when the &#039;&#039;&#039;Automatic&#039;&#039;&#039; checkbox is selected.&lt;br /&gt;
&lt;br /&gt;
* You can simulate launch rails or pins by creating filled launch lugs of the corresponding size.&lt;br /&gt;
&lt;br /&gt;
* Only body components and fin sets affect the aerodynamics of the rocket.  Even if an internal component extrudes outside of the body tube, its effect will not be taken into account in simulations!&lt;br /&gt;
&lt;br /&gt;
* You can add stages to your rocket by pressing &#039;&#039;&#039;New stage&#039;&#039;&#039; on the main screen.  Stage separation is configured on the &#039;&#039;&#039;Separation&#039;&#039;&#039; tab when editing a stage.&lt;/div&gt;</summary>
		<author><name>Plaa</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Tips&amp;diff=401</id>
		<title>Tips</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Tips&amp;diff=401"/>
		<updated>2012-09-25T13:14:08Z</updated>

		<summary type="html">&lt;p&gt;Plaa: /* General use */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page collects a list of short (1-3 sentences) tips for using OpenRocket.  Later on they may be included in the software as a &amp;quot;tip of the day&amp;quot; system.&lt;br /&gt;
&lt;br /&gt;
= General use =&lt;br /&gt;
&lt;br /&gt;
* You can type in equations in the entry fields instead of numbers.  For example, to double a length you can type &#039;&#039;&#039;3.1*2&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
* The component tree will display any component comments as tool tips.  You can set the comment on the &#039;&#039;&#039;Comment&#039;&#039;&#039; tab of the component configuration dialog.&lt;br /&gt;
&lt;br /&gt;
* If you want to always load a specific .ork file, you can specify the filename as a command line argument when starting openrocket.&lt;br /&gt;
&lt;br /&gt;
= Rocket design =&lt;br /&gt;
&lt;br /&gt;
* Motors can be attached to either body tubes or inner tubes.  You can attach one on the &#039;&#039;&#039;Motor&#039;&#039;&#039; tab of the configuration dialog.&lt;br /&gt;
&lt;br /&gt;
* You can scale a single component or an entire design using &#039;&#039;&#039;Edit&#039;&#039;&#039; &amp;amp;rarr; &#039;&#039;&#039;Scale...&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Plaa</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Feature_comparison&amp;diff=458</id>
		<title>Feature comparison</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Feature_comparison&amp;diff=458"/>
		<updated>2012-04-21T20:47:38Z</updated>

		<summary type="html">&lt;p&gt;Plaa: /* Simulation features */ removed supersonic simulation - both have it and quality is arguable&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides a side-by-side feature comparison of &#039;&#039;&#039;OpenRocket&#039;&#039;&#039; and &#039;&#039;&#039;RockSim&#039;&#039;&#039;.  Both represent the latest version of the software.&lt;br /&gt;
&lt;br /&gt;
While hosted on the OpenRocket wiki site, we have attempted to make this an objective comparison between the functionality of the two software products.  If you think something is wrong or omitted, please [[User:Plaa|contact us]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! License&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Open Source (GPLv3)&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | Proprietary&lt;br /&gt;
|-&lt;br /&gt;
! Price&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Free&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | $124&lt;br /&gt;
|-&lt;br /&gt;
! Supported platforms&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Windows, Mac, Linux&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | Windows, Mac&lt;br /&gt;
|-&lt;br /&gt;
! Supported file formats&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | ORK, RKT&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | RKT&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== UI features ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! Side/back view&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! 3D view&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Design view rotation&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Any angle&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | Side and top only&lt;br /&gt;
|-&lt;br /&gt;
! Live CG/CP view&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Realtime simulation&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Design features ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! Basic components&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Freeform fins&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Asymmetric fin configurations&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Tube fins&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Ring-tail fins&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! External pods&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Canted fins / roll stabilization&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Standard component libraries&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Decals&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Clustering support&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes, modifiable&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | Yes, one-time wizard&lt;br /&gt;
|-&lt;br /&gt;
! Staging support&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes, unlimited&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | Yes, 3 stages&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Simulation features ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! Degrees of freedom&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | 6DOF&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | 3DOF&lt;br /&gt;
|-&lt;br /&gt;
! Geodetic calculation (Earth coordinates, coriolis effect)&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Simulations extensible by own code&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Simulation animation&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Plotting any simulated variables&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Exporting simulated data&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Optimization and analysis ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! General design optimization&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Mass optimization&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | Yes (using general optimizer)&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Stability analysis&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes, per component&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | Yes, per stage&lt;br /&gt;
|-&lt;br /&gt;
! Drag analysis&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes, per component&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | Yes, per stage&lt;br /&gt;
|-&lt;br /&gt;
! Roll analysis&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Printing ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! Schematic view&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Stability information&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Simulation results&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Parts list&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Component templates&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | Nose cone, fin sets&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Nose cone, fin sets, centering rings&lt;br /&gt;
|-&lt;br /&gt;
! Fin placement guide&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Export to PDF&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Plaa</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Feature_comparison&amp;diff=457</id>
		<title>Feature comparison</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Feature_comparison&amp;diff=457"/>
		<updated>2012-04-21T20:46:46Z</updated>

		<summary type="html">&lt;p&gt;Plaa: /* Simulation features */ corrected rocksim to 3dof&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides a side-by-side feature comparison of &#039;&#039;&#039;OpenRocket&#039;&#039;&#039; and &#039;&#039;&#039;RockSim&#039;&#039;&#039;.  Both represent the latest version of the software.&lt;br /&gt;
&lt;br /&gt;
While hosted on the OpenRocket wiki site, we have attempted to make this an objective comparison between the functionality of the two software products.  If you think something is wrong or omitted, please [[User:Plaa|contact us]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! License&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Open Source (GPLv3)&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | Proprietary&lt;br /&gt;
|-&lt;br /&gt;
! Price&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Free&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | $124&lt;br /&gt;
|-&lt;br /&gt;
! Supported platforms&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Windows, Mac, Linux&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | Windows, Mac&lt;br /&gt;
|-&lt;br /&gt;
! Supported file formats&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | ORK, RKT&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | RKT&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== UI features ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! Side/back view&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! 3D view&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Design view rotation&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Any angle&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | Side and top only&lt;br /&gt;
|-&lt;br /&gt;
! Live CG/CP view&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Realtime simulation&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Design features ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! Basic components&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Freeform fins&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Asymmetric fin configurations&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Tube fins&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Ring-tail fins&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! External pods&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Canted fins / roll stabilization&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Standard component libraries&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Decals&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Clustering support&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes, modifiable&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | Yes, one-time wizard&lt;br /&gt;
|-&lt;br /&gt;
! Staging support&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes, unlimited&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | Yes, 3 stages&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Simulation features ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! Degrees of freedom&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | 6DOF&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | 3DOF&lt;br /&gt;
|-&lt;br /&gt;
! Supersonic simulation&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | Limited accuracy&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Geodetic calculation (Earth coordinates, coriolis effect)&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Simulations extensible by own code&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Simulation animation&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Plotting any simulated variables&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Exporting simulated data&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Optimization and analysis ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! General design optimization&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Mass optimization&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | Yes (using general optimizer)&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Stability analysis&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes, per component&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | Yes, per stage&lt;br /&gt;
|-&lt;br /&gt;
! Drag analysis&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes, per component&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | Yes, per stage&lt;br /&gt;
|-&lt;br /&gt;
! Roll analysis&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Printing ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! Schematic view&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Stability information&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Simulation results&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Parts list&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Component templates&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | Nose cone, fin sets&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Nose cone, fin sets, centering rings&lt;br /&gt;
|-&lt;br /&gt;
! Fin placement guide&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Export to PDF&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Plaa</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Feature_wishlist&amp;diff=29</id>
		<title>Feature wishlist</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Feature_wishlist&amp;diff=29"/>
		<updated>2012-03-28T04:43:28Z</updated>

		<summary type="html">&lt;p&gt;Plaa: /* 3D view of the rocket */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Access}}&lt;br /&gt;
&lt;br /&gt;
The feature wishlist details some desired features for OpenRocket, concentrating on ones that can reasonably well be implemented without deep knowledge of the OpenRocket internals.  If you find something you&#039;d like to contribute (or make something up yourself), please inform us about that on the [https://lists.sourceforge.net/lists/listinfo/openrocket-devel OpenRocket-devel mailing list] and we can help you get started.&lt;br /&gt;
&lt;br /&gt;
This page complements the [http://openrocket.svn.sourceforge.net/viewvc/openrocket/trunk/TODO distribution TODO file], which contains more ideas in a shorter form.  Please feel free to comment on the issues.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== UI improvements ==&lt;br /&gt;
&lt;br /&gt;
There are various places in need of attention in the UI.  The UI code is also in some places a bit messy, and should be cleaned up.&lt;br /&gt;
&lt;br /&gt;
* Intuitive zooming of the plots&lt;br /&gt;
** normal magnifying glass buttons for zoom in/out&lt;br /&gt;
** currently click-drag towards the lower-right zooms in, towards the upper-left resets the zoom to original - very unintuitive (JFreeChar default)&lt;br /&gt;
** should be implemented as a generic component that could be used in various places&lt;br /&gt;
* Ctrl+scroll wheel should zoom in/out the rocket design (and maybe also plots)&lt;br /&gt;
* [[Component databases]]&lt;br /&gt;
&lt;br /&gt;
== 3D view of the rocket ==&lt;br /&gt;
&lt;br /&gt;
A 3D view of the rocket is greatly desired, but I have no experience in 3D programming.  Below are a few ideas or a &amp;quot;wish list&amp;quot; (not all need to be implemented!)&lt;br /&gt;
&lt;br /&gt;
* 3D view as an alternative to the side and back rocket view&lt;br /&gt;
** rotation using the mouse drag-and-drop&lt;br /&gt;
** either &amp;quot;normal&amp;quot; view or a translucent view, where the opacity of each component is something like 0.3-0.5&lt;br /&gt;
** decals - allow a user to define 1-n images that are positioned at some point of the rocket body or fins&lt;br /&gt;
** allow configuring a spiral wound for body tubes&lt;br /&gt;
** selecting components by clicking on them (like you can in the 2D view).  Not sure whether it&#039;s a good idea to show the selected component in any special way though.&lt;br /&gt;
** allow defining &amp;quot;shininess&amp;quot; of the component (there&#039;s really something like 3 parameters controlling this, but for UX I think we should try to make a single parameter which works reasonably for all)&lt;br /&gt;
&lt;br /&gt;
* An animation of a simulated flight&lt;br /&gt;
** general overview of flight (with possibility to magnify the rocket)?&lt;br /&gt;
** different camera angles to choose from, some ideas:&lt;br /&gt;
*** launcher view&lt;br /&gt;
*** profile view&lt;br /&gt;
*** a camera attached to the rocket pointing to the side / tail&lt;br /&gt;
*** a camera moving along with the rocket either from the top or side&lt;br /&gt;
** selectable launch scenery&lt;br /&gt;
** allow selecting whether xyz-axis are displayed on the rocket during flight&lt;br /&gt;
*** provides a visualization of what the rocket is doing during the flight&lt;br /&gt;
*** rocket movement often very hard to visualize looking at just graphs&lt;br /&gt;
*** may require additional flight parameters to be stored during simulation&lt;br /&gt;
&lt;br /&gt;
== Printing support ==&lt;br /&gt;
&lt;br /&gt;
Printing is one of the most asked-for features for OpenRocket.  At the same time it would be natural to allow exporting the same as PNG, SVG or PDF.&lt;br /&gt;
&lt;br /&gt;
Support can be implemented in various levels.  At least the following are candidates for places where print/export may be desireable:&lt;br /&gt;
&lt;br /&gt;
* fin templates, conical transition/nose cone templates, nose cone profiles&lt;br /&gt;
* the rocket design view&lt;br /&gt;
* the simulation plots (JFreeChart has some support built-in)&lt;br /&gt;
* printing a design report (see below)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Creating/printing a rocket design report ==&lt;br /&gt;
&lt;br /&gt;
The ability to create a report containing the most important design information to present to a RSO at a launch event.  The structure of the report could be something like the following:&lt;br /&gt;
&lt;br /&gt;
* Title&lt;br /&gt;
* Section describing the rocket in general without motors&lt;br /&gt;
** design name&lt;br /&gt;
** empty mass &amp;amp; CG&lt;br /&gt;
** CP position&lt;br /&gt;
** CP position at 5 degree AOA (or similar)&lt;br /&gt;
** number of stages&lt;br /&gt;
** parachute/streamer sizes&lt;br /&gt;
** max. diameter (caliber)&lt;br /&gt;
* Section for each motor configuration&lt;br /&gt;
** a summary of the motors, e.g. 3xC6-0; B4-6&lt;br /&gt;
** a list of the motors including the manufacturer, designation (maybe also info like burn time, grams of propellant, total impulse)&lt;br /&gt;
** total grams of propellant&lt;br /&gt;
** total impulse&lt;br /&gt;
** takeoff weight&lt;br /&gt;
** CG and CP position, stability margin&lt;br /&gt;
** predicted flight altitude, max. velocity and max. acceleration&lt;br /&gt;
** predicted velocity at chute deployment&lt;br /&gt;
** predicted descent rate&lt;br /&gt;
* Diagram of the rocket (positioned vertically on the right side of the first page)&lt;br /&gt;
** CP position&lt;br /&gt;
** CG position without motors and in each configuration (the labels should alternate on right and left sides to avoid being on top of each other)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The user flow could be something like the following:&lt;br /&gt;
&lt;br /&gt;
* Select from menu Rocket -&amp;gt; Design report&lt;br /&gt;
* A dialog opens to ask which motor configurations to include in the report&lt;br /&gt;
** maybe ask paper size as well&lt;br /&gt;
* Simulations are run for each to get most up-to-date info&lt;br /&gt;
* Report is shown to user, allowing them to save or print it&lt;br /&gt;
&lt;br /&gt;
Technical considerations:&lt;br /&gt;
&lt;br /&gt;
* Predicted data readily available from OR (ask for details)&lt;br /&gt;
* The rocket plot can and should use the same rendering as the design window&lt;br /&gt;
* How to define launch conditions?  Should the user select simulations to include in the report instead of motor configurations?&lt;br /&gt;
&lt;br /&gt;
One issue is also in what format and how to create the report.  Below are a few alternatives that have been considered, others are possible as well.&lt;br /&gt;
&lt;br /&gt;
* Generate the report in HTML&lt;br /&gt;
** Pros:&lt;br /&gt;
*** easy to generate&lt;br /&gt;
*** can be displayed using a JTextPane&lt;br /&gt;
*** allows saving as HTML&lt;br /&gt;
*** easy to print from Java using JTextComponent.print()&lt;br /&gt;
** Cons:&lt;br /&gt;
*** including the plot might be problematic and requires a separate file when saving&lt;br /&gt;
*** rocket diagram needs to be in raster format&lt;br /&gt;
*** no support for smart pagination&lt;br /&gt;
* Use [http://itextpdf.com/ iText] or some other PDF generator&lt;br /&gt;
** Pros:&lt;br /&gt;
*** exported directly as PDF, only one file in output&lt;br /&gt;
*** more control, can produce more professional-looking output&lt;br /&gt;
*** rocket diagram can be in vector format&lt;br /&gt;
*** can be better paginated&lt;br /&gt;
** Cons:&lt;br /&gt;
*** may be more difficult to generate(?)&lt;br /&gt;
*** smart pagination may be challenging / require additional work&lt;br /&gt;
*** displaying and printing the report may need separate support (maybe using [http://pdfbox.apache.org/ PDFBox]?)&lt;br /&gt;
* Generate LaTeX document and figures for later compilation&lt;br /&gt;
** Pros:&lt;br /&gt;
*** Extremely high quality output&lt;br /&gt;
*** Equations, pagination, sections, hyperlinks and anything else you could want&lt;br /&gt;
*** Fully vectorised graphics&lt;br /&gt;
*** User can easily manually customise output file&lt;br /&gt;
*** Easy to program on the Java side as  just generating plain text&lt;br /&gt;
** Cons:&lt;br /&gt;
*** Requires an external LaTeX distribution&lt;br /&gt;
*** Not everyone knows LaTeX.&lt;br /&gt;
&lt;br /&gt;
== Memory profiling ==&lt;br /&gt;
&lt;br /&gt;
OpenRocket seems to consume quite a lot of memory, and likely has numerous memory leaks.  (During initial development the effort was on getting it to work, not managing memory.)  Below are a few suggestions what could be done to improve the memory handling.&lt;br /&gt;
&lt;br /&gt;
* Profile OpenRocket&#039;s memory usage to find potential leaks&lt;br /&gt;
* Implement a scheduled task that checks the memory usage every ten seconds or so&lt;br /&gt;
** Warn the user if 90% of available memory has been used&lt;br /&gt;
** Offer to send memory profiling data automatically to developers (?)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Aerodynamic computation enhancements ==&lt;br /&gt;
&lt;br /&gt;
While OpenRocket produces reasonably accurate results for typical model rockets, there are many cases which are in need of expert attention.&lt;br /&gt;
&lt;br /&gt;
In most cases the implementation can be done by the core developers if only clear methods are available!&lt;br /&gt;
&lt;br /&gt;
* Drag and CG estimation at higher supersonic speeds (&amp;gt;1.5M) are currently poor&lt;br /&gt;
&lt;br /&gt;
* Support for additional components, such as external pods and tube fins&lt;br /&gt;
** Estimation of CG, CNa and drag coefficient are required&lt;br /&gt;
&lt;br /&gt;
* Roll rate estimation is off by about a factor of two for unknown reasons (see sections 3.3 and 6.3 of the [http://openrocket.sourceforge.net/documentation.html technical documentation])&lt;br /&gt;
&lt;br /&gt;
* Aerodynamic force computation using CFD (computational fluid dynamics)&lt;br /&gt;
** Should preferably use some standard package such as [http://www.csc.fi/english/pages/elmer Elmer] or [http://www.openfoam.com/ OpenFOAM]&lt;br /&gt;
** Communication either using JNI or stdin/stdout to a standalone executable&lt;br /&gt;
** Implementation requires at least:&lt;br /&gt;
*** creation of the simulation mesh&lt;br /&gt;
*** calling the computational method&lt;br /&gt;
*** deducing the forces and moments (preferably being able to separate the contribution of different components)&lt;br /&gt;
*** cacheing and interpolating data for efficient simulation&lt;br /&gt;
** Visualization would be a great plus!&lt;/div&gt;</summary>
		<author><name>Plaa</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Feature_comparison&amp;diff=456</id>
		<title>Feature comparison</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Feature_comparison&amp;diff=456"/>
		<updated>2012-01-26T20:40:29Z</updated>

		<summary type="html">&lt;p&gt;Plaa: /* Printing */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides a side-by-side feature comparison of &#039;&#039;&#039;OpenRocket&#039;&#039;&#039; and &#039;&#039;&#039;RockSim&#039;&#039;&#039;.  Both represent the latest version of the software.&lt;br /&gt;
&lt;br /&gt;
While hosted on the OpenRocket wiki site, we have attempted to make this an objective comparison between the functionality of the two software products.  If you think something is wrong or omitted, please [[User:Plaa|contact us]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! License&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Open Source (GPLv3)&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | Proprietary&lt;br /&gt;
|-&lt;br /&gt;
! Price&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Free&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | $124&lt;br /&gt;
|-&lt;br /&gt;
! Supported platforms&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Windows, Mac, Linux&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | Windows, Mac&lt;br /&gt;
|-&lt;br /&gt;
! Supported file formats&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | ORK, RKT&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | RKT&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== UI features ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! Side/back view&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! 3D view&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Design view rotation&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Any angle&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | Side and top only&lt;br /&gt;
|-&lt;br /&gt;
! Live CG/CP view&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Realtime simulation&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Design features ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! Basic components&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Freeform fins&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Asymmetric fin configurations&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Tube fins&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Ring-tail fins&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! External pods&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Canted fins / roll stabilization&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Standard component libraries&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Decals&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Clustering support&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes, modifiable&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | Yes, one-time wizard&lt;br /&gt;
|-&lt;br /&gt;
! Staging support&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes, unlimited&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | Yes, 3 stages&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Simulation features ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! Degrees of freedom&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | 6DOF&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | 4DOF&lt;br /&gt;
|-&lt;br /&gt;
! Supersonic simulation&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | Limited accuracy&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Geodetic calculation (Earth coordinates, coriolis effect)&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Simulations extensible by own code&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Simulation animation&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Plotting any simulated variables&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Exporting simulated data&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Optimization and analysis ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! General design optimization&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Mass optimization&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | Yes (using general optimizer)&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Stability analysis&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes, per component&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | Yes, per stage&lt;br /&gt;
|-&lt;br /&gt;
! Drag analysis&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes, per component&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | Yes, per stage&lt;br /&gt;
|-&lt;br /&gt;
! Roll analysis&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Printing ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! Schematic view&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Stability information&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Simulation results&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Parts list&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Component templates&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | Nose cone, fin sets&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Nose cone, fin sets, centering rings&lt;br /&gt;
|-&lt;br /&gt;
! Fin placement guide&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Export to PDF&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Plaa</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Feature_comparison&amp;diff=455</id>
		<title>Feature comparison</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Feature_comparison&amp;diff=455"/>
		<updated>2012-01-26T20:28:33Z</updated>

		<summary type="html">&lt;p&gt;Plaa: /* UI features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides a side-by-side feature comparison of &#039;&#039;&#039;OpenRocket&#039;&#039;&#039; and &#039;&#039;&#039;RockSim&#039;&#039;&#039;.  Both represent the latest version of the software.&lt;br /&gt;
&lt;br /&gt;
While hosted on the OpenRocket wiki site, we have attempted to make this an objective comparison between the functionality of the two software products.  If you think something is wrong or omitted, please [[User:Plaa|contact us]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! License&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Open Source (GPLv3)&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | Proprietary&lt;br /&gt;
|-&lt;br /&gt;
! Price&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Free&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | $124&lt;br /&gt;
|-&lt;br /&gt;
! Supported platforms&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Windows, Mac, Linux&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | Windows, Mac&lt;br /&gt;
|-&lt;br /&gt;
! Supported file formats&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | ORK, RKT&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | RKT&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== UI features ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! Side/back view&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! 3D view&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Design view rotation&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Any angle&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | Side and top only&lt;br /&gt;
|-&lt;br /&gt;
! Live CG/CP view&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Realtime simulation&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Design features ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! Basic components&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Freeform fins&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Asymmetric fin configurations&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Tube fins&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Ring-tail fins&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! External pods&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Canted fins / roll stabilization&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Standard component libraries&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Decals&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Clustering support&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes, modifiable&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | Yes, one-time wizard&lt;br /&gt;
|-&lt;br /&gt;
! Staging support&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes, unlimited&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | Yes, 3 stages&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Simulation features ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! Degrees of freedom&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | 6DOF&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | 4DOF&lt;br /&gt;
|-&lt;br /&gt;
! Supersonic simulation&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | Limited accuracy&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Geodetic calculation (Earth coordinates, coriolis effect)&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Simulations extensible by own code&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Simulation animation&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Plotting any simulated variables&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Exporting simulated data&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Optimization and analysis ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! General design optimization&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Mass optimization&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | Yes (using general optimizer)&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Stability analysis&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes, per component&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | Yes, per stage&lt;br /&gt;
|-&lt;br /&gt;
! Drag analysis&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes, per component&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | Yes, per stage&lt;br /&gt;
|-&lt;br /&gt;
! Roll analysis&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Printing ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! Schematic view&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! Stability information&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! Basic simulation results&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! Parts list&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! Nose cone profile&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! Fin templates&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! Fin placement guide&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! Export to PDF&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Plaa</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Feature_comparison&amp;diff=454</id>
		<title>Feature comparison</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Feature_comparison&amp;diff=454"/>
		<updated>2012-01-26T20:26:34Z</updated>

		<summary type="html">&lt;p&gt;Plaa: /* Optimization and analysis */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides a side-by-side feature comparison of &#039;&#039;&#039;OpenRocket&#039;&#039;&#039; and &#039;&#039;&#039;RockSim&#039;&#039;&#039;.  Both represent the latest version of the software.&lt;br /&gt;
&lt;br /&gt;
While hosted on the OpenRocket wiki site, we have attempted to make this an objective comparison between the functionality of the two software products.  If you think something is wrong or omitted, please [[User:Plaa|contact us]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! License&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Open Source (GPLv3)&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | Proprietary&lt;br /&gt;
|-&lt;br /&gt;
! Price&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Free&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | $124&lt;br /&gt;
|-&lt;br /&gt;
! Supported platforms&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Windows, Mac, Linux&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | Windows, Mac&lt;br /&gt;
|-&lt;br /&gt;
! Supported file formats&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | ORK, RKT&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | RKT&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== UI features ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! Side/back view&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! 3D view&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Design view rotation&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Any angle&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | Two directions&lt;br /&gt;
|-&lt;br /&gt;
! Live CG/CP view&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Realtime simulation&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Design features ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! Basic components&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Freeform fins&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Asymmetric fin configurations&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Tube fins&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Ring-tail fins&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! External pods&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Canted fins / roll stabilization&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Standard component libraries&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Decals&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Clustering support&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes, modifiable&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | Yes, one-time wizard&lt;br /&gt;
|-&lt;br /&gt;
! Staging support&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes, unlimited&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | Yes, 3 stages&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Simulation features ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! Degrees of freedom&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | 6DOF&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | 4DOF&lt;br /&gt;
|-&lt;br /&gt;
! Supersonic simulation&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | Limited accuracy&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Geodetic calculation (Earth coordinates, coriolis effect)&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Simulations extensible by own code&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Simulation animation&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Plotting any simulated variables&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Exporting simulated data&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Optimization and analysis ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! General design optimization&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Mass optimization&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | Yes (using general optimizer)&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Stability analysis&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes, per component&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | Yes, per stage&lt;br /&gt;
|-&lt;br /&gt;
! Drag analysis&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes, per component&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | Yes, per stage&lt;br /&gt;
|-&lt;br /&gt;
! Roll analysis&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Printing ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! Schematic view&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! Stability information&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! Basic simulation results&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! Parts list&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! Nose cone profile&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! Fin templates&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! Fin placement guide&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! Export to PDF&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Plaa</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Feature_comparison&amp;diff=453</id>
		<title>Feature comparison</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Feature_comparison&amp;diff=453"/>
		<updated>2012-01-26T20:22:02Z</updated>

		<summary type="html">&lt;p&gt;Plaa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides a side-by-side feature comparison of &#039;&#039;&#039;OpenRocket&#039;&#039;&#039; and &#039;&#039;&#039;RockSim&#039;&#039;&#039;.  Both represent the latest version of the software.&lt;br /&gt;
&lt;br /&gt;
While hosted on the OpenRocket wiki site, we have attempted to make this an objective comparison between the functionality of the two software products.  If you think something is wrong or omitted, please [[User:Plaa|contact us]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! License&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Open Source (GPLv3)&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | Proprietary&lt;br /&gt;
|-&lt;br /&gt;
! Price&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Free&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | $124&lt;br /&gt;
|-&lt;br /&gt;
! Supported platforms&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Windows, Mac, Linux&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | Windows, Mac&lt;br /&gt;
|-&lt;br /&gt;
! Supported file formats&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | ORK, RKT&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | RKT&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== UI features ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! Side/back view&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! 3D view&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Design view rotation&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Any angle&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | Two directions&lt;br /&gt;
|-&lt;br /&gt;
! Live CG/CP view&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Realtime simulation&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Design features ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! Basic components&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Freeform fins&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Asymmetric fin configurations&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Tube fins&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Ring-tail fins&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! External pods&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Canted fins / roll stabilization&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Standard component libraries&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Decals&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Clustering support&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes, modifiable&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | Yes, one-time wizard&lt;br /&gt;
|-&lt;br /&gt;
! Staging support&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes, unlimited&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | Yes, 3 stages&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Simulation features ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! Degrees of freedom&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | 6DOF&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | 4DOF&lt;br /&gt;
|-&lt;br /&gt;
! Supersonic simulation&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | Limited accuracy&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Geodetic calculation (Earth coordinates, coriolis effect)&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Simulations extensible by own code&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Simulation animation&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Plotting any simulated variables&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Exporting simulated data&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Optimization and analysis ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! General design optimization&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Mass optimization&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | Yes (using general optimizer)&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Stability analysis&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! Drag analysis&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes, per component&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! Roll analysis&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Printing ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! Schematic view&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! Stability information&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! Basic simulation results&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! Parts list&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! Nose cone profile&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! Fin templates&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! Fin placement guide&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! Export to PDF&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Plaa</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Feature_comparison&amp;diff=452</id>
		<title>Feature comparison</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Feature_comparison&amp;diff=452"/>
		<updated>2012-01-26T19:02:04Z</updated>

		<summary type="html">&lt;p&gt;Plaa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides a side-by-side feature comparison of &#039;&#039;&#039;OpenRocket&#039;&#039;&#039; and &#039;&#039;&#039;RockSim&#039;&#039;&#039;.  Both represent the latest version of the software.&lt;br /&gt;
&lt;br /&gt;
While hosted on the OpenRocket wiki site, we have attempted to make this an objective comparison between the functionality of the two software products.  If you think something is wrong or omitted, please [[User:Plaa|contact us]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! License&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Open Source (GPLv3)&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | Proprietary&lt;br /&gt;
|-&lt;br /&gt;
! Price&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Free&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | $124&lt;br /&gt;
|-&lt;br /&gt;
! Supported platforms&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Windows, Mac, Linux&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | Windows, Mac&lt;br /&gt;
|-&lt;br /&gt;
! Supported file formats&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | ORK, RKT&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | RKT&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== UI features ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! Side/back view&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! 3D view&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Design view rotation&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! Live CG/CP view&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Realtime simulation&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Design features ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! Basic components&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Freeform fins&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Asymmetric fin configurations&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Tube fins&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Ring-tail fins&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! External pods&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Canted fins / roll stabilization&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Standard component libraries&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Decals&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Clustering support&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes, modifiable&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | Yes, one-time wizard&lt;br /&gt;
|-&lt;br /&gt;
! Staging support&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes, unlimited&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | Yes, 3 stages&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Simulation features ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! Degrees of freedom&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | 6DOF&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | 4DOF&lt;br /&gt;
|-&lt;br /&gt;
! Supersonic simulation&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | Limited accuracy&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Geodetic calculation (Earth coordinates, coriolis effect)&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Simulations extensible by own code&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Simulation animation&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Plotting any simulated variables&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Exporting simulated data&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Optimization and analysis ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! General design optimization&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Mass optimization&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | Yes (using general optimizer)&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Stability analysis&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! Drag analysis&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes, per component&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! Roll analysis&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Printing ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! Schematic view&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! Stability information&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! Basic simulation results&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! Parts list&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! Nose cone profile&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! Fin templates&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! Fin placement guide&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! Export to PDF&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Plaa</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Feature_comparison&amp;diff=451</id>
		<title>Feature comparison</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Feature_comparison&amp;diff=451"/>
		<updated>2012-01-26T18:52:11Z</updated>

		<summary type="html">&lt;p&gt;Plaa: description&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page provides a side-by-side feature comparison of &#039;&#039;&#039;OpenRocket&#039;&#039;&#039; and &#039;&#039;&#039;RockSim&#039;&#039;&#039;.  Both represent the latest version of the software.&lt;br /&gt;
&lt;br /&gt;
While hosted on the OpenRocket wiki site, we have attempted to make this an objective comparison between the functionality of the two software products.  If you think something is wrong or omitted, please [[User:Plaa|contact us]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== General ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! License&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Open Source (GPLv3)&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | Proprietary&lt;br /&gt;
|-&lt;br /&gt;
! Price&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Free&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | $120&lt;br /&gt;
|-&lt;br /&gt;
! Supported platforms&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Windows, Mac, Linux&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | Windows, Mac&lt;br /&gt;
|-&lt;br /&gt;
! Supported file formats&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | ORK, RKT&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | RKT&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== UI features ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! Side/back view&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! 3D view&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Design view rotation&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! Live CG/CP view&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Realtime simulation&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Design features ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! Basic components&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Freeform fins&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Tube fins&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! External pods&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Canted fins / roll stabilization&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Standard component libraries&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Decals&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Clustering support&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes, modifiable&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | Yes, one-time wizard&lt;br /&gt;
|-&lt;br /&gt;
! Staging support&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes, unlimited&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | Yes, 3 stages&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Simulation features ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! Degrees of freedom&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | 6DOF&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | 4DOF&lt;br /&gt;
|-&lt;br /&gt;
! Supersonic simulation&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | Limited accuracy&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Geodetic calculation (Earth coordinates, coriolis effect)&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Simulations extensible by own code&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Simulation animation&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Plotting any simulated variables&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Exporting simulated data&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Optimization and analysis ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! General design optimization&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Mass optimization&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | Yes (using general optimizer)&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Stability analysis&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! Drag analysis&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes, per component&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! Roll analysis&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Printing ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! Schematic view&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! Stability information&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! Basic simulation results&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! Parts list&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! Nose cone profile&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! Fin templates&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! Fin placement guide&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! Export to PDF&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Plaa</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Feature_comparison&amp;diff=450</id>
		<title>Feature comparison</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Feature_comparison&amp;diff=450"/>
		<updated>2012-01-26T18:48:01Z</updated>

		<summary type="html">&lt;p&gt;Plaa: styling&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== General ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! License&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Open Source (GPLv3)&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | Proprietary&lt;br /&gt;
|-&lt;br /&gt;
! Price&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Free&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | $120&lt;br /&gt;
|-&lt;br /&gt;
! Supported platforms&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Windows, Mac, Linux&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | Windows, Mac&lt;br /&gt;
|-&lt;br /&gt;
! Supported file formats&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | ORK, RKT&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | RKT&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== UI features ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! Side/back view&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! 3D view&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Design view rotation&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! Live CG/CP view&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Realtime simulation&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Design features ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! Basic components&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Freeform fins&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Tube fins&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! External pods&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Canted fins / roll stabilization&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Standard component libraries&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Decals&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Clustering support&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes, modifiable&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | Yes, one-time wizard&lt;br /&gt;
|-&lt;br /&gt;
! Staging support&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes, unlimited&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | Yes, 3 stages&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Simulation features ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! Degrees of freedom&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | 6DOF&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | 4DOF&lt;br /&gt;
|-&lt;br /&gt;
! Supersonic simulation&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | Limited accuracy&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Geodetic calculation (Earth coordinates, coriolis effect)&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Simulations extensible by own code&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Simulation animation&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Plotting any simulated variables&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Exporting simulated data&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Optimization and analysis ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! General design optimization&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Mass optimization&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | Yes (using general optimizer)&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Stability analysis&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! Drag analysis&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes, per component&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! Roll analysis&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Printing ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! Schematic view&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! Stability information&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! Basic simulation results&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! Parts list&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! Nose cone profile&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! Fin templates&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! Fin placement guide&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! Export to PDF&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Plaa</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Feature_comparison&amp;diff=449</id>
		<title>Feature comparison</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Feature_comparison&amp;diff=449"/>
		<updated>2012-01-26T18:00:41Z</updated>

		<summary type="html">&lt;p&gt;Plaa: initial page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== General ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! License&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Open Source (GPLv3)&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | Proprietary&lt;br /&gt;
|-&lt;br /&gt;
! Price&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Free&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | $120&lt;br /&gt;
|-&lt;br /&gt;
! Supported platforms&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Windows, Mac, Linux&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | Windows, Mac&lt;br /&gt;
|-&lt;br /&gt;
! Supported file formats&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | ORK, RKT&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | RKT&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== UI features ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! Side/back view&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! 3D view&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Design view rotation&lt;br /&gt;
| class=&amp;quot;best&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! Live CG/CP view&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Realtime simulation&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Design features ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! Basic components&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Freeform fins&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Tube fins&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! External pods&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Canted fins / roll stabilization&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Standard component libraries&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Decals&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Clustering support&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes, modifiable&lt;br /&gt;
| class=&amp;quot;pood&amp;quot; | Yes, one-time wizard&lt;br /&gt;
|-&lt;br /&gt;
! Staging support&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes, unlimited&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | Yes, 3 stages&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Simulation features ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! Degrees of freedom&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | 6DOF&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | 4DOF&lt;br /&gt;
|-&lt;br /&gt;
! Supersonic simulation&lt;br /&gt;
| class=&amp;quot;poor&amp;quot; | Limited accuracy&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Geodetic calculation (Earth coordinates, coriolis effect)&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Simulations extensible by own code&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Simulation animation&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Plotting any simulated variables&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Exporting simulated data&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Optimization and analysis ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! General design optimization&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|-&lt;br /&gt;
! Mass optimization&lt;br /&gt;
| class=&amp;quot;okay&amp;quot; | Yes (using general optimizer)&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
|-&lt;br /&gt;
! Stability analysis&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! Drag analysis&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes, per component&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! Roll analysis&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;bad&amp;quot; | No&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Printing ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;comparison&amp;quot;&lt;br /&gt;
!&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | OpenRocket&lt;br /&gt;
! width=&amp;quot;20%&amp;quot; | RockSim&lt;br /&gt;
|-&lt;br /&gt;
! Schematic view&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! Stability information&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! Basic simulation results&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! Parts list&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! Nose cone profile&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! Fin templates&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! Fin placement guide&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|-&lt;br /&gt;
! Export to PDF&lt;br /&gt;
| class=&amp;quot;good&amp;quot; | Yes&lt;br /&gt;
| class=&amp;quot;unknown&amp;quot; | ?&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Plaa</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Main_Page&amp;diff=366</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Main_Page&amp;diff=366"/>
		<updated>2012-01-26T17:59:34Z</updated>

		<summary type="html">&lt;p&gt;Plaa: feature comparison page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the wiki for OpenRocket, an open-source model rocket simulator.  The OpenRocket documentation is written collaboratively here.&lt;br /&gt;
&lt;br /&gt;
The main web site for OpenRocket is &#039;&#039;&#039;http://openrocket.sourceforge.net/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== English ==&lt;br /&gt;
=== OpenRocket Documentation ===&lt;br /&gt;
&lt;br /&gt;
* [[User&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
* [[Feature comparison]]&lt;br /&gt;
&lt;br /&gt;
* [[FAQ|Frequently asked questions]]&lt;br /&gt;
&lt;br /&gt;
* [[Tips]]&lt;br /&gt;
&lt;br /&gt;
* [http://openrocket.sourceforge.net/documentation.html Technical Documentation]&lt;br /&gt;
&lt;br /&gt;
* [[Scripting with Python and JPype]]&lt;br /&gt;
&lt;br /&gt;
* [[Resources]]&lt;br /&gt;
&lt;br /&gt;
=== Developer resources ===&lt;br /&gt;
&lt;br /&gt;
* [[Developer&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
* [[Creating guided tours]]&lt;br /&gt;
&lt;br /&gt;
* [[Feature wishlist]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Français ==&lt;br /&gt;
=== Documentation d&#039;OpenRocket ===&lt;br /&gt;
&lt;br /&gt;
* [[Guide utilisateur]]&lt;br /&gt;
&lt;br /&gt;
* [[Questions posées fréquemment]]&lt;br /&gt;
&lt;br /&gt;
* [[Truc et astuces]]&lt;br /&gt;
&lt;br /&gt;
* [http://openrocket.sourceforge.net/documentation.html Documentation Technique]&lt;br /&gt;
&lt;br /&gt;
* [[&amp;quot;Scripter&amp;quot; avec Python et JPype]]&lt;br /&gt;
&lt;br /&gt;
* [[Ressources]]&lt;br /&gt;
&lt;br /&gt;
=== Ressources pour les développeurs ===&lt;br /&gt;
&lt;br /&gt;
* [[Guide du développeur]]&lt;br /&gt;
&lt;br /&gt;
* [[Créer des tours d&#039;horizon]]&lt;br /&gt;
&lt;br /&gt;
* [[Fonctionnalités souhaitées]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Español ==&lt;br /&gt;
=== OpenRocket Documentación ===&lt;br /&gt;
&lt;br /&gt;
* [[Guía del Usuario]]&lt;br /&gt;
&lt;br /&gt;
* [[Preguntas frecuentes]]&lt;br /&gt;
&lt;br /&gt;
* [[Consejos]]&lt;br /&gt;
&lt;br /&gt;
* [http://openrocket.sourceforge.net/documentation.html Documentación Técnica]&lt;br /&gt;
&lt;br /&gt;
* [[Recursos]]&lt;br /&gt;
&lt;br /&gt;
=== Developer resources ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Guía del desarrollador]]&lt;br /&gt;
&lt;br /&gt;
* [[Lista de futuras mejoras]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Italiano ==&lt;br /&gt;
=== Documentazione di OpenRocket  ===&lt;br /&gt;
&lt;br /&gt;
* [[Manuale dell&#039;utente]]&lt;br /&gt;
&lt;br /&gt;
* [[FAQ|Domande più frequenti]]&lt;br /&gt;
&lt;br /&gt;
* [[Consigli]]&lt;br /&gt;
&lt;br /&gt;
* [http://openrocket.sourceforge.net/documentation.html Documentazione tecnica]&lt;br /&gt;
&lt;br /&gt;
* [[Programmando con  Python e JPype]]&lt;br /&gt;
&lt;br /&gt;
* [[Risorse]]&lt;/div&gt;</summary>
		<author><name>Plaa</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Main_Page&amp;diff=364</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Main_Page&amp;diff=364"/>
		<updated>2012-01-20T19:04:51Z</updated>

		<summary type="html">&lt;p&gt;Plaa: reordering&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the wiki for OpenRocket, an open-source model rocket simulator.  The OpenRocket documentation is written collaboratively here.&lt;br /&gt;
&lt;br /&gt;
The main web site for OpenRocket is &#039;&#039;&#039;http://openrocket.sourceforge.net/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== English ==&lt;br /&gt;
=== OpenRocket Documentation ===&lt;br /&gt;
&lt;br /&gt;
* [[User&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
* [[FAQ|Frequently asked questions]]&lt;br /&gt;
&lt;br /&gt;
* [[Tips]]&lt;br /&gt;
&lt;br /&gt;
* [http://openrocket.sourceforge.net/documentation.html Technical Documentation]&lt;br /&gt;
&lt;br /&gt;
* [[Scripting with Python and JPype]]&lt;br /&gt;
&lt;br /&gt;
* [[Resources]]&lt;br /&gt;
&lt;br /&gt;
=== Developer resources ===&lt;br /&gt;
&lt;br /&gt;
* [[Developer&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
* [[Creating guided tours]]&lt;br /&gt;
&lt;br /&gt;
* [[Feature wishlist]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Français ==&lt;br /&gt;
=== Documentation d&#039;OpenRocket ===&lt;br /&gt;
&lt;br /&gt;
* [[Guide utilisateur]]&lt;br /&gt;
&lt;br /&gt;
* [[Questions posées fréquemment]]&lt;br /&gt;
&lt;br /&gt;
* [[Truc et astuces]]&lt;br /&gt;
&lt;br /&gt;
* [http://openrocket.sourceforge.net/documentation.html Documentation Technique]&lt;br /&gt;
&lt;br /&gt;
* [[&amp;quot;Scripter&amp;quot; avec Python et JPype]]&lt;br /&gt;
&lt;br /&gt;
* [[Ressources]]&lt;br /&gt;
&lt;br /&gt;
=== Ressources pour les développeurs ===&lt;br /&gt;
&lt;br /&gt;
* [[Guide du développeur]]&lt;br /&gt;
&lt;br /&gt;
* [[Créer des tours d&#039;horizon]]&lt;br /&gt;
&lt;br /&gt;
* [[Fonctionnalités souhaitées]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Español ==&lt;br /&gt;
=== OpenRocket Documentación ===&lt;br /&gt;
&lt;br /&gt;
* [[Guía del Usuario]]&lt;br /&gt;
&lt;br /&gt;
* [[Preguntas frecuentes]]&lt;br /&gt;
&lt;br /&gt;
* [[Consejos]]&lt;br /&gt;
&lt;br /&gt;
* [http://openrocket.sourceforge.net/documentation.html Documentación Técnica]&lt;br /&gt;
&lt;br /&gt;
* [[Recursos]]&lt;br /&gt;
&lt;br /&gt;
=== Developer resources ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Guía del desarrollador]]&lt;br /&gt;
&lt;br /&gt;
* [[Lista de futuras mejoras]]&lt;/div&gt;</summary>
		<author><name>Plaa</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Main_Page&amp;diff=360</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Main_Page&amp;diff=360"/>
		<updated>2011-12-20T04:09:40Z</updated>

		<summary type="html">&lt;p&gt;Plaa: reordering&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the wiki for OpenRocket, an open-source model rocket simulator.  The OpenRocket documentation is written collaboratively here.&lt;br /&gt;
&lt;br /&gt;
The main web site for OpenRocket is &#039;&#039;&#039;http://openrocket.sourceforge.net/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenRocket Documentation (English) ==&lt;br /&gt;
&lt;br /&gt;
* [[User&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
* [[FAQ|Frequently asked questions]]&lt;br /&gt;
&lt;br /&gt;
* [[Tips]]&lt;br /&gt;
&lt;br /&gt;
* [http://openrocket.sourceforge.net/documentation.html Technical Documentation]&lt;br /&gt;
&lt;br /&gt;
* [[Resources]]&lt;br /&gt;
&lt;br /&gt;
== Developer resources (English) ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Developer&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
* [[Creating guided tours]]&lt;br /&gt;
&lt;br /&gt;
* [[Feature wishlist]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Documentation d&#039;OpenRocket (Français) ==&lt;br /&gt;
&lt;br /&gt;
* [[Guide utilisateur]]&lt;br /&gt;
&lt;br /&gt;
* [[Questions posées fréquemment]]&lt;br /&gt;
&lt;br /&gt;
* [[Truc et astuces]]&lt;br /&gt;
&lt;br /&gt;
* [http://openrocket.sourceforge.net/documentation.html Documentation Technique]&lt;br /&gt;
&lt;br /&gt;
* [[Ressources]]&lt;br /&gt;
&lt;br /&gt;
== Ressources pour les développeurs (Français) ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Guide du développeur]]&lt;br /&gt;
&lt;br /&gt;
* [[Fonctionnalités souhaitées]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenRocket Documentación (Español) ==&lt;br /&gt;
&lt;br /&gt;
* [[Guía del Usuario]]&lt;br /&gt;
&lt;br /&gt;
* [[Preguntas frecuentes]]&lt;br /&gt;
&lt;br /&gt;
* [[Consejos]]&lt;br /&gt;
&lt;br /&gt;
* [http://openrocket.sourceforge.net/documentation.html Documentación Técnica]&lt;br /&gt;
&lt;br /&gt;
* [[Recursos]]&lt;br /&gt;
&lt;br /&gt;
== Developer resources (Español) ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Guía del desarrollador]]&lt;br /&gt;
&lt;br /&gt;
* [[Lista de futuras mejoras]]&lt;/div&gt;</summary>
		<author><name>Plaa</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Tips&amp;diff=399</id>
		<title>Tips</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Tips&amp;diff=399"/>
		<updated>2011-12-18T05:57:35Z</updated>

		<summary type="html">&lt;p&gt;Plaa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page collects a list of short (1-3 sentences) tips for using OpenRocket.  Later on they may be included in the software as a &amp;quot;tip of the day&amp;quot; system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Motors can be attached to either body tubes or inner tubes.  You can attach one on the &#039;&#039;&#039;Motor&#039;&#039;&#039; tab of the configuration dialog.&lt;br /&gt;
* You can scale a single component or an entire design using &#039;&#039;&#039;Edit&#039;&#039;&#039; &amp;amp;rarr; &#039;&#039;&#039;Scale...&#039;&#039;&#039;&lt;br /&gt;
* The component tree will display any component comments as tool tips.  You can set the comment on the &#039;&#039;&#039;Comment&#039;&#039;&#039; tab of the component configuration dialog.&lt;/div&gt;</summary>
		<author><name>Plaa</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Tips&amp;diff=398</id>
		<title>Tips</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Tips&amp;diff=398"/>
		<updated>2011-11-17T21:24:03Z</updated>

		<summary type="html">&lt;p&gt;Plaa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page collects a list of short (1-3 sentences) tips for using OpenRocket.  Later on they may be included in the software as a &amp;quot;tip of the day&amp;quot; system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Motors can be attached to either body tubes or inner tubes.  You can attach one on the &#039;&#039;&#039;Motor&#039;&#039;&#039; tab of the configuration dialog.&lt;br /&gt;
* You can scale a single component or an entire design using &#039;&#039;&#039;Edit&#039;&#039;&#039; &amp;amp;rarr; &#039;&#039;&#039;Scale...&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Plaa</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Tips&amp;diff=397</id>
		<title>Tips</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Tips&amp;diff=397"/>
		<updated>2011-11-17T21:16:56Z</updated>

		<summary type="html">&lt;p&gt;Plaa: tips page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page collects a list of short (1-2 sentences) tips for using OpenRocket.  Later on they may be included in the software as a &amp;quot;tip of the day&amp;quot; system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Motors can be attached to either body tubes or inner tubes.  You can attach one on the &#039;&#039;&#039;Motor&#039;&#039;&#039; tab of the configuration dialog.&lt;br /&gt;
* You can scale a single component or an entire design using &#039;&#039;&#039;Edit&#039;&#039;&#039; &amp;amp;rarr; &#039;&#039;&#039;Scale...&#039;&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Plaa</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Main_Page&amp;diff=345</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Main_Page&amp;diff=345"/>
		<updated>2011-11-17T21:12:44Z</updated>

		<summary type="html">&lt;p&gt;Plaa: tips link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the wiki for OpenRocket, an open-source model rocket simulator.  The OpenRocket documentation is written collaboratively here.&lt;br /&gt;
&lt;br /&gt;
The main web site for OpenRocket is &#039;&#039;&#039;http://openrocket.sourceforge.net/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenRocket Documentation (English) ==&lt;br /&gt;
&lt;br /&gt;
* [[User&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
* [[FAQ|Frequently asked questions]]&lt;br /&gt;
&lt;br /&gt;
* [[Tips]]&lt;br /&gt;
&lt;br /&gt;
* [http://openrocket.sourceforge.net/documentation.html Technical Documentation]&lt;br /&gt;
&lt;br /&gt;
* [[Resources]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenRocket Documentación (Español) ==&lt;br /&gt;
&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Developer resources ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Developer&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
* [[Feature wishlist]]&lt;/div&gt;</summary>
		<author><name>Plaa</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Main_Page&amp;diff=344</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Main_Page&amp;diff=344"/>
		<updated>2011-11-17T21:08:19Z</updated>

		<summary type="html">&lt;p&gt;Plaa: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the wiki for OpenRocket, an open-source model rocket simulator.  The OpenRocket documentation is written collaboratively here.&lt;br /&gt;
&lt;br /&gt;
The main web site for OpenRocket is &#039;&#039;&#039;http://openrocket.sourceforge.net/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenRocket Documentation (English) ==&lt;br /&gt;
&lt;br /&gt;
* [[User&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
* [[FAQ|Frequently asked questions]]&lt;br /&gt;
&lt;br /&gt;
* [http://openrocket.sourceforge.net/documentation.html Technical Documentation]&lt;br /&gt;
&lt;br /&gt;
* [[Resources]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenRocket Documentación (Español) ==&lt;br /&gt;
&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Developer resources ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Developer&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Feature wishlist]]&lt;/div&gt;</summary>
		<author><name>Plaa</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Main_Page&amp;diff=343</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Main_Page&amp;diff=343"/>
		<updated>2011-11-17T21:06:10Z</updated>

		<summary type="html">&lt;p&gt;Plaa: separate english + spanish&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the wiki for OpenRocket, an open-source model rocket simulator.  The OpenRocket documentation is written collaboratively here.&lt;br /&gt;
&lt;br /&gt;
The main web site for OpenRocket is &#039;&#039;&#039;http://openrocket.sourceforge.net/&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenRocket Documentation (English) ==&lt;br /&gt;
&lt;br /&gt;
* [[User&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
* [[FAQ|Frequently asked questions]]&lt;br /&gt;
&lt;br /&gt;
* [http://openrocket.sourceforge.net/documentation.html Technical Documentation]&lt;br /&gt;
&lt;br /&gt;
* [[Resources]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OpenRocket Documentation (Spanish) ==&lt;br /&gt;
&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Developer resources ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Developer&#039;s Guide]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [[Feature wishlist]]&lt;/div&gt;</summary>
		<author><name>Plaa</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=FAQ&amp;diff=217</id>
		<title>FAQ</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=FAQ&amp;diff=217"/>
		<updated>2011-11-17T19:13:52Z</updated>

		<summary type="html">&lt;p&gt;Plaa: /* What information is stored during automatic update checks? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Access}}&lt;br /&gt;
&lt;br /&gt;
This page lists various frequently asked questions.  Most of these are categorized as &amp;quot;How to&amp;quot; questions for various design issues.&lt;br /&gt;
&lt;br /&gt;
== Using OpenRocket ==&lt;br /&gt;
&lt;br /&gt;
=== How to use motor configurations? ===&lt;br /&gt;
&lt;br /&gt;
OpenRocket uses the notion of &#039;&#039;&#039;motor configurations&#039;&#039;&#039; for rocket designs.  Each motor configuration corresponds to a configuration you are planning on launching your rocket with.  For example for a simple small rocket you could define three configurations, one using an A8-3 motor, one using a B4-4 motor, and one using a C6-3 motor.  For a multi-stage or clustered rocket you can define and experiment with many other motor configurations easily and switch between them.  You can define any number of motor configurations for a rocket design.&lt;br /&gt;
&lt;br /&gt;
In the rocket design window, you can select which motor configuration is displayed in the figure by the dropdown labeled &#039;&#039;&#039;Motor configuration&#039;&#039;&#039;.  Every design has a configuration named &#039;&#039;[No motors]&#039;&#039; in addition to the user-defined configurations, which contains no motors.&lt;br /&gt;
&lt;br /&gt;
You can configure all aspects of motor configurations in the &#039;&#039;&#039;Edit motor configurations&#039;&#039;&#039; dialog.  It can be opened from any motor configuration selector.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== How do I define motors? ===&lt;br /&gt;
&lt;br /&gt;
Defining motors and simulating using them in OpenRocket requires three steps:  defining which components function as motor mounts, defining the different motor configurations, and defining which motor configuration to use in a particular simulation.&lt;br /&gt;
&lt;br /&gt;
OpenRocket supports attaching motors in either body tubes or inner tubes.  To make a component be a motor mount, open the configuration dialog for that component, move to the &#039;&#039;&#039;Motor&#039;&#039;&#039; tab and tick the box &#039;&#039;This component is a motor mount&#039;&#039;.  After that you can select motors for different motor configurations on the same tab.  See [[#How to use motor configurations?]] for details on motor configurations.&lt;br /&gt;
&lt;br /&gt;
Last, when you create a new simulation, you need to select which motor configuration it uses.  This is done from the &#039;&#039;Motor configuration&#039;&#039; dropdown of the &#039;&#039;&#039;Launch conditions&#039;&#039;&#039; tab.  The default motor configuration is the currently selected configuration of the design figure.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== How do I create a clustered rocket? ===&lt;br /&gt;
&lt;br /&gt;
Clusters can be created using the &#039;&#039;&#039;Cluster&#039;&#039;&#039; tab of an Inner tube.  This allows you to cluster the inner tubes in various configurations, distances and angles.  The motor selected for the inner tube will be used for all the inner tubes in the cluster, and any components (such as engine blocks) attached to the inner tube will be replicated for all of the inner tubes.&lt;br /&gt;
&lt;br /&gt;
If you need more fine-grained control on what components are in which tubes, you can create the cluster this way and then split the cluster into individual components by clicking &#039;&#039;Split cluster&#039;&#039;.  You can then modify the individual components of the cluster.  Note that you cannot re-assemble a split cluster (except with undo).&lt;br /&gt;
&lt;br /&gt;
Note that you can create clusters of clusters by attaching inner tubes to other inner tubes, but &#039;&#039;the motors attached to such configurations will not be counted up correctly!&#039;&#039;  This is a known bug that will be addressed in later versions.&lt;br /&gt;
&lt;br /&gt;
The cluster techniques can also be combined with a [[#How do I create a staged rocket?|staged rocket]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== How do I create a staged rocket? ===&lt;br /&gt;
&lt;br /&gt;
First, the components belonging to different stages must be attached to separate stage components.  You can add stages to the rocket by clicking the &#039;&#039;New stage&#039;&#039; button on the main design window.  Stages are always used from the lowest to the highest, and when an upper-stage motor ignites all lower stages are automatically dropped off.&lt;br /&gt;
&lt;br /&gt;
The motor ignition event can be selected on the &#039;&#039;&#039;Motor&#039;&#039;&#039; tab of the body tubes or inner tubes.  The default is &#039;&#039;Automatic&#039;&#039;, which is suitable for small rockets, where the ejection charge of the lower stage lights up the upper stage motors.  The lowest stage will be ignited at launch.&lt;br /&gt;
&lt;br /&gt;
In larger staged rockets that don&#039;t have ejection charges the ignition event must be changed.  The first stage to light up should ignite at &#039;&#039;Launch&#039;&#039; (or &#039;&#039;Automatic&#039;&#039;).  If the latter stages are ignited by an onboard computer that detects deceleration, they should be set to &#039;&#039;First burnout of previous stage&#039;&#039;.  (Note that this assumes the lower stage motors have equal burn lengths.)  If the latter stage is ignited by a timer, the event should be set to &#039;&#039;Launch&#039;&#039; and a suitable delay added.&lt;br /&gt;
&lt;br /&gt;
Each of the events can take an additional delay parameter.  This allows taking into account for example the time for an ejection charge to light up the next stage or the time for an onboard computer to ignite the next stage.  It can also be used for timed ignition, by setting the ejection event to &#039;&#039;Launch&#039;&#039; plus &#039;&#039;n&#039;&#039; seconds.&lt;br /&gt;
&lt;br /&gt;
The staging techniques can also be combined with a [[#How do I create a clustered rocket?|clustered rocket]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== How do I create external pods to the rocket? ===&lt;br /&gt;
&lt;br /&gt;
External pods are currently not supported by OpenRocket.  This feature has been considered, but it requires more knowledge of how to reliably simulate such configurations.  If you know about such simulation or would like to implement it, please [http://openrocket.sourceforge.net/contact.html contact us]!&lt;br /&gt;
&lt;br /&gt;
Note that even though inner tubes can be displaced outside of the body tube, &#039;&#039;they will not affect the aerodynamics of the rocket&#039;&#039;.  This can provide a visual clue of what such a rocket would look like, but does not provide simulation accuracy.  Similarly, extremely thick fins are still considered as fins, and won&#039;t likely produce reliable results.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== How do I add motors to the database? ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Since version 1.1.1&#039;&#039;&#039; you can define external files to be loaded into the thrust curve database.  There are two ways to add the files:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Copy the files to the OpenRocket configuration directory.  This is environment-specific:&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;margin-left: 2em&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Windows:&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt;tt&amp;gt;C:\Documents and Settings\&amp;lt;i&amp;gt;username&amp;lt;/i&amp;gt;\Application Data\OpenRocket\ThrustCurves\&amp;lt;/tt&amp;gt; or&lt;br /&gt;
&amp;lt;tt&amp;gt;C:\Users\&amp;lt;i&amp;gt;username&amp;lt;/i&amp;gt;\AppData\Roaming\OpenRocket\ThrustCurves&amp;lt;/tt&amp;gt; (typical)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Linux:&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt;tt&amp;gt;~/.openrocket/ThrustCurves/&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Mac OS X:&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt;tt&amp;gt;~/Library/Application Support/OpenRocket/ThrustCurves/&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;OR&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Instruct OpenRocket to load the files from another location.  This can be done on the &amp;quot;Options&amp;quot; tab from the preferences.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thrust curves can be loaded from RASP motor files (.eng), RockSim engine files (.rse) or ZIP archives containing the same.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Prior to version 1.1.1&#039;&#039;&#039; thrust curves needed to be added to the JAR file itself.  The motors are loaded from the JAR file directory &amp;lt;tt&amp;gt;datafiles/thrustcurves/&amp;lt;/tt&amp;gt;. Adding motor files in this directory will allow OpenRocket to load them. These can be added either from the command line using jar or by WinZip (though see the notes at [http://en.wikipedia.org/wiki/JAR_(file_format)#Problems_with_the_JAR_format Problems with the JAR format]).&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
&lt;br /&gt;
=== What information is stored during automatic update checks? ===&lt;br /&gt;
&lt;br /&gt;
When checking for updates, OpenRocket sends some non-personal information about the current installation.  This information is used for statistical purposes (such as estimating what kind of load would be expected to [http://www.thrustcurve.org/ thrustcurve.org] when integrating with it, what Java versions should be supported, how much effort should be spent on parallelization, to what languages the software should be localized etc.) and also to quench the curiosity of the developers.  We don&#039;t get any payment for the work we do, so knowing how much the software is used may help in motivating further development.  :)&lt;br /&gt;
&lt;br /&gt;
The information stored during the checks are:&lt;br /&gt;
&lt;br /&gt;
# The OpenRocket version and build source (default JAR file or some Linux distribution for instance)&lt;br /&gt;
# A randomly-generated ID for the installation (does not contain any information about the user or system)&lt;br /&gt;
# The operating system name and computer architecture&lt;br /&gt;
# The Java runtime vendor and Java runtime version&lt;br /&gt;
# The country and locale of the user&lt;br /&gt;
# The number of processors in the computer&lt;br /&gt;
# The time when the check was made&lt;br /&gt;
&lt;br /&gt;
Note that the user&#039;s IP address is &#039;&#039;not&#039;&#039; stored with this information.  The IP address is likely stored in the Sourceforge web access logs, but the developers do not have access to this information.&lt;br /&gt;
&lt;br /&gt;
The automatic checks for updates can be disabled in the &#039;&#039;&#039;Options&#039;&#039;&#039; tab of the preferences dialog.&lt;br /&gt;
&lt;br /&gt;
=== Where to ask more information? ===&lt;br /&gt;
&lt;br /&gt;
The best place to ask questions is the [https://sourceforge.net/apps/phpbb/openrocket/ OpenRocket forums], where other people can also answer and see the answers.&lt;br /&gt;
&lt;br /&gt;
Other contact information can be found on the [http://openrocket.sourceforge.net/contact.html contact info page].&lt;/div&gt;</summary>
		<author><name>Plaa</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=FAQ&amp;diff=216</id>
		<title>FAQ</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=FAQ&amp;diff=216"/>
		<updated>2011-11-17T19:10:42Z</updated>

		<summary type="html">&lt;p&gt;Plaa: /* How do I add motors to the database? */ clearing doc&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Access}}&lt;br /&gt;
&lt;br /&gt;
This page lists various frequently asked questions.  Most of these are categorized as &amp;quot;How to&amp;quot; questions for various design issues.&lt;br /&gt;
&lt;br /&gt;
== Using OpenRocket ==&lt;br /&gt;
&lt;br /&gt;
=== How to use motor configurations? ===&lt;br /&gt;
&lt;br /&gt;
OpenRocket uses the notion of &#039;&#039;&#039;motor configurations&#039;&#039;&#039; for rocket designs.  Each motor configuration corresponds to a configuration you are planning on launching your rocket with.  For example for a simple small rocket you could define three configurations, one using an A8-3 motor, one using a B4-4 motor, and one using a C6-3 motor.  For a multi-stage or clustered rocket you can define and experiment with many other motor configurations easily and switch between them.  You can define any number of motor configurations for a rocket design.&lt;br /&gt;
&lt;br /&gt;
In the rocket design window, you can select which motor configuration is displayed in the figure by the dropdown labeled &#039;&#039;&#039;Motor configuration&#039;&#039;&#039;.  Every design has a configuration named &#039;&#039;[No motors]&#039;&#039; in addition to the user-defined configurations, which contains no motors.&lt;br /&gt;
&lt;br /&gt;
You can configure all aspects of motor configurations in the &#039;&#039;&#039;Edit motor configurations&#039;&#039;&#039; dialog.  It can be opened from any motor configuration selector.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== How do I define motors? ===&lt;br /&gt;
&lt;br /&gt;
Defining motors and simulating using them in OpenRocket requires three steps:  defining which components function as motor mounts, defining the different motor configurations, and defining which motor configuration to use in a particular simulation.&lt;br /&gt;
&lt;br /&gt;
OpenRocket supports attaching motors in either body tubes or inner tubes.  To make a component be a motor mount, open the configuration dialog for that component, move to the &#039;&#039;&#039;Motor&#039;&#039;&#039; tab and tick the box &#039;&#039;This component is a motor mount&#039;&#039;.  After that you can select motors for different motor configurations on the same tab.  See [[#How to use motor configurations?]] for details on motor configurations.&lt;br /&gt;
&lt;br /&gt;
Last, when you create a new simulation, you need to select which motor configuration it uses.  This is done from the &#039;&#039;Motor configuration&#039;&#039; dropdown of the &#039;&#039;&#039;Launch conditions&#039;&#039;&#039; tab.  The default motor configuration is the currently selected configuration of the design figure.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== How do I create a clustered rocket? ===&lt;br /&gt;
&lt;br /&gt;
Clusters can be created using the &#039;&#039;&#039;Cluster&#039;&#039;&#039; tab of an Inner tube.  This allows you to cluster the inner tubes in various configurations, distances and angles.  The motor selected for the inner tube will be used for all the inner tubes in the cluster, and any components (such as engine blocks) attached to the inner tube will be replicated for all of the inner tubes.&lt;br /&gt;
&lt;br /&gt;
If you need more fine-grained control on what components are in which tubes, you can create the cluster this way and then split the cluster into individual components by clicking &#039;&#039;Split cluster&#039;&#039;.  You can then modify the individual components of the cluster.  Note that you cannot re-assemble a split cluster (except with undo).&lt;br /&gt;
&lt;br /&gt;
Note that you can create clusters of clusters by attaching inner tubes to other inner tubes, but &#039;&#039;the motors attached to such configurations will not be counted up correctly!&#039;&#039;  This is a known bug that will be addressed in later versions.&lt;br /&gt;
&lt;br /&gt;
The cluster techniques can also be combined with a [[#How do I create a staged rocket?|staged rocket]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== How do I create a staged rocket? ===&lt;br /&gt;
&lt;br /&gt;
First, the components belonging to different stages must be attached to separate stage components.  You can add stages to the rocket by clicking the &#039;&#039;New stage&#039;&#039; button on the main design window.  Stages are always used from the lowest to the highest, and when an upper-stage motor ignites all lower stages are automatically dropped off.&lt;br /&gt;
&lt;br /&gt;
The motor ignition event can be selected on the &#039;&#039;&#039;Motor&#039;&#039;&#039; tab of the body tubes or inner tubes.  The default is &#039;&#039;Automatic&#039;&#039;, which is suitable for small rockets, where the ejection charge of the lower stage lights up the upper stage motors.  The lowest stage will be ignited at launch.&lt;br /&gt;
&lt;br /&gt;
In larger staged rockets that don&#039;t have ejection charges the ignition event must be changed.  The first stage to light up should ignite at &#039;&#039;Launch&#039;&#039; (or &#039;&#039;Automatic&#039;&#039;).  If the latter stages are ignited by an onboard computer that detects deceleration, they should be set to &#039;&#039;First burnout of previous stage&#039;&#039;.  (Note that this assumes the lower stage motors have equal burn lengths.)  If the latter stage is ignited by a timer, the event should be set to &#039;&#039;Launch&#039;&#039; and a suitable delay added.&lt;br /&gt;
&lt;br /&gt;
Each of the events can take an additional delay parameter.  This allows taking into account for example the time for an ejection charge to light up the next stage or the time for an onboard computer to ignite the next stage.  It can also be used for timed ignition, by setting the ejection event to &#039;&#039;Launch&#039;&#039; plus &#039;&#039;n&#039;&#039; seconds.&lt;br /&gt;
&lt;br /&gt;
The staging techniques can also be combined with a [[#How do I create a clustered rocket?|clustered rocket]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== How do I create external pods to the rocket? ===&lt;br /&gt;
&lt;br /&gt;
External pods are currently not supported by OpenRocket.  This feature has been considered, but it requires more knowledge of how to reliably simulate such configurations.  If you know about such simulation or would like to implement it, please [http://openrocket.sourceforge.net/contact.html contact us]!&lt;br /&gt;
&lt;br /&gt;
Note that even though inner tubes can be displaced outside of the body tube, &#039;&#039;they will not affect the aerodynamics of the rocket&#039;&#039;.  This can provide a visual clue of what such a rocket would look like, but does not provide simulation accuracy.  Similarly, extremely thick fins are still considered as fins, and won&#039;t likely produce reliable results.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== How do I add motors to the database? ===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Since version 1.1.1&#039;&#039;&#039; you can define external files to be loaded into the thrust curve database.  There are two ways to add the files:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Copy the files to the OpenRocket configuration directory.  This is environment-specific:&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; style=&amp;quot;margin-left: 2em&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;Windows:&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt;tt&amp;gt;C:\Documents and Settings\&amp;lt;i&amp;gt;username&amp;lt;/i&amp;gt;\Application Data\OpenRocket\ThrustCurves\&amp;lt;/tt&amp;gt; or&lt;br /&gt;
&amp;lt;tt&amp;gt;C:\Users\&amp;lt;i&amp;gt;username&amp;lt;/i&amp;gt;\AppData\Roaming\OpenRocket\ThrustCurves&amp;lt;/tt&amp;gt; (typical)&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Linux:&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt;tt&amp;gt;~/.openrocket/ThrustCurves/&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &#039;&#039;&#039;Mac OS X:&#039;&#039;&#039;&lt;br /&gt;
| &amp;lt;tt&amp;gt;~/Library/Application Support/OpenRocket/ThrustCurves/&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;OR&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Instruct OpenRocket to load the files from another location.  This can be done on the &amp;quot;Options&amp;quot; tab from the preferences.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thrust curves can be loaded from RASP motor files (.eng), RockSim engine files (.rse) or ZIP archives containing the same.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Prior to version 1.1.1&#039;&#039;&#039; thrust curves needed to be added to the JAR file itself.  The motors are loaded from the JAR file directory &amp;lt;tt&amp;gt;datafiles/thrustcurves/&amp;lt;/tt&amp;gt;. Adding motor files in this directory will allow OpenRocket to load them. These can be added either from the command line using jar or by WinZip (though see the notes at [http://en.wikipedia.org/wiki/JAR_(file_format)#Problems_with_the_JAR_format Problems with the JAR format]).&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
&lt;br /&gt;
=== What information is stored during automatic update checks? ===&lt;br /&gt;
&lt;br /&gt;
When checking for updates, OpenRocket sends some non-personal information about the current installation.  This information is used for statistical purposes (such as estimating what kind of load would be expected to [http://www.thrustcurve.org/ thrustcurve.org] when integrating with it, what Java versions should be supported, how much effort should be spent on parallelization, to what languages the software should be localized etc.) and also to quench the curiosity of the developers.  We don&#039;t get any payment for the work we do, so knowing how much the software is used may help in motivating further development.  :)&lt;br /&gt;
&lt;br /&gt;
The information stored during the checks are:&lt;br /&gt;
&lt;br /&gt;
# The OpenRocket version and build source (default JAR file or some Linux distribution for instance)&lt;br /&gt;
# A randomly-generated ID for the installation (does not contain any information about the user or system)&lt;br /&gt;
# The operating system name and computer architecture&lt;br /&gt;
# The Java runtime vendor and Java runtime version&lt;br /&gt;
# The country, time zone and locale of the user (provides location information within about 500-1000 km)&lt;br /&gt;
# The number of processors in the computer&lt;br /&gt;
# The time when the check was made&lt;br /&gt;
&lt;br /&gt;
Note that the user&#039;s IP address is &#039;&#039;not&#039;&#039; stored with this information.  The IP address is likely stored in the Sourceforge web access logs, but the developers do not have access to this information.&lt;br /&gt;
&lt;br /&gt;
The automatic checks for updates can be disabled in the &#039;&#039;&#039;Options&#039;&#039;&#039; tab of the preferences dialog.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Where to ask more information? ===&lt;br /&gt;
&lt;br /&gt;
The best place to ask questions is the [https://sourceforge.net/apps/phpbb/openrocket/ OpenRocket forums], where other people can also answer and see the answers.&lt;br /&gt;
&lt;br /&gt;
Other contact information can be found on the [http://openrocket.sourceforge.net/contact.html contact info page].&lt;/div&gt;</summary>
		<author><name>Plaa</name></author>
	</entry>
	<entry>
		<id>http://wiki.openrocket.info/index.php?title=Developer%27s_Guide&amp;diff=446</id>
		<title>Developer&#039;s Guide</title>
		<link rel="alternate" type="text/html" href="http://wiki.openrocket.info/index.php?title=Developer%27s_Guide&amp;diff=446"/>
		<updated>2011-11-09T21:08:52Z</updated>

		<summary type="html">&lt;p&gt;Plaa: updated SVN instructions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Access}}&lt;br /&gt;
&lt;br /&gt;
This page contains information on the inner workings of OpenRocket and is meant primarily for developers interested in developing OpenRocket.&lt;br /&gt;
&lt;br /&gt;
In addition to this page, information can be found in the [http://openrocket.sourceforge.net/documentation.html Technical documentation] chapter 5.&lt;br /&gt;
&lt;br /&gt;
== Obtaining the source code ==&lt;br /&gt;
&lt;br /&gt;
OpenRocket is primarily developed using [http://www.eclipse.org/ Eclipse], and it&#039;s the recommended IDE for compatibility.  Developers are free to use other IDE&#039;s, but everything may not work out-of-the-box.&lt;br /&gt;
&lt;br /&gt;
You need to install either [http://subclipse.tigris.org/ Subclipse] or [http://www.eclipse.org/subversive/ Subversive] SVN client plugin to Eclipse.  Follow the instructions on their pages.  The two plugins are relatively similar, but the documentation below uses the terminology of Subclipse.&lt;br /&gt;
&lt;br /&gt;
After you have installed Subclipse, select File -&amp;gt; Import, select &amp;quot;Checkout Projects from SVN&amp;quot; under &amp;quot;SVN&amp;quot; and click Next.  You need to create a new repository location using the URL https://openrocket.svn.sourceforge.net/svnroot/openrocket.  Next, select the folder &amp;quot;trunk&amp;quot; (this is the base development branch) and click Finish.  After loading you should have the full source in a ready project.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; The source packages available on the OpenRocket web site (*.zip) are meant for building the application from source code, &#039;&#039;&#039;NOT&#039;&#039;&#039; for development purposes.  They do not contain all the project files etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
For those who want to use the command-line, the OpenRocket trunk can be retrieved by simply:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ svn co https://openrocket.svn.sourceforge.net/svnroot/openrocket/trunk OpenRocket&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Notes for Newer Eclipse Users ===&lt;br /&gt;
You can get the Galileo version of Eclipse from the [http://www.eclipse.org/downloads/ Eclipse Download Site].  You should either pull Eclipse IDE for Java Developers or Eclipse for RCP/Plug-in Developers.  I&#039;m using Eclipse IDE for Java Developers.  Neither of these is at the top of the list so be careful to pick the version.&lt;br /&gt;
&lt;br /&gt;
When you create a workspace to load the project in, be sure to go in and set the default JRE and Java compliance to 1.6.  Even if you&#039;ve already set the system default for your computer to use Java 6 and you&#039;re running the IDE with Java 6, workspaces will default to Java 5 stuff.  You need compliance at 1.6 or you&#039;ll get a lot of compile errors - particularly around use of @Override.&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| [[File:CompilerComplianceLevel.png|none|200px]]&lt;br /&gt;
|  [[File:JavaBuildPath.png|none|200px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If you&#039;re getting errors, look at the build path and verify that you see 1.6 in the build path as shown above.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Running OpenRocket from Eclipse ==&lt;br /&gt;
&lt;br /&gt;
After importing the project into Eclipse the 3rd party libraries should be automatically configured correctly.  One additional step is required in order for OpenRocket to find the build.properties file for running OpenRocket.&lt;br /&gt;
&lt;br /&gt;
# Open the class net.sf.openrocket.startup.Startup.  Running this directly fails due to missing build.properties file.&lt;br /&gt;
# Select Run As -&amp;gt; Run Configurations...&lt;br /&gt;
# On the Classpath tab click on User entries, then click Advanced... -&amp;gt; Add Folders -&amp;gt; Select the OpenRocket base directory and click OK&lt;br /&gt;
# Click Run&lt;br /&gt;
&lt;br /&gt;
This adds the base directory to the classpath, which is required for running OpenRocket.  Unfortunately Eclipse does not support adding a general data directory to the default project classpath.&lt;br /&gt;
&lt;br /&gt;
== Marking TODO&#039;s ==&lt;br /&gt;
&lt;br /&gt;
Often when writing code you know that something could be done better, but at the moment is either impossible or unreasonable.  These are commonly marked with a TODO comment.  The following convension is used to mark the importance of different TODO&#039;s:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;code&amp;gt;// TODO: CRITICAL: Some comment&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; A bug or something that is not yet implemented, and must be corrected before any release is made.  The Ant build script checks for these and prevents building if such a comment is found.&lt;br /&gt;
* &amp;lt;code&amp;gt;// TODO: HIGH: Some comment&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; An important issue that should be looked into within this or the next major release.&lt;br /&gt;
* &amp;lt;code&amp;gt;// TODO: MEDIUM: Some comment&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; Something that would make the software better, but does not represent a problem as such.&lt;br /&gt;
* &amp;lt;code&amp;gt;// TODO: LOW: Some comment&amp;lt;/code&amp;gt; &amp;lt;br&amp;gt; Something that would be nice to do better in the future&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Units used in OpenRocket ==&lt;br /&gt;
&lt;br /&gt;
OpenRocket always uses internally pure SI units.  For example all rocket dimensions and flight distances are in meters, all masses are in kilograms, density is in kg/m³, temperature is in Kelvin etc.  This convension is also used when storing the design in the OpenRocket format.&lt;br /&gt;
&lt;br /&gt;
The only exception to this rule is angles:&lt;br /&gt;
* Angles are represented as radians internally, but in the file format they are converted to degrees.  This is to make the file format more human-readable and to avoid rounding errors.&lt;br /&gt;
* Latitude and longitude of the launch site are represented in degrees both internally and externally.&lt;br /&gt;
&lt;br /&gt;
When displaying measures to the user, the values are converted into the preferred units of the user.  This is performed using classes in the package &amp;lt;tt&amp;gt;net.sf.openrocket.unit&amp;lt;/tt&amp;gt;.  The &amp;lt;tt&amp;gt;Unit&amp;lt;/tt&amp;gt; class represents a single unit and it includes methods for converting between that unit and SI units in addition to creating a string representation with a suitable amount of decimals.  A &amp;lt;tt&amp;gt;UnitGroup&amp;lt;/tt&amp;gt; describes a measurable quantity such as temperature and contains the units available for that quantity, such as Celcius, Fahrenheit and Kelvin.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Rocket design loading and saving ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(This section is based on email correspondence)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
All file reading/writing is performed in the package&lt;br /&gt;
&amp;lt;tt&amp;gt;net.sf.openrocket.file&amp;lt;/tt&amp;gt; and subpackages.  To implement a new&lt;br /&gt;
document loader it is necessary to extend the class &amp;lt;tt&amp;gt;RocketLoader&amp;lt;/tt&amp;gt; and&lt;br /&gt;
implement the abstract method &amp;lt;tt&amp;gt;loadFromStream(InputStream)&amp;lt;/tt&amp;gt;.  This&lt;br /&gt;
method simply loads the document and returns an &amp;lt;tt&amp;gt;OpenRocketDocument&amp;lt;/tt&amp;gt;&lt;br /&gt;
object.&lt;br /&gt;
&lt;br /&gt;
An &amp;lt;tt&amp;gt;OpenRocketDocument&amp;lt;/tt&amp;gt; contains all the information about an opened&lt;br /&gt;
document, primarily the rocket structure and the simulations.  The&lt;br /&gt;
rocket structure is a simple tree-like structure of &amp;lt;tt&amp;gt;RocketComponents&amp;lt;/tt&amp;gt;.&lt;br /&gt;
All of the components are in the package &amp;lt;tt&amp;gt;.rocketcomponent&amp;lt;/tt&amp;gt;.  A diagram&lt;br /&gt;
of their hierarchy and a short explanation of each class is available&lt;br /&gt;
in my thesis section 5.1&lt;br /&gt;
(http://openrocket.sourceforge.net/documentation.html)&lt;br /&gt;
&lt;br /&gt;
I&#039;ve implemented a simple XML reading framework (based on SAX), which&lt;br /&gt;
simplifies reading by assuming that XML elements can contain only&lt;br /&gt;
other elements or text content, but not both.  Both the OpenRocket and&lt;br /&gt;
Rocksim format abide with this restriction.&lt;br /&gt;
&lt;br /&gt;
The framework is in the package &amp;lt;tt&amp;gt;.file.simplesax&amp;lt;/tt&amp;gt;.  The primary class&lt;br /&gt;
that will be extended is &amp;lt;tt&amp;gt;ElementHandler&amp;lt;/tt&amp;gt;, which contains three methods.&lt;br /&gt;
&amp;lt;tt&amp;gt;openElement()&amp;lt;/tt&amp;gt; is called when a new subelement is found, and it&lt;br /&gt;
returns a new &amp;lt;tt&amp;gt;ElementHandler&amp;lt;/tt&amp;gt; to handle that element (which can be the&lt;br /&gt;
object itself), or &amp;lt;tt&amp;gt;null&amp;lt;/tt&amp;gt; in order to ignore that element and all of its&lt;br /&gt;
contents (for example for unknown elements). &amp;lt;tt&amp;gt;closeElement()&amp;lt;/tt&amp;gt; is called&lt;br /&gt;
when the subelement ends, and &amp;lt;tt&amp;gt;endHandler()&amp;lt;/tt&amp;gt; is called when the element&lt;br /&gt;
of the current handler ends.  The JavaDoc should provide the necessary&lt;br /&gt;
details.&lt;br /&gt;
&lt;br /&gt;
There are a few ready handlers, the most useful of which will probably&lt;br /&gt;
be &amp;lt;tt&amp;gt;PlainTextHandler&amp;lt;/tt&amp;gt;.  This handler accepts only text content and&lt;br /&gt;
ignores all subelements.  If the XML file contains&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;element&amp;gt;value&amp;lt;/element&amp;gt;&amp;lt;/nowiki&amp;gt;, then the handler can return a&lt;br /&gt;
&amp;lt;tt&amp;gt;PlainTextHandler&amp;lt;/tt&amp;gt; and handle the content within the &amp;lt;tt&amp;gt;closeElement()&amp;lt;/tt&amp;gt;&lt;br /&gt;
method, removing the need to write a specialized handler for that&lt;br /&gt;
element.&lt;br /&gt;
&lt;br /&gt;
The XML reading is initiated by calling &amp;lt;tt&amp;gt;SimpleSAX.readXML()&amp;lt;/tt&amp;gt; with the&lt;br /&gt;
input source and the initial &amp;lt;tt&amp;gt;ElementHandler&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The OpenRocket document loading is implemented in&lt;br /&gt;
&amp;lt;tt&amp;gt;.file.openrocket.OpenRocketLoader&amp;lt;/tt&amp;gt;.  Here I&#039;ve used a bit more&lt;br /&gt;
boilerplate code to be able to define most of the rocket structure&lt;br /&gt;
preferences without needing separate handlers for them.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== The OpenRocket format (*.ork) ===&lt;br /&gt;
&lt;br /&gt;
The OpenRocket native format uses the file extension *.ork.  It is an XML format, which can optionally be compressed using GZIP.  (The extension *.ork.gz is also accepted by the dialogs, though plain .ork is recommended.)&lt;br /&gt;
&lt;br /&gt;
Currently the file format is not documented other than as the reference implementation, and no XML schema exists.  This will hopefully change in the future.  See [[#Units used in OpenRocket]] for details on units.&lt;br /&gt;
&lt;br /&gt;
Every time the XML format changes, the file version number is increased.  This version number is not linked to the version of OpenRocket that created the file, but instead describes the file format.  Later versions of OpenRocket should attempt to store files in the oldest format that supports all the necessary features.  The changes in the format are described in the [http://openrocket.svn.sourceforge.net/viewvc/openrocket/trunk/fileformat.txt fileformat.txt file in SVN].&lt;br /&gt;
&#039;&#039;Italic text&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Plaa</name></author>
	</entry>
</feed>