Science makes it known,
Engineering makes it work,
Art makes it beautiful.
Model Rockets & Boost/Gliders Programming
This site is intended for those who wish to learn more about programming
model rocket and glider systems in D, FORTRAN, Pascal, and Lazarus; also serves
as a tutorial about model rockets and gliders. This
is an ongoing project covering model rockets, boost/gliders, rocket/gliders,
lifting bodies, and Rogallo flexwing gliders. The source files available
for download are meant for building your own application and demonstrating
how to call subprograms written in multiple programming languages.
Rockets usually consist of three serial stages or less. X axis is the
longitudinal axis (or Axis of Symmetry), Y axis is the lateral or transverse
axis. Nose tip is at (0, 0). Stages are numbered from
MRmain is a Lazarus application for input/analysis of a model rocket
or parallel stage employing sub-forms. Analysis
includes calculating Center of Pressure and Drag Coefficient.
A spaceplane (or Rocket powered glider) is an air vehicle, rocket powered for lift-off,
and unpowered glide recovery. In this context, includes boost/gliders,
rocket/gliders, lifting bodies, and Rogallo flexwings (when
carried within a model rocket).
(X-15 Image from NASA Armstrong)
glider01 is a Lazarus application for input of boost/glider,
rocket/glider, lifting body, or Rogallo flexwing design, also
employing sub-forms. Gliders are resticted to single
stage (due to adapting model rocket stage arrays to store fins/wings/stabilizers
- Lifting Body related functions/procedures. Currently in development.
Both applications share units and .dll. Rockets are dimensioned
for six serial stages, gliders for six sets of fins/wings/stabilizers.
Rockets, rocket/gliders, and lifting bodies may have up to 10
body tubes / stage (including payload section) and 10
conical transitions / stage. Boost/gliders may only have a single
body tube for the engine pod. Global variable AirVhclTyp is used
to identify whether model rocket, boost/glider, rocket/glider, etc. Both
applications can save basic data to plain-text comma separated values files.
Calculating Model Rocket Coefficient of Normal Force & Center of Pressure
: mathproc.dll FORTRAN Engineering Subprograms called by Object Pascal .dll;
introduction to rocket aerodynamics & stability;
includes source file downloads - tir33.for, missle.inc, missle02.pas. missle02.pas
includes a Pascal implementation of
ELLIPSE_SEGMENT algorithm from CALCULATING ELLIPSE OVERLAP AREAS,
used for finding the surface area of a rear swept elliptical
fin/wing/stabilizer where the root chord does not pass through
the ellipse origin. Elliptical area / perimeter calculations can
be complex, involving geometric angles, parametric angles,
integrations. Both the unswept/swept elliptical fins/wings area and
perimeter calculations are approximations.
These two .dll are the heart of the system.
Multi-Stage Model Rocket User Interface
: Lazarus Tab Sheets (TPageControl & TTabSheet) tutorial; each
Tab Sheet represents a model rocket stage. Brief introduction
to Lazarus sub-forms. User interface for inputting rocket design
parameters and Calculating Model Rocket Coefficient of Normal Force
& Center of Pressure. For a stable flight, the Center of Pressure
(cp) must be aft of the Center of Gravity
(cg) by one caliber (largest body diameter).
Each stage configuration is analyzed separately.
Originally this was (and still is) a stand-alone program and the start of this
project; now also a MRmain Sub-form. One of two forms that can
be used to enter model rocket fin data.
During initial design, using a separate Tab Sheet for each
stage seemed acceptable. However that was not the case during actual
coding and maintenance.
Lazarus Body Tubes Sub-forms
: unit/form untBT10 / FrmBT10 used by MRmain
and glider01 to define body tube
(or fuselage segment) data (rocket/gliders usually have body tubes),
missle14 / FrmPayload used by MRmain to define payload section
(if any); Lazarus Sub-form, Grid Cell Background Color, StringGrid Cell Editor,
and Calling FORTRAN. Detailed introduction to Lazarus
sub-forms and TStringGrids; example of Lazarus unit calling
FORTRAN subprograms via Object Pascal .dll; includes downloads.
Body tube data required for CD
calculations. Body tubes, nose cone, and conical transition(s) (if any)
comprise the model rocket and rocket/glider fuselage. Nose cone
and conical transition(s) usually comprise lifting bodies, may include
From the diagram at right:
BC-54 is an example nose cone;
ST-56, CPT-103, ST-103, ST-133, and ST-812
are body tubes;
BR5-10, BR10-13, and BR8-13 are conical transitions
(BR5-10 and BR10-13 are being used as conical shoulders,
BR8-13 is being used as conical boattail);
BTC-10 is a coupler;
EM-8 is an engine mount.
(boost/gliders, rocket/gliders, and lifting bodies may use ejectable engine
Lazarus Sub-form, Model Rocket Fins, and Glider Wings/Stabilizers
: Lazarus Sub-form used by MRmain and glider01; uses TImage.Picture
property, MessageDlg(...), QuestionDlg(...). This form
is used for input of flight surfaces3 (fins/wings/stabilizers)
data required for cp, CNα,
CD, and other calculations. Another
example of calling FORTRAN from Lazarus via Object Pascal.
Unit defines glider-specific global data. Stores flight surfaces
basic data only. Both rockets and lifting bodies refer to flight surfaces
as fins. One of two forms that can be used to enter model rocket
fin data. This form must be used for entering glider's fins/wings/stabilizers
data (can be adapted for hand launched gliders).
Page shows examples of boost/gliders, rocket/gliders, and lifting bodies.
Rogallo Flexwing Glider
Rocket/Glider External Structural/Stabilizing Body Tubes
: Lazarus Sub-form used by glider01; uses TStringGrid,
OnSelectEditor, PickList editor, csDropDownList.
Sub-form is used to input External Body Tube data as shown in diagram at
right; data required for CD
calculations. Includes source code downloads.
Currently sub-form only handles rocket/gliders, but is easily
expandable to include model rockets.
Swing Wing Rocket/Glider
Model Rocket Parallel Stages
: Lazarus Sub-form user interface for inputting Parallel Stage data and adding
Parallel Stage Pods to a rocket's nth stage; used by MRmain. Also
demonstrates calling FORTRAN mathproc.dll Center of Pressure cp
and Coefficient of Normal Force CNα
subroutines from Lazarus via an Object Pascal Library; includes downloads, compiling
instructions (including brief hints for building sttstcs.for
& mathproc.for, main Lazarus project MRmain).
Parallel Stage data is stored in a separate file, allowing the same
Parallel Stage to be used with different model rockets.
In order to reduce complexity, several simplifications were made to Parallel
Stage Processing. Depending on Parallel Stage Pod length, may move
Soyuz Rocket with 4 parallel stages
Engine Thrust File I/O - missle05.pas
: Object Pascal Windows program to input and save to a file thrust
points from a model rocket engine thrust time curve (shown at right). Uses
several of the include files and Object Pascal Libraries mentioned on these
Thrust is a force vector. Provides acceleration and maintains
velocity (both of which are also vectors).
Demonstrates how to call D procedures using its mangled name or its unmangled
name when declared as extern (C), Engine Thrust Points right
click short cut popup menu processing via calls to
D module hedtio.
When Engine Thrust Points > 0.0, time interval is 0.1 seconds; when
Engine Thrust Points = 0.0, time interval is 0.5 seconds. When
procedure prcsEngFile (...) will be used to process thrust data for
For aircraft, for constant velocity straight and level flight, Thrust
= Drag, Lift = Weight
= CLα ½ ρ V2 Ar
L : Lift Force
CLα : Coefficient of Lift
at angle of attack α; dimensionless
½ ρ V2 : dynamic pressure
ρ : air density
V : airstream velocity (vector)
Ar : reference area; definition varies
depending on vehicle type and force (L,
N, or D)
= CD ½ ρ V2 Ar
D, aerodynamic drag, measured as a force vector,
is resistance to flight through air. Drag Coefficient
(CD) is a dimensionless
measurement of a flight vehicle's resistance to airflow due to its
design, shape, and finish. In simplest
terms, drag can be pressure drag (compression drag), friction drag,
interference drag (drag between airframe components), or induced drag (drag due to lift).
is a D Windows program to estimate CD
for model rockets, parallel stages, boost/gliders, and
rocket/gliders; uses module aero010,
which is designed to be the heart of D model rocket & glider programs. Both
modules call Object Pascal libraries. missle13.dll procedures
estimate pressure drag, friction drag, and
interference drag coefficients. These are then summarized for
an overall CD.
1. Image from
Conditions for Rocket Stability:
2. Image from Centuri Model Rocket Designers Manual, p. 19
3. The definition of flight surfaces has been expanded from its textbook
definition to include main wing.
4. Insect Article & Plans
April 1970 American Aircraft Modeler
5. Image from TR-4 Model Rocket Technical Report Boost Gliders, p. 12,
6. Image created from PixelSquid.com
Model Rocket Engine Designation
8. Image from NASA Glenn Research Center
Forces acting on an air vehicle in flight. For rockets, L
is usually ignored; Normal Force N is of
Linked In Public Profile:
Website is supported on DESKTOP platforms only. This index page is an
expanded "alternate" main page to selected pages of author's website.
To return to this index page, use the Browser's BACK button.
The downloadable source code files (version/revision history unavailable) are
enhanced (including error fixes) and tested periodically - check for revised versions.
|Free web hosting provided by
Any and all © copyrights, ™ trademarks, or other intellectual property (IP)
mentioned/used here are the property of their respective owners. No infringement is
intended. If you suspect infringement occurred, please contact me at
describing. Feel free to use any of the above in your project (without violating
any intellectual property rights); please give credit (same idea as Copyleft).