Rocket HAACK

"Rocket HAACK" is an OpenSCAD library for creating 3D-Printed model rocketry Nose Cones, Transitions, and Couplers of various types. All standard curve types are supported, including, Spherical, Conical, Ellipical, Parabolic, Tangent and Secant Ogive types, and of course HAACK and Von Kármán which are popular with the Mid and High Power crowd.

"Rocket HAACK" currently consists of two OpenSCAD files, "Rocket_HAACK.scad" and "Rocket_HAACK_data.scad". The first contains all the OpenSCAD code for the library routines. The second is an include used by the first that contains many constants used by the library for standard body tube sizes and nose cone types.


While all of the internal modules may be used, the following are designed to be the interface to your procedure.

Interface Parameters

These can be overridden by passing an updated value in your module call.

TYPE = <profile type> ;

Defines the type of curve used to generate the nose cone or transition profile. There are predefined constants for each of the supported types.

Valid Values are:


    A hemisphere on top of a cylinder.

  2. CONIC

    A cone. In practical applications, a conical nose is often blunted by capping it with a segment of a sphere (See BLUNTED parameter). This will cause the end result to be shorter than the requested length as the blunted end will remove the top portion of the cone to the tangent of the sphere.

  3. HAACK

    The Haack Series shapes are mathematically derived for the purpose of minimizing drag.

    When C = 0, the notation LD signifies minimum drag for the given length and diameter, and when C = 1/3, LV indicates minimum drag for a given length and volume. For C > 2/3, Haack nose cones bulge to a maximum diameter greater than the base diameter. Haack nose tips do not come to a sharp point, but are slightly rounded.

    The Haack series giving minimum drag for the given length and diameter, LD-Haack, is commonly referred to as the Von Kármán or the Von Kármán Ogive.

  4. POWER

    The power series nose shape is generated by rotating the y = R(x/L)^N curve about the x-axis for values of N less than 1. The factor N controls the bluntness of the shape. For values of N above about 0.7, the tip is fairly sharp. As N decreases towards zero, the power series nose shape becomes increasingly blunt.


    The parabolic series nose shape is generated by rotating a segment of a parabola around a line parallel to its latus rectum. This construction is similar to that of the tangent ogive, except that a parabola is the defining shape rather than a circle. Just as it does on an ogive, this construction produces a nose shape with a sharp tip. For the blunt shape typically associated with a parabolic nose, see power series.

    K can vary anywhere between 0 and 1, but the most common values used for nose cone shapes are:

    • K = 0 for a cone
    • K = 0.5 for a 1/2 parabola
    • K = 0.75 for a 3/4 parabola
    • K = 1 for a full parabola

    For the case of the full Parabola (K=1) the shape is tangent to the body at its base, and the base is on the axis of the parabola. Values of K less than one result in a slimmer shape, whose appearance is similar to that of the secant ogive. The shape is no longer tangent at the base, and the base is parallel to, but offset from, the axis of the parabola.


    The profile of this shape is one-half of an ellipse, with the major axis being the centerline and the minor axis being the base of the nose cone.

    This shape is popular in subsonic flight (such as model rocketry) due to the blunt nose and tangent base.

    If R equals L, this is a hemisphere.

  7. SECOGIVE - Secant ogive

    The profile of this shape is formed by a segment of a circle, but the base of the shape is not on the radius of the circle defined by the ogive radius. The rocket body will not be tangent to the curve of the nose at its base. The Ogive Radius is not determined by R and L (as it is for a tangent ogive), but rather is one of the factors to be chosen to define the nose shape.

    If the chosen Ogive Radius of a Secant Ogive is greater than the Ogive Radius of a Tangent Ogive with the same R and L, then the resulting Secant Ogive appears as a Tangent Ogive with a portion of the base truncated.

    If the chosen radius is less than the tangent ogive, then the result will be a Secant Ogive that bulges out to a maximum diameter that is greater than the base diameter. The classic example of this shape is the nose cone of the Honest John.

    The chosen ogive radius (Specified in the O parameter) must be greater than half the length of the nose cone.

  8. TANOGIVE - Tangent ogive

    The profile of this shape is formed by a segment of a circle such that the rocket body is tangent to the curve of the nose cone at its base; and the base is on the radius of the circle.

    The radius of the circle that forms the ogive is called the ogive radius, rho, and it is related to the length and base radius of the nose cone.

BODY = [ <Inside Diameter, Outside Diameter, Description> ]
TRANS = [ <Inside Diameter, Outside Diameter, Description> ] ;

A vector constant detailing the size of the body tube. BODY is for the larger of the two tubes in the case of a transition, and TRANS is used to provide parameters for the small end of the transition. Inside and Outside diameter are the ID and OD of the body tube in mm. The MCAD units library has been included for easier conversion to SAE sizes. Simply add *inch to perform the conversion from inches.

Description is used to hold a description that will be printed on certain coupler end caps.

BODY = BT55; // BT55 is a constant pre-defined in Rocket_HAACK_data
TRANS = BT30; // Create a transition between BT55 and BT30 tubes
BODY = [ 1.283*inch, 1.325*inch, "BT-55" ] ;

LENGTH = <cone length> ;

The length (or height) of the nose cone, excluding the coupler. It should be noted that if the BLUNTED option is chosen, the nose cone will be shorter as the top portion is chopped off at the point where the specified sphere is tangent to the Nose Cone body.

BEARING = <bearing surface length> ;
BLUNTED = <radius of blunted nose> ;
COUPLER = <length of coupler> ;
CAP = <[Coupler End Cap Parameters]> ;

Special Interface Constants

Special parameters for specific nose cone profile types. These may also be overridden by passing an updated value in your module call

These were kept as separate parameters rather than lumping them in to one "EXTRA" parameter so that appropriate defaults could be placed in the code.

C = <HAACK Profile Parameter> ;
N = <POWER series Profile Parameter> ;
K = <Parabolic Profile> ;
O = <Ogive Radius> ;

Other constants of interest

These contents are used througout the code, however they may only be updated by updating the library source code. It is not recommended you update these unless you have a specific need.

SLICE = <slice size> ;
WALL = <wall thickness> ;

NOTE: Descriptions for the various curves has been adapted from the descriptions in Wikipedia.