Improvements to docs

This commit is contained in:
SiboVG 2024-05-26 01:42:48 +02:00
parent 3b5464a824
commit 5298bd019d
49 changed files with 763 additions and 131 deletions

View File

@ -6,6 +6,11 @@
text-align: center;
}
.or-image-border img {
border: 1px solid #ccc;
padding: 3px;
}
.clear-both {
clear: both;
}

View File

@ -1,4 +1,4 @@
=================
*****************
API Documentation
=================
*****************

View File

@ -1,6 +1,6 @@
=======================
***********************
OpenRocket Architecture
=======================
***********************
This section describes the high-level architecture of OpenRocket, the important modules and their interactions, and the technology stack.
It is intended for developers who want to understand the structure of the code and how it works.
@ -12,7 +12,7 @@ It is intended for developers who want to understand the structure of the code a
----
Introduction
------------
============
OpenRocket is a Java application that runs on the desktop. It is built using the Swing GUI toolkit. The choice of Java
was originally made because it is a platform-independent language, making it possible to run OpenRocket on Windows, macOS, and Linux.
@ -26,7 +26,7 @@ released under the GNU GPL. This ensures that the code remains open and free for
sell it as a proprietary product.
Java Platform Module System (JPMS)
--------------------------------------
==================================
OpenRocket leverages the **Java Platform Module System** (**JPMS**) to enhance modularity, encapsulation, and maintainability.
JPMS allows OpenRocket to be organized into two distinct modules, the ``core`` module and the ``swing`` module,
@ -49,45 +49,62 @@ By embracing JPMS, OpenRocket gains several advantages:
Core Module
-----------
===========
The ``core`` module contains the core functionality of OpenRocket, such as the rocket simulation engine, the file format
parsers and writers, and the rocket design classes. This module is intended to be reusable and can be used in other
applications that need rocket simulation capabilities.
Swing Module
------------
============
The ``swing`` module contains the user interface of OpenRocket. It is built using the Swing GUI toolkit and provides a graphical
interface for designing rockets, running simulations, and viewing the results. This module depends on the core module
and uses its functionality to perform the simulations and display the results.
Rocket Components
-----------------
=================
Aerodynamic Calculators and Simulators
--------------------------------------
======================================
Simulation Listeners
--------------------
====================
Component Database
------------------
==================
Thrust Curves
-------------
=============
OR uses Thrustcurves.org for its thrustcurves/motors.
Scripts
-------
=======
Plugins
-------
=======
File Format
-----------
File Format (.ork)
==================
The OpenRocket native format uses the file extension \*.ork. It is an XML format file combined with any needed graphics
files, contained in a ZIP archive. The extension \*.ork.gz is also accepted by OpenRocket, though plain .ork is recommended.
In other to view the contents of the file, you can simply rename the file extension to .zip and extract the contents.
The ``version`` attribute of the <openrocket> tag describes the file format version used, while the ``creator``
attribute *may* describe the software and version used to write the document. The file format version is increased
every time the format is changed. The minor number is increased when changes are made that are mostly backward-compatible,
meaning that older software versions should be able to read the design sans the new features. The major number is
increased when changes are made that render the design problematic or impossible to read for older software. For maximum
compatibility software should save a file in the oldest file format version that supports all the necessary design features.
For an overview of the changes between file format versions, see the `fileformat.txt <https://github.com/openrocket/openrocket/blob/unstable/fileformat.txt>`_
file in the root directory of the repository.

View File

@ -1,6 +1,6 @@
======================
**********************
Building and Releasing
======================
**********************
This guide explains the build system of OpenRocket (Gradle), and how to release a new version of OpenRocket.
@ -11,7 +11,7 @@ This guide explains the build system of OpenRocket (Gradle), and how to release
----
Gradle
------
======
`Gradle <http://www.gradle.org/>`__ is the build system for OpenRocket. It is used to compile the source code, run tests, and create the JAR file.
Key features of Gradle are:
@ -37,7 +37,7 @@ The root directory of the OpenRocket repository contains several Gradle files:
The ``core`` and ``swing`` sub-projects contain their own ``build.gradle`` and ``gradle.properties`` files that define the tasks specific to those sub-projects.
Gradle in IntelliJ
~~~~~~~~~~~~~~~~~~
------------------
If you use IntelliJ IDEA, you can access the Gradle tasks within the IDE. First, open the Gradle tool window by going to
*View -> Tool Windows -> Gradle* or by clicking on the Gradle icon in the right-hand side of the window:
@ -82,7 +82,7 @@ Here's a breakdown of the Gradle tasks:
- *Dependencies*: Lists the dependencies of the 'swing' module.
Most Important Gradle Tasks
~~~~~~~~~~~~~~~~~~~~~~~~~~~
---------------------------
Here are some of the most important Gradle tasks for OpenRocket:
@ -138,14 +138,14 @@ following command in the root directory of the OpenRocket repository:
gradlew.bat run
install4j
---------
=========
`install4j <http://www.ej-technologies.com/products/install4j/overview.html>`__ is used to create the packaged installers for OpenRocket from the JAR file.
install4j generously provides a free license for open source projects, including OpenRocket. Currently, only the OpenRocket administrators have access
to the install4j license.
Code Signing
~~~~~~~~~~~~
------------
An important part of generating the installers is `code signing <https://en.wikipedia.org/wiki/Code_signing>`__.
This is done to ensure that the installer is not tampered with between the time it is created and the time it is run by the user.
@ -165,7 +165,7 @@ be notarized. Luckily, install4j takes care of this. More information on the cod
Linux does not require code signing.
Creating the Installers
~~~~~~~~~~~~~~~~~~~~~~~
-----------------------
First you need to build the project using Gradle (see above). This will create the JAR file that will be used to create the installers.
@ -184,7 +184,7 @@ If you do not have access to the code signing certificates, you can create the i
enabling the checkboxes ``Disable code signing`` and ``Disable notarization`` in the ``Build`` tab.
Release Procedure
-----------------
=================
The release procedure for OpenRocket is as follows:
@ -192,7 +192,9 @@ The release procedure for OpenRocket is as follows:
This includes new features, bug fixes, and other changes that are part of the release. Make sure to include the version number and the release date.
Take a look at the previous release notes to see how it should be formatted.
2. **Update the version number** in ``openrocket/core/src/main/resources/build.properties`` to the correct version number.
2. Update the component database and thrustcurves by running the gradle tasks ``subModuleUpdate`` and ``serializeEnginesDist`` respectively.
3. **Update the version number** in ``openrocket/core/src/main/resources/build.properties`` to the correct version number.
For official releases, the version number should use the format ``YY.MM`` (*year.month*). For example, if the software is released in
September 2023, the version number should be ``23.09``. If there are multiple releases in the same month, add an incremental number
@ -211,11 +213,11 @@ The release procedure for OpenRocket is as follows:
For instance, if the beta testing started in September 2023 with version number ``23.09.beta.01``, the final release should have version number ``23.09``,
even if the final release is in November 2023. This is to ensure consistency in the version numbering and to link the beta release(s) to the final release.
3. **Build the project JAR file** using Gradle (see above).
4. **Build the project JAR file** using Gradle (see above).
4. **Test the JAR file** to ensure that it works correctly and that the new version number is applied to the splash screen and under *Help -> About*.
5. **Test the JAR file** to ensure that it works correctly and that the new version number is applied to the splash screen and under *Help -> About*.
5. **Create the packaged installers** using install4j (see above).
6. **Create the packaged installers** using install4j (see above).
.. warning::
Make sure to **enable code signing** for the installers.
@ -223,9 +225,9 @@ The release procedure for OpenRocket is as follows:
Make sure that `DS_Store <https://github.com/openrocket/openrocket/blob/unstable/install4j/23.09/macOS_resources/DS_Store>`__ for the macOS
installer is updated. Instructions can be found `here <https://github.com/openrocket/openrocket/blob/unstable/install4j/README.md>`__.
6. **Test the installers** to ensure that they work correctly.
7. **Test the installers** to ensure that they work correctly.
7. **Prepare the website** *(for official releases only, not for alpha, beta, or release candidate releases)*.
8. **Prepare the website** *(for official releases only, not for alpha, beta, or release candidate releases)*.
The `source code for the website <https://github.com/openrocket/openrocket.github.io>`__ needs to be updated to point to the new release.
Follow these steps:
@ -242,7 +244,7 @@ The release procedure for OpenRocket is as follows:
on the website. First update the ``development`` branch and test the changes on the website. In a later step, the
changes will be merged to the ``master`` branch.
8. **Publish the release on GitHub**.
9. **Publish the release on GitHub**.
Go to the `releases page <https://github.com/openrocket/openrocket/releases>`__. Click *Draft a new release*.
Select *Choose a tag* and enter a new tag name, following the format ``release-<version number>``, e.g. ``release-23.09``.
@ -259,13 +261,13 @@ The release procedure for OpenRocket is as follows:
Click *Publish release*.
9. **Push the changes to the website**
10. **Push the changes to the website**
First, build the ``development`` branch locally to verify that the changes that you made in step 7 are correct.
First, build the ``development`` branch locally to verify that the changes that you made in step 8 are correct.
If everything is working (test the download links, the release notes, and the What's new page), create a new PR
that merges the changes from the ``development`` branch to the ``master`` branch.
10. **Send out the release announcement**.
11. **Send out the release announcement**.
Send out the release announcement to the OpenRocket mailing list, the TRF forum, and the OpenRocket social media channels
(Discord, Facebook...).
@ -273,13 +275,13 @@ The release procedure for OpenRocket is as follows:
The announcement should include the new features, bug fixes, and other changes that are part of the new release.
Make sure to include the download links to the new release. Here is an `example announcement <https://www.rocketryforum.com/threads/announcement-openrocket-23-09-is-now-available-for-download.183186/>`__.
11. **Merge the** ``unstable``` **branch to the** ``master``` **branch**.
12. **Merge the** ``unstable``` **branch to the** ``master``` **branch**.
After the release is published, merge the changes from the `unstable <https://github.com/openrocket/openrocket>`__ branch
to the `master <https://github.com/openrocket/openrocket/tree/master>`__ branch.
12. **Upload the new release to** `SourceForge <https://sourceforge.net/projects/openrocket/>`__.
13. **Upload the new release to** `SourceForge <https://sourceforge.net/projects/openrocket/>`__.
The downloads page on SourceForge is still very actively used, so be sure to upload the new release there as well.
13. **Update package managers** (e.g. snap, Chocolatey, Homebrew) with the new release.
14. **Update package managers** (e.g. snap, Chocolatey, Homebrew) with the new release.

View File

@ -1,17 +1,17 @@
====================
********************
Codebase Walkthrough
====================
********************
Important Modules and Packages
------------------------------
==============================
Root Directory Structure
------------------------
========================
Module Folder Structure
-----------------------
=======================
OpenRocket uses the Gradle build system, where each modules (``info.openrocket.core`` and ``info.openrocket.swing``) adheres to the following folder structure:
@ -31,7 +31,7 @@ OpenRocket uses the Gradle build system, where each modules (``info.openrocket.c
├── src-extra # Extra source code, not part of the main application (e.g. template code for an OpenRocket plugin)
Core Module
~~~~~~~~~~~
-----------
The following is an overview of the packages in the ``info.openrocket.core`` module (*openrocket/core/src/main/java/info/openrocket/core*):
@ -116,7 +116,7 @@ The following is an overview of the packages in the ``info.openrocket.core`` mod
Swing Module
~~~~~~~~~~~~
------------
The following is an overview of the packages in the ``info.openrocket.swing`` module (*openrocket/swing/src/main/java/info/openrocket/swing*):
@ -174,3 +174,22 @@ The following is an overview of the packages in the ``info.openrocket.swing`` mo
│ └── providers
└── utils
Units used in OpenRocket
========================
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 convention is also used when storing the
design in the OpenRocket format.
The only exception to this rule is angles:
- 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.
- Latitude and longitude of the launch site are represented in degrees both internally and externally.
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 ``info.openrocket.core.unit``. The ``Unit`` 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 ``UnitGroup`` describes a measurable quantity such as temperature and contains the units available for that quantity,
such as Celsius, Fahrenheit and Kelvin.

View File

@ -1,18 +1,18 @@
=================================
*********************************
Contributing to the Documentation
=================================
*********************************
This documentation is generated using `Sphinx <https://www.sphinx-doc.org/en/master/>`__. If you would like to contribute
to the documentation, you can do so by editing the reStructuredText files in the ``docs/source`` directory of the OpenRocket repo.
You can then build the documentation by first `installing Sphinx <https://www.sphinx-doc.org/en/master/usage/installation.html>`__:
.. cpde-block:: bash
.. code-block:: bash
pip install sphinx
You'll also need to install some additional sphinx dependencies:
.. cpde-block:: bash
.. code-block:: bash
pip install sphinx-rtd-theme
pip install sphinx_new_tab_link
@ -39,3 +39,43 @@ Also check out the `GitHub documentation <https://docs.github.com/en/github/coll
on how to submit a pull request. If you don't want to go through the hassle of setting up a development environment, you can also
`submit an issue <https://github.com/openrocket/openrocket/issues/new/choose>`__ with your proposed changes and we will take care of the rest,
or you can `contact us <https://openrocket.info/contact.html>`__.
Heading levels
==============
Normally, in reStructuredText, there are no heading levels assigned to certain characters as the structure is determined
from the succession of headings. However, we have set the following heading level rules for the documentation:
- \# with overline, for parts *(not really used at the moment)*
- \* with overline, for chapters
- \= for sections
- \- for subsections
- \^ for subsubsections
- \" for paragraphs
Note that the overline and underline characters must be the same length as the text they are underlining.
For example:
.. code-block:: rst
*****************************************
H1: This is a chapter (title of the page)
*****************************************
H2: This is a section
=====================
H3: This is a subsection
------------------------
H4: This is a subsubsection
^^^^^^^^^^^^^^^^^^^^^^^^^^^
H5: This is a paragraph
"""""""""""""""""""""""

View File

@ -1,4 +1,4 @@
===========================
***************************
Contributing to the Website
===========================
***************************

View File

@ -1,6 +1,6 @@
============================
****************************
Contributing to Translations
============================
****************************
OpenRocket is translated into multiple languages. If you want to help with translations, this document will guide you through the process.
@ -17,7 +17,7 @@ OpenRocket is translated into multiple languages. If you want to help with trans
TODO: add current state of translations?
How Translations Work
---------------------
=====================
OpenRocket's GUI elements do not (*should not*) display hard-coded text. Instead, they use a `Translator <https://github.com/openrocket/openrocket/blob/unstable/core/src/main/java/info/openrocket/core/l10n/Translator.java>`__
object with a certain key to look up the text to display. The Translator object is responsible for looking up the text
@ -65,7 +65,7 @@ file and return the translated text. If the key is not found in the language fil
This way, the GUI can be easily translated into different languages by simply adding a new language file with the translated text.
Modifying an Existing Translation
---------------------------------
=================================
Open the l10n file for the language you want to modify in the ``core/src/main/resources/l10n`` directory. For example, to modify
the French translation, open the ``messages_fr.properties`` file, since ``fr`` corresponds to the language code of French.
@ -75,7 +75,7 @@ When you are done, create a pull request with your changes. The maintainers will
appropriate.
Creating a New Translation
--------------------------
==========================
If you want to create a new translation for a language that is not yet supported, you can create a new language file in the
``core/src/main/resources/l10n`` directory. The file should be named ``messages_xx.properties``, where ``xx`` is the language code

View File

@ -1,6 +1,6 @@
======================
**********************
Development Guidelines
======================
**********************
In order to maintain a high level of code quality and improve the efficiency for other developers to verify your code,
we have established the following guidelines for contributing to the project.
@ -12,7 +12,7 @@ we have established the following guidelines for contributing to the project.
----
Coding Standards
----------------
================
Where possible, write unit tests for your code (see :doc:`Testing and Debugging </dev_guide/testing_and_debugging>`).
This will help to ensure that your code is correct, and will help to prevent regressions in the future.
@ -30,4 +30,4 @@ issue #123, then format your commit message like this: "[#123] Fix bug". This ma
associated with which issues.
Pull Request Process
--------------------
====================

View File

@ -1,6 +1,6 @@
====================
********************
Development Overview
====================
********************
Welcome to the OpenRocket Development Guide! This documentation is designed for developers interested in contributing to OpenRocket.
@ -9,7 +9,7 @@ use the links below to navigate to different sections of this development guide.
of OpenRocket, such as the aerodynamic calculations, refer to the `Technical documentation <https://openrocket.info/documentation.html>`__.
Code structure
--------------
==============
OpenRocket is a Java application organized using the Java Platform Module System (JPMS) and built with `Gradle <https://gradle.org/>`__.
The code is organized in the following two packages:
@ -22,7 +22,8 @@ The code is organized in the following two packages:
This package contains the classes that create the user interface. OpenRocket uses the Java Swing library for the GUI.
Further Reading
---------------
===============
Explore the following sections to learn more about OpenRocket's development:
- :doc:`Development Environment Setup </dev_guide/development_setup>`

View File

@ -1,6 +1,6 @@
=============================
*****************************
Development Environment Setup
=============================
*****************************
This guide will walk you through setting up the development environment to build OpenRocket from the source code.
@ -11,7 +11,7 @@ This guide will walk you through setting up the development environment to build
----
Prerequisites
-------------
=============
- `JDK 17 <https://www.oracle.com/java/technologies/javase/jdk17-archive-downloads.html>`__. OpenRocket is developed using Java 17,
so you will need to install it to build and run OpenRocket. If you have multiple versions of Java installed, ensure that
@ -26,7 +26,7 @@ Prerequisites
- `Gradle <https://gradle.org/install/>`__. OpenRocket uses Gradle as its build system. You will need to install Gradle to build OpenRocket.
Obtaining the Source Code
-------------------------
=========================
The source code for OpenRocket is hosted on `GitHub <https://github.com/openrocket/openrocket>`__. However, you cannot change
this code directly. This is because the OpenRocket repository is the official repository for the project, and only the project
@ -35,7 +35,7 @@ Instead, you must fork the OpenRocket repository, which creates a personal copy
You can then submit a pull request to the OpenRocket repository to propose your changes.
Forking the Repository
~~~~~~~~~~~~~~~~~~~~~~
----------------------
The first step is to fork the OpenRocket repository. As mentioned earlier, the OpenRocket repository is the official repository
for the project, and only the project maintainers can make changes to it.
@ -63,7 +63,7 @@ You can always retrieve your forked repository under your GitHub account, under
with your actual username).
Cloning the Repository
~~~~~~~~~~~~~~~~~~~~~~
----------------------
Now that you have forked the OpenRocket repository, you can clone it to your local machine. To do this, open a terminal
and run the following command (replace ``[YOUR USERNAME]`` with your GitHub username):
@ -88,7 +88,7 @@ To initialize the submodules, run the following commands:
Keeping your Fork in Sync
~~~~~~~~~~~~~~~~~~~~~~~~~
-------------------------
Once you have forked the OpenRocket repository, you will need to keep your fork in sync with the official repository. This is because
the official repository may have changes that are not in your fork, and you will want to keep your fork up-to-date with the latest changes.
@ -135,12 +135,12 @@ You can do this by running the following commands:
git fetch && git pull
Setting Up the Development Environment
--------------------------------------
======================================
This section will guide you through setting up the development environment to build OpenRocket from the source code.
IntelliJ IDEA
~~~~~~~~~~~~~
-------------
`IntelliJ IDEA <https://www.jetbrains.com/idea/>`__ is a popular Java IDE that is used by many developers. It has a lot of
features that make it easier to develop Java applications. We **highly** recommend using IntelliJ IDEA for developing
@ -222,7 +222,7 @@ Once you have downloaded and installed IntelliJ IDEA, you can open the OpenRocke
6. **That's it!** You can now start developing OpenRocket. 🚀
Command Line Interface
~~~~~~~~~~~~~~~~~~~~~~
----------------------
It is also possible to develop in a text editor and build OpenRocket from the command line using Gradle. Please refer to the :doc:`Building and Releasing </dev_guide/building_releasing>`
section for all the possible Gradle tasks. To run OpenRocket, you can use:
@ -232,7 +232,7 @@ section for all the possible Gradle tasks. To run OpenRocket, you can use:
./gradlew run
Troubleshooting
---------------
===============
1. **JDK Not Recognized**
Ensure that the JDK path is correctly configured in *File -> Project Structure -> SDKs*.

View File

@ -1,4 +1,4 @@
=======================
***********************
FAQ and Troubleshooting
=======================
***********************

View File

@ -1,11 +1,11 @@
=====================
*********************
Testing and Debugging
=====================
*********************
Unit Testing
------------
============
Debugging
---------
=========
IDE debugger, print statements, in-program debug log, debug command line argument...

Binary file not shown.

After

Width:  |  Height:  |  Size: 229 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 355 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

View File

@ -1,8 +1,3 @@
.. OpenRocket documentation master file, created by
sphinx-quickstart on Tue Jan 2 22:06:21 2024.
You can adapt this file completely to your liking, but it should at least
contain the root `toctree` directive.
Welcome to OpenRocket's documentation!
======================================
@ -33,6 +28,7 @@ Welcome to OpenRocket's documentation!
:caption: User Guide
user_guide/basic_rocket_design
user_guide/basic_flight_simulation
user_guide/thrust_curves
.. toctree::

View File

@ -1,2 +1,3 @@
**************************
Frequently Asked Questions
==========================
**************************

View File

@ -1,4 +1,5 @@
**********
Contribute
==========
**********

View File

@ -1,11 +1,12 @@
********
Features
========
********
Current features (as of OpenRocket 23.09):
------------------------------------------
==========================================
General
~~~~~~~
-------
* Fully cross-platform, written in Java
@ -20,7 +21,7 @@ General
* Extensible with custom simulation listeners, expressions, and plugins
User Interface
~~~~~~~~~~~~~~
--------------
* **Intuitive user interface**
@ -31,7 +32,7 @@ User Interface
* Zoomable schematic view of rocket from the side or rear, with rotation around the center axis
Design
~~~~~~
------
* A multitude of available components to choose from
@ -48,7 +49,7 @@ Design
* Ability to **override mass, CG and CD** of components or stages separately
Simulation and Analysis
~~~~~~~~~~~~~~~~~~~~~~~
-----------------------
* Full **six degree of freedom** simulation
@ -71,7 +72,7 @@ Simulation and Analysis
<hr />
Planned Future Features
-----------------------
=======================
.. note::
OpenRocket is under constant work in the free time of the developers. If you want to **help improve it**, please refer to the :doc:`Contribute page </introduction/contribute>`.
@ -103,7 +104,7 @@ For a full overview of the planned features, please refer to the `GitHub issue t
<hr />
Comparison to RockSim
-----------------------
=====================
`RockSim <https://www.apogeerockets.com/Rocket_Software/RockSim>`__ is a very powerful, commercial rocket design and simulation program.
It is more advanced than OpenRocket in some regards, but its price tag of $124 makes it inaccessible to many hobbyists.
@ -114,7 +115,7 @@ While hosted on the OpenRocket documentation, we have attempted to make this an
of the two software products. If you think something is wrong or omitted, please `contact us <https://openrocket.info/contact.html>`__.
General
~~~~~~~
-------
.. list-table:: OpenRocket vs. RockSim: General
:widths: 20 20 20
@ -170,7 +171,7 @@ General
| `PACE <http://www.paceap.com/>`__
UI Features
~~~~~~~~~~~
-----------
.. list-table:: OpenRocket vs. RockSim: UI Features
:widths: 20 20 20
@ -244,7 +245,7 @@ UI Features
| No
Design Features
~~~~~~~~~~~~~~~
---------------
.. list-table:: OpenRocket vs. RockSim: Design Features
:widths: 20 20 20
@ -363,7 +364,7 @@ Design Features
| Yes, 3 stages
Simulation Features
~~~~~~~~~~~~~~~~~~~
-------------------
.. list-table:: OpenRocket vs. RockSim: Simulation Features
:widths: 20 20 20
@ -437,7 +438,7 @@ Simulation Features
| No
Optimization and Analysis
~~~~~~~~~~~~~~~~~~~~~~~~~
-------------------------
.. list-table:: OpenRocket vs. RockSim: Optimization and Analysis
:widths: 20 20 20
@ -493,7 +494,7 @@ Optimization and Analysis
| No
Printing
~~~~~~~~
--------
.. list-table:: OpenRocket vs. RockSim: Printing
:widths: 20 20 20

View File

@ -1,8 +1,9 @@
********
Overview
========
********
What is OpenRocket?
-------------------
===================
.. figure:: /img/openrocket_logo_256.png
:figclass: or-figclass
@ -39,7 +40,7 @@ The program can be roughly divided into two sections:
For more information about OpenRocket's features and a few screenshots you can have a look `here <https://openrocket.info/features.html>`__.
How this Documentation is Organized
-----------------------------------
===================================
.. warning::
This documentation is still a work in progress, so **some sections may be incomplete**. If you want to help us improve it, please refer to the :doc:`Contribute section </introduction/contribute>`.

View File

@ -1,3 +1,4 @@
***************
Getting Started
===============
***************

View File

@ -1,5 +1,6 @@
*************************
Installation Instructions
=========================
*************************
.. contents:: Table of Contents
:depth: 1
@ -7,7 +8,7 @@ Installation Instructions
:backlinks: none
Introduction
------------
============
OpenRocket is released in two forms: as a *packaged application* and as a *JAR file*.
**The easiest way to get OpenRocket up and running is to download and install one of the packaged installers.**
@ -21,12 +22,12 @@ Download the latest version from `our downloads page <https://openrocket.info/do
<hr>
Pre-Installation Procedures
---------------------------
===========================
Some users may experience problems with the OpenRocket installation if they don't follow the pre-installation procedures below.
Close All Instances of OpenRocket
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
---------------------------------
If you have OpenRocket running, close it before installing a new version. By default, new OpenRocket releases
install to the same location on your device; these releases even share preferences. Because of this, if OpenRocket is
@ -36,7 +37,7 @@ OpenRocket to function correctly.
Before installing an update, you *MUST* close all open instances of OpenRocket.
(Optional) Uninstall Prior OpenRocket Releases
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
----------------------------------------------
As described above, by default, new releases of OpenRocket install to the same location on your device.
Although **not expressly required**, it is suggested that all previously installed OpenRocket releases be uninstalled
@ -47,7 +48,7 @@ before installing the updated release. This is *not required*, but is suggested
<hr>
Installing OpenRocket 🚀
------------------------
========================
**Download the latest version from `our downloads page** <https://openrocket.info/downloads.html?vers=latest>`__.
Scroll down to download the correct installer for your platform (Windows, macOS, or Linux).
@ -60,13 +61,13 @@ platform's download button to see the installation instructions.
<hr>
After-Installation Checks
-------------------------
=========================
After installing OpenRocket, you need to verify that the installation was successful and potentially modify some settings
to ensure that OpenRocket functions correctly.
Verify the Installed Release Number
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-----------------------------------
First, verify that you actually installed the current release of OpenRocket. You can see this in the splash screen, which
appears when you start OpenRocket. The splash screen will show the release number on the right:
@ -87,14 +88,14 @@ and select ``About``. This will open a dialog box that shows the release number:
.. figure:: /img/introduction/about_dialog.png
:alt: OpenRocket About Dialog
:figclass: or-figclass
:figclass: or-figclass, or-image-border
:figwidth: 40 %
:align: center
The OpenRocket About Dialog (``Help````About``) shows the release number.
Check the Settings
~~~~~~~~~~~~~~~~~~
------------------
For most users, OpenRocket's default settings will work fine. However, some users may need to change some settings.
@ -107,7 +108,7 @@ what the problem looks like:
.. figure:: /img/introduction/off_screen_rendering_wrong.png
:alt: Wrong 3D View of Three-stage Rocket
:figclass: or-figclass
:figclass: or-figclass, or-image-border
:figwidth: 75 %
:align: center
@ -120,7 +121,7 @@ of the page change the ``Use off-screen rendering`` setting:
.. figure:: /img/introduction/off_screen_rendering_setting.png
:alt: Off-screen Rendering Setting
:figclass: or-figclass
:figclass: or-figclass, or-image-border
:figwidth: 50 %
:align: center
@ -130,7 +131,7 @@ Your 3D view should now look like this:
.. figure:: /img/introduction/off_screen_rendering_right.png
:alt: Correct 3D View of Three-stage Rocket
:figclass: or-figclass
:figclass: or-figclass, or-image-border
:figwidth: 75 %
:align: center
@ -178,7 +179,7 @@ and change the ``User-defined thrust curves`` setting:
.. figure:: /img/introduction/thrust_curves_setting.png
:alt: Thrust Curves Setting
:figclass: or-figclass
:figclass: or-figclass, or-image-border
:figwidth: 50 %
:align: center
@ -188,7 +189,7 @@ You can also add multiple thrust curve folders. To do this, click on the ``Add``
You can also manually enter a new folder path. This path must be separated from other paths by a semicolon (``;``).
Troubleshooting
---------------
===============
When you have issues with your installation, ensure that you have **read the installation instructions** for your platform.
When you download the installer from our `downloads page <https://openrocket.info/downloads.html?vers=latest>`__, you can
@ -198,6 +199,6 @@ installation instructions.
If you have further issues, please `contact us <https://openrocket.info/contact.html>`__.
Uninstalling
------------
============
``TODO``

View File

@ -0,0 +1,4 @@
***********************
Basic Flight Simulation
***********************

View File

@ -1,5 +1,6 @@
*******************
Basic Rocket Design
===================
*******************
In this section we'll look at how to design a basic rocket by examining the A simple model rocket design example.
After reading this section you should have an understanding of how to start designing your own rockets.
@ -13,9 +14,8 @@ Then we'll build a rocket from scratch to see how its done.
:local:
:backlinks: none
Component Configuration Window
------------------------------
==============================
There are several types of components available to you as a rocket designer, and you can either customize them to meet
your needs, or simply load component presets from the parts library.
@ -26,6 +26,7 @@ and save the design straight away: ``File`` -> ``Save``. At this point you shoul
.. figure:: /img/user_guide/basic_rocket_design/main_window.png
:align: center
:width: 70%
:figclass: or-image-border
:alt: The OpenRocket rocket design window.
The OpenRocket rocket design window.
@ -45,22 +46,562 @@ We would usually start building our rocket by selecting a nose cone but for the
``Body tube`` icon in the ``Body Components and Fin Sets`` section. This will then open up a configuration window
to edit the body tube parameters.
The Body Tube Configuration Window
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
The Body Tube Configuration Window
----------------------------------
At this point you should see a new window titled ``Body tube configuration``.
.. figure:: /img/user_guide/basic_rocket_design/body_tube_config.png
:align: center
:width: 60%
:figclass: or-image-border
:alt: The Body Tube configuration window.
The Body Tube configuration window.
This window allows you to either select a preset for the component type you are choosing, or make your own. Lets start by examining how to customize it ourselves. If you have a look at the Body tube configuration window you will see that at the top there is a Component name field. Here we can change the name of the current component to anything we choose. (Note that this name will then appear in the design tree seen in the Rocket Design panel of the main program window.)
This window allows you to either select a preset for the component type you are choosing, or make your own. Lets start
by examining how to customize it ourselves. If you have a look at the Body tube configuration window you will see that
at the top there is a Component name field. Here we can change the name of the current component to anything we choose.
(Note that this name will then appear in the design tree seen in the Rocket Design panel of the main program window.)
Just below Component name there are several tabs:
- **General:** allows us to alter the basic attributes of the component.
- **Motor:** allows us to make the body tube into a motor mount, and also edit the properties of the motor.
- **Override:** allows us to manually set the mass or centre of gravity for the component.
- **Appearance:** allows us to select colours, textures and other finishes.
- **Comment:** allows us to enter any comments or notes about the component.
It should be noted that these tabs are specific to the component being designed. For example, a *nose cone* will not have
a *motor* tab, but will instead have a **shoulder** tab. It will also have a description panel to tell you a bit more
about the component you are choosing. After you learn how to navigate around one component *configuration panel*,
the others should be relatively self-explanatory.
General Tab
^^^^^^^^^^^
The rest of the *Body tube configuration* window lists the different parameters for the current component type. As you
can see, the *General* tab provides options to manually enter numbers, or you can also use the spin boxes (coarse control)
or sliders (fine control) provided to adjust the parameter values. The **Automatic** checkbox will adjust the dimensions
of the component automatically. Here you will also see a **Filled** checkbox. If this is checked you will notice that
the inner diameter goes to zero, i.e., a filled (solid) tube. Note how the Component mass changes when this box is checked.
On the right hand side of the window you will see the **Component material** and **Component finish** drop-down menus.
If you click on these you will be presented with a list of various materials and finishes, each with their own weight and
thickness. If you are using the same finish for the entire rocket you can click the **Set for all** button to make each
component use the same finish. The last notable feature in this window is in the bottom left. There you will see a live
display of the **Component mass**. This will update automatically as you change parameter values. Experiment with the
sliders to see how the component changes in the *design window*.
You may have noticed that, apart from the mass, there is no noticeable difference when either the *inner diameter* or
*wall thickness* parameters are changed. To see those changes reflected in the model you will have to switch to a
different *View Type*, by selecting the desired view from the drop-down list at the left of the main OpenRocket
program window.
Motor Tab
^^^^^^^^^
Next to the General tab is the **Motor** tab. If you click on it you will see that most parameters are grayed-out, with
the exception of one checkbox. As the label mentions, this is for when you want the body tube component to also be a
**motor mount**.
.. figure:: /img/user_guide/basic_rocket_design/03.Motor_tube_tab.png
:width: 70%
:align: center
:figclass: or-image-border
:alt: The Motor tab of the Configuration Window
The *Motor tab* of the Configuration Window.
Have a quick look at this if you wish, but we'll discuss changing *flight configurations* for a later section of the guide.
Override
^^^^^^^^
We'll take a quick look at this tab, as it common to most components. For starting out though, you most likely will not need it.
.. figure:: /img/user_guide/basic_rocket_design/04.Body_tube_override_tab.png
:width: 70%
:align: center
:figclass: or-image-border
:alt: The Override tab of the Configuration Window
The *Override tab* of the Configuration Window.
This tab would be used when you specifically wanted to override the mass and centre of gravity (CG) of the component.
Appearance
^^^^^^^^^^
Everyone likes something shiny, dont they? This tab allows you edit the appearance of the component.
.. figure:: /img/user_guide/basic_rocket_design/05.Body_tube_appearance_tab.png
:width: 70%
:align: center
:figclass: or-image-border
:alt: The Appearance tab of the Configuration Window
The *Appearance tab* of the Configuration Window.
There are two sections here, the **Figure style** section and the **Appearance** section. *Figure style* changes what
the 2D figure looks like, whereas *Appearance* will change what the 3D model will look like. If you wish to use any
custom textures or images in your rocket design, you can load those through the **Texture** drop-down menu.
Comment
^^^^^^^
This section does not really need much explanation. If you want to write any comments or notes about your component
(why you chose the values you did, etc.), then this is the place to do it.
.. figure:: /img/user_guide/basic_rocket_design/06.Body_tube_comment_tab.png
:width: 70%
:align: center
:figclass: or-image-border
:alt: The Comment tab of the Configuration Window
The *Comment tab* of the Configuration Window.
Now that we have been through all of the tabs of the *Body Tube* component, click the Close button. You should now
notice that the rest of the components are now unlocked in the top right of the *Design window*. This is because all
component types can be added to a body tube. However, a **Nose cone** should be selected **first** if you are making
your own rocket.
Lets have a look at the full list of components. If you cannot click on the component type, try selecting the
*Body tube* in the design window in the top left panel of OpenRocket.
Available Design Elements
=========================
As previously mentioned, there are 4 categories to choose components from within OpenRocket. These are split into
four sections:
- **Assembly Components**
- **Body Components and Fin Sets**
- **Inner Components**
- **Mass Components**
.. figure:: /img/user_guide/basic_rocket_design/07.Component_menu.png
:width: 90%
:align: center
:figclass: or-image-border
:alt: The Component types menu
The *Component types* menu.
Assembly Components
-------------------
Although called components, Assembly Components are NOT physical parts. Rather, an Assembly Component is an attachment
point on which the framework of the rocket is built (an Assembly Component is a container for physical parts), and each
type has features unique to that attachment type. These framework elements are intended to contain physical components,
and should NOT be left empty. As you will see in the image, the framework types are:
- **Stage**: Every rocket has at least one stage, which is the basic framework element to which the rocket's physical
components are attached. A Stage may be renamed, and has override and comment tabs. A stage should NOT be used if empty.
- **Boosters**: A booster is a framework element to which physical components are attached, and may be used to build
separate pieces of the rocket, such as a glider. Boosters may ONLY be attached to a body tube, and CAN separate during
flight from the stage to which a booster is associated. Boosters may be renamed, and have separation, general, override,
and comment tabs. A booster should NOT be used if empty.
- **Pods**: A pod is a framework element to which physical components are attached, and may be used to build connected
pieces of the rocket that are adjacent to the main airframe, such as side motors. Pods may ONLY be attached to a body
tube, and CANNOT separate from the stage to which a pod is associated. Pods may be renamed, and have general, override,
and comment tabs. A pod should NOT be used if empty.
.. figure:: /img/user_guide/basic_rocket_design/08.Assembly_Components_Icons.png
:width: 50%
:align: center
:figclass: or-image-border
:alt: The Assembly Components submenu
The *Assembly Components* submenu.
Body Components and Fin Sets
----------------------------
Within *Body Components and Fin Sets* we have 8 component types. These components make up the external and main body of
the rocket; everything else is inside the rocket. As you will see in the image the component types are:
- **Nose Cone**: The very tip of the rocket. Usually, you will select this component first.
- **Body Tube**: As we have seen, the body tube makes up the main section of a stage.
- **Transition**: A component that usually joins one body tube to another (normally larger) tube.
- **Trapezoidal** fin: A fin set that is in the shape of a trapezoid.
- **Elliptical** fin: A fin set that is in the shape of an ellipse.
- **Freeform** fin: This special kind of fin takes any shape you want. If you add it to your model it will open up a
design window for you to alter the shape as desired.
- **Tube Fins** Special fins, typically made from body tubes attached to the outside of the rocket body.
- **Launch Lug**: This component usually goes on the outside of a body tube and is used while the rocket is on the launch pad.
.. figure:: /img/user_guide/basic_rocket_design/ComponentBodyAndFins.png
:width: 95%
:align: center
:figclass: or-image-border
:alt: The Body Components and Fin Sets submenu
The *Body Components and Fin Sets* submenu.
Inner Components
----------------
Within *Inner Components* we have 5 component types, and these components are all internal. As with *Body components
and fin sets* we will now run through the list of components.
- **Inner tube**: This component lets you add tubes to the inside of the main body tube.
- **Coupler**: Used in multi-stage rockets, a coupler joins two sections together.
- **Centering ring**: These can be used to support other components (e.g., a motor), in the centre of a larger tube.
- **Bulkhead**: This is a block of material that forms a stop or barrier between two different areas.
- **Engine block**: An engine block prevents the motor from moving forward in the motor mount tube.
.. figure:: /img/user_guide/basic_rocket_design/ComponentInner.png
:width: 65%
:align: center
:figclass: or-image-border
:alt: The Inner Components submenu
The *Inner Components* submenu.
Mass Components
---------------
Within *Mass Components* we have 4 component types. They are:
- **Parachute**: Like any good parachute, this component will stop your rocket from becoming scrap.
- **Streamer**: Another component for keeping your rocket safe, a streamer creates drag as your rocket falls down to earth.
- **Shock Cord**: A shock cord secures the nose cone to the body of the rocket so that it isn't lost when the nose is
blown off to deploy the parachute/streamer.
- **Mass Component**: This is a block of mass used to adjust the rocket's Center of Gravity (CG). You can name it to
whatever you want it to represent.
.. figure:: /img/user_guide/basic_rocket_design/ComponentMasses.png
:width: 50%
:align: center
:figclass: or-image-border
:alt: The Mass Components submenu
The *Mass Components* submenu.
You have now had a brief run through the various components available for use in OpenRocket. The next section will deal with an example rocket.
*A Simple Model Rocket* Example
===============================
In this section we will look at the components used in the *A simple model rocket* example design. To get started, start
OpenRocket and navigate to the main window. As a reminder it looks like this:
.. figure:: /img/user_guide/basic_rocket_design/Main_window.png
:width: 95%
:align: center
:figclass: or-image-border
:alt: The OpenRocket main window
The OpenRocket *main window*.
Opening Example Designs
-----------------------
We'll begin by looking at how to find and load the example rockets within OpenRocket. Recall that this was also covered
in the *Getting Started* section of this guide, but as a refresher the steps for doing this are as follows:
- In the main window, click on the **File** menu at the top left.
- Scroll down to **Open Examples...** open, and expand that menu. Here you will see a list of the available rocket design examples.
Your screen should now look like this:
.. figure:: /img/user_guide/basic_rocket_design/OpenExample.png
:width: 95%
:align: center
:figclass: or-image-border
:alt: Opening an example rocket
Opening an *example rocket*
Click on first example, our **A simple model rocket**. A *Rocket configuration* window should appear, with the *Design Name*
(A simple model Rocket) and *Designer* (Sampo Niskanen) fields populated. The *Comments* and *Revision History* fields
will be blank. Click **Close**. You should now have successfully loaded the rocket and be able to see a 2D schematic
in the *Rocket Design* window.
.. figure:: /img/user_guide/basic_rocket_design/After_complete_design.png
:width: 95%
:align: center
:figclass: or-image-border
:alt: Bottom half of the Rocket design window
Bottom half of the *Rocket design* window.
Components used in *A simple model rocket*
------------------------------------------
Now we will have a quick look through the components used in the example rocket. If you look towards the top left of
the **Rocket Design** window you will see that there is a tree of components shown. By default they should all be fully
expanded. If not, do so now.
.. figure:: /img/user_guide/basic_rocket_design/Structure.png
:width: 50%
:align: center
:figclass: or-image-border
:alt: Top left-hand portion of the Rocket design window
Top left-hand portion of the *Rocket design* window.
This image shows *A simple model rocket* at the top, followed by the **Sustainer**, which is *Stage 1* of the rocket.
If we look at the first component in the *Sustainer* stage we see that it is the nose cone. Double click on that now.
This will bring up the *Nose cone configuration* window.
.. figure:: /img/user_guide/basic_rocket_design/ConfigNose.png
:width: 80%
:align: center
:figclass: or-image-border
:alt: Nose Cone Configuration Window
Nose Cone Configuration Window.
As we have already examined the *configuration window* we will not repeat ourselves here. However, you will see that in
this example we have used an **Ogive** nose cone with a *Shape parameter* of 1.0. If you read the description of the
component to the right in the configuration window, you will discover that a value of 1.0 produces a **tangent ogive**.
Moving down the window, you will see that the **Nose cone length** has a value of 10, the **Base diameter** has a value
of 2.5, and the **Wall thickness** has a value of 0.2. All of these parameters have been set, in this example, to use
centimeters (**cm**) as their unit. You should also see that this component is using **Polystyrene** as its material
with a **Regular paint** finish. As you can see, the material has a density of 1.05 grams per centimeter cubed, and the
paint is 60.0 micrometers thick. In the bottom left, the component *weight* is currently 13.2 grams. Go ahead and play
around with the sliders to see how the component changes, and then change them back when you are finished.
If you move over to the *Shoulder* tab, you'll be able to see the size attributes of the shoulder. Again, you can play
around with the sliders if you want--as long as you change them back to the original settings when you are finished.
For reference these are **2.3, 2.0** and **0.2** centimeters, respectively. Also have a look through the rest of the
tabs to see what has been selected. The only other thing to note is that the appearance has been customized. If you
were to change to the **3D Finished** view type, you will see how the finished model looks.
Moving on to the *Body tube*, you can access its various attributes by double-clicking on it in the *Rocket design* window.
Note how its various attributes have been set to create the current size. This is all fairly straightforward and as we
have already looked into the various components earlier, we will not go into great detail here.
Note the eight other components that have been placed onto the *Body tube*. In descending order these are:
- **Trapezoidal fin set**
- **Inner Tube**
- **Centering Ring**
- **Centering Ring**
- **Shock Cord**
- **Parachute**
- **Wadding**
- **Launch lug**
The *Inner Tube* in this design is used as a motor mount. You will see this if you go to the **Motor** tab in the
*Inner Tube configuration* window. This means that a motor has been fitting into this piece. Upon inspection we can
see that the current motor name is displayed in the **Flight configuration** drop-down list, on the right side of the
main OpenRocket window. You can open this drop-down menu to select other motors that are available for use in this
simulation, as well as the other example simulations that you will see on the *Flight simulation* tab.
The ninth component is place inside the *inner tube*. This is the engine block. If you look at the schematic of the
rocket you will see that this is placed in front of the grey rectangle, which is the motor. To quickly address some of
the other components, you will note that the recovery method used in this rocket is a *Parachute*: the red dashed
rounded-rectangle near the nose cone of the rocket. Along with the parachute we have a *Shock cord*, which (as was
discussed earlier) prevents loss of the nose cone upon deployment of the recovery system. This is shown as a long, black,
dashed rounded-rectangle in the same general area as the parachute. The other black, dashed rounded-rectangle box is the
*Wadding*, which is a mass component and is used here to bring the centre of gravity forward towards the nose.
We have now looked through the components used within the simple model rocket example. If you would like to see other
available components, see **Appendix A**. Now that we are familiar with what makes up the rocket we will go ahead and
build one from scratch!
Building *A simple model rocket*
================================
In this section we will build up the example model from scratch. After you have completed this process, you should be
able to apply what you've learned in order to make any basic rocket you want. So lets begin...
Open a new project window so that everything is blank. The following are the steps that you will follow to create the rocket.
1. **Select the nose cone**. Change its type to **Ogive**, if that isn't already selected. Make sure that *Shape parameter*,
*Nose cone length*, *base diameter*, and *Wall thickness* values are set to **1.0**, **10.0**, **2.5** and **0.2**, respectively.
The units are centimeters by default, so we should not need to change these. Finally, change the *Component material* to **Polystyrene**.
2. Next, while still in the *Nose cone configuration* window, move to the *Shoulder* tab. Change the diameter to **2.3**, the length to **2.0**, and the thickness to **0.2**. Also, check the **End capped** box.
3. The last thing we have to do with the nose cone is to change its *Appearance*, so switch to that tab now. Leave the *Figure style* section unchanged but under the *Appearance* section, change the colour to one lighter than black. (Or to whatever you want, go crazy!) Then adjust the shine to 50%. That is all we need to change for now.
You should now see this in the view area at the bottom of the main OpenRocket window:
.. figure:: /img/user_guide/basic_rocket_design/NoseComplete.png
:width: 80%
:align: center
:figclass: or-image-border
:alt: Nose Cone
Nose Cone
4. Next, add the *Body tube*. The measurements for *length*, *outer diameter*, *inner diameter*, and *wall thickness*
are **30.0**, **2.5**, **2.3**, **0.1**, respectively. Note that it may be easier to enter the last two manually rather
than use the spin boxes or sliders. Leave the **Automatic** and **Filled** boxes unchecked. The material should remain
**Cardboard** and the finish should be **Regular Paint**. The only other thing you should change here is the appearance,
but we'll leave that to you as an exercise.
You should now have this:
.. figure:: /img/user_guide/basic_rocket_design/BodyComplete.png
:width: 90%
:align: center
:figclass: or-image-border
:alt: Nose Cone and Body
Nose Cone and Body
5. Moving on, we next need to add a **Fin set**. Make sure you have clicked on the *Body tube* so that its highlighted
then click on the **Trapezoidal** component type. The *Trapezoidal fin set configuration* window will have appeared.
Leave the left side of the window alone: the settings there are fine as-is. However, we will need to change some things
on the right hand side. First, change the *Fin cross section* to **Rounded**. Also, reduce the *Thickness* to **0.2**.
Thats all we need to do in this tab. Now move to the *Appearance* tab and customize to your preference.
.. figure:: /img/user_guide/basic_rocket_design/FinsComplete.png
:width: 90%
:align: center
:figclass: or-image-border
:alt: Nose Cone, Body, and Fins
Nose Cone, Body, and Fins
6. The next component we need to add is the **Inner tube**. Once again highlight the body tube and then click on the
*Inner tube* component button. There are a couple of attributes we should change here. First, increase the *Length* value
to **7.5**. Also, increase the *Plus* value to **0.5**. Leave everything else the same.
Now go to the *Motor* tab. There are a few things we need to add here. To start, check the *This component is a motor mount*
checkbox. This will allow us to add motors. The next few steps may seem complicated but do not be daunted by them. First,
we will deal with the easy part: Increase the *Motor overhang* to **0.3**. Now click *Close* button to close the
*Inner Tube configuration* window.
.. _motorconfig:
Now click on the **Motors & Configuration** tab towards the left upper corner of the main OpenRocket window, just under
the menu bar. On the resulting page, note the *Motors* tab towards the left upper corner. Make sure the *Inner T...* box
is checked, and then click on the *New Configuration* button in the top center portion of the upper panel. You should see
that a new configuration has been added to the list of configuration.
.. figure:: /img/user_guide/basic_rocket_design/MotorConfigs.png
:width: 95%
:align: center
:figclass: or-image-border
:alt: Motors & Configurations window
Motors & Configurations window
Left-click in the *Inner Tube* column, and then click the **Select motor** button just below the open panel on the right
of the screen. The *Select a rocket motor* window now appears:
.. figure:: /img/user_guide/basic_rocket_design/MotorSelection.png
:width: 95%
:align: center
:figclass: or-image-border
:alt: Motor Selection window
Motor Selection window
To make sure your window looks the same as the one above, follow these steps:
- Make sure the *Filter Motors* tab is selected in the top right corner of the window.
- Click "Clear All", then select only the **Estes** option in the *Manufacturer* list.
- Make sure that the *Total Impulse* slider is positioned over **A** (all the way to the left).
- Check both the "Limit motor diameter to mount diameter" and "Limit motor length to mount length" boxes.
- Look for the **A8** motor in list on the left side of the window. Click on it.
- In the *Ejection charge delay* field at the top left, enter the value **3**.
Now click the *OK* button at the lower right corner of the window.
If everything went to plan, you have successfully added the **Estes A8-3** motor to your rocket. Now repeat these steps
for the following motors, using a *New Configuration* for each new motor you add:
- **Estes B6-4**
- **Estes C6-3**
- **Estes C6-5**
- **Estes C6-7**
After you have added the rest of the motors, click back on the *Rocket design* tab just under the main menu.
7. The next component we will add is the **Engine Block**. This time make sure that the *Inner tube* is highlighted and
then add an engine block component. Change the *Inner diameter* to **1.2** and the *Wall thickness* to **0.3**. Also,
change the *Position relative to:* **Top of the parent component**. The last change we will make is to increase *plus*
to **0.2**. That is all we have to do for this component.
Your rocket should now look like this:
.. figure:: /img/user_guide/basic_rocket_design/EngineBlockCompleted.png
:width: 90%
:align: center
:figclass: or-image-border
:alt: Added the Engine Block
Added the Engine Block
8. We will now add two **Centering Rings**. Make sure the *Body tube* is highlighted in the list of components under
*Rocket design*, then click on the *Centering ring* component type. The first one is fine as-is, so we will not make
any changes. However, we will add the following line under the *Comment* tab: **The centering ring automatically takes
the outer diameter of the body tube and the inner diameter of the inner tube.**
Now click *Close*, select the body tube again and add another *Centering ring*. This time all we have to do is to change
*plus* to **-4.5**. Also, add the same comment as for the first ring.
.. figure:: /img/user_guide/basic_rocket_design/CenteringRings.png
:width: 90%
:align: center
:figclass: or-image-border
:alt: Added Centering Rings
Added Centering Rings
9. The next component we will add is the **Shock cord**. As usual, make sure the *Body tube* is selected before adding
the shock cord component. After it has been added change the *Plus* value to **2**, *Packed length* to **5.2**, and
*Packed diameter* to **1.2**. Again, we will add a comment to this component. Enter the following line to the *Comment*
section: **The shock cord does not need to be attached to anything in particular, as it functions only as a mass component.**.
Click the *Close* button to close the window, as the shock cord has now been completed.
.. figure:: /img/user_guide/basic_rocket_design/ShockCordComplete.png
:width: 90%
:align: center
:figclass: or-image-border
:alt: Added Shock Cord
Added Shock Cord
10. Now we need to add the **Parachute**. With the body tube highlighted, add a parachute component. Change *Plus* to
**3.2**, *Packed length* to **4.2** and *Packed diameter* to **1.8**. That is everything we need to do to the parachute.
Click *Close* to close the window. You can see what your rocket should now look like below.
.. figure:: /img/user_guide/basic_rocket_design/ParachuteAdded.png
:width: 90%
:align: center
:figclass: or-image-border
:alt: Added Parachute
Added Parachute
11. The second-to-last component to add is a **Mass Component**. Go ahead and add one to the body tube now. Adjust the
*Mass* to **2** grams (g), the *Approximate density* to **0.16** g/cm^3, the *length* to **3.0**, the *diameter* to
**2.3** and finally the *Plus* value to **8.0**. It may be easier to enter these manually. The last thing you have
to do is to rename it from Unspecified to **Wadding**. Leave everything else as it is and click the *Close* button.
.. figure:: /img/user_guide/basic_rocket_design/AddedMass.png
:width: 90%
:align: center
:figclass: or-image-border
:alt: Added Mass
Added Mass
12. Almost done! One final component left to add: the **Launch lug**. Add this to the body tube now. Change the *Length*
to **3.5**, the *Outer diameter* to **0.7**, and the *inner diameter* to **0.5**. Leave the *Thickness* as it is.
Also, change the *Radial position* to **19** degrees. Click *Close*.
.. figure:: /img/user_guide/basic_rocket_design/LaunchLugAdded.png
:width: 90%
:align: center
:figclass: or-image-border
:alt: Added Launch Lug
Added Launch Lug
And thats all there is to it. You have just completed building your first rocket within OpenRocket! From here you can
use what you know to create more rockets, or you can proceed to the next section of the User Guide:
:doc:`Basic Flight Simulation </user_guide/basic_flight_simulation>`. Have fun!

View File

@ -1,9 +1,10 @@
*************
Thrust Curves
=============
*************
.. _importing_thrust_curves:
Import Custom Thrust Curves
---------------------------
===========================
To set up the thrust curves folder(s), please see the :ref:`Thrust Curves Folder Settings <thrust_curves_setting>` section.