Expand description
Fin sets and tube fins: planforms, cross-sections, tabs, and mass properties from geometry.
Fin frame. A fin set’s frame has its origin on the body axis at the station of the root
chord’s leading edge. Fin k of N lies in the plane through the axis at roll angle
φ_k = φ_0 + 2πk/N from x_B toward y_B. In a fin’s own coordinates, x runs aft from the
root leading edge, the span h runs outward from the body surface (radius R_b + h), and the
thickness coordinate τ is normal to the fin plane. Planform definitions follow S. Niskanen,
OpenRocket technical documentation v13.05, §3.2.2, pp. 25–29: a trapezoidal fin has root chord
c_r, tip chord c_t parallel to the body, span s, and sweep x_t, the axial distance from
the root leading edge to the tip leading edge; an elliptical fin has chord
c(h) = c_r √(1 − (h/s)²) centered on the root chord; a freeform fin is a polygon.
Mass. Each fin is a plate whose local thickness varies along each chord with the
cross-section. At span h, a chord from a to b (length c) contributes the moments
M_k = ∫ x^k t(x) dx and T = ∫ t(x)³/12 dx:
square: t(x) = t
rounded: semicircular leading and trailing edges of radius a_r = min(t, c)/2
airfoil: t(x) = 10 t P(ξ), P = 0.2969√ξ − 0.1260ξ − 0.3516ξ² + 0.2843ξ³ − 0.1015ξ⁴The airfoil is the NACA four-digit symmetric thickness distribution (I. H. Abbott and A. E.
von Doenhoff, Theory of Wing Sections, Dover, 1959, eq. 6.2) with its maximum thickness,
1.0003 t at ξ = 0.2998, scaled to the fin thickness. OpenRocket’s documentation uses the
cross-section only for drag (§3.4.4, pp. 49–50); hpr-design also counts the volume it removes.
The fin’s moments about the fin-set frame are then
m = ρ ∫ M_0 dh, ∫ r dm = ρ ∫ (R_b + h) M_0 dh, ∫ r² dm = ρ ∫ (R_b + h)² M_0 dh,
∫ x dm = ρ ∫ M_1 dh, ∫ x² dm = ρ ∫ M_2 dh, ∫ r x dm = ρ ∫ (R_b + h) M_1 dh, ∫ τ² dm = ρ ∫ T dhand with the fin at φ = 0 (points at (r, τ, −x) in body axes)
I_xx = ∫(τ² + x²) dm, I_yy = ∫(r² + x²) dm, I_zz = ∫(r² + τ²) dm, I_xz = ∫ r x dm, I_xy = I_yz = 0about the origin. A tab is a square-section slab below the root (−h_tab ≤ h ≤ 0). The flat
root is taken to sit on the body at radius R_b; the sliver between a flat root and the curved
tube, t²/8R_b deep, is ignored. On a nose cone or a transition the surface is not level
along the root: R_b is the body’s radius at the root leading edge, h is measured from it,
and a freeform fin’s root runs through its root points on the surface (OpenRocket’s reading of
a fin on a nose cone, ADR-166). Cant δ turns each fin (with its tab) by δ about its own
outward span axis through the root mid-chord, right-handed, so a positive cant turns fin 0’s
leading edge toward −y_B. See docs/physics/mass.md.
Fillets. A fillet of radius r runs the root chord c_r on each face of each fin. Its
section is the region between the fin’s mid-plane, the body’s circle of radius R_b, and a
circle of radius r tangent to both: OpenRocket 24.12’s reading, which leaves the fin’s
thickness out. Its mass and center of mass match OpenRocket’s to 1e-15 on nine probe designs
(ADR-096, the decision on fillets). With the fillet circle’s center at
(c, r), c = √(R_b² + 2 R_b r) and θ = atan(r / c), the section is the triangle
(0, 0), (c, 0), (c, r) less the body’s sector of angle θ and the fillet’s of π/2 − θ:
A = c r / 2 − R_b² θ / 2 − r² (π/2 − θ) / 2which tends to r² (1 − π/4) on a flat body. Its moments come the same way, and the fillets
are a prism of that section along the root, in the fillet’s own material.
Structs§
- FinFillet
- Fillets along each fin’s root: a concave joint on both faces, running the root chord.
- FinSet
- A set of identical fins spaced evenly around the body.
- FinTab
- A rectangular tab below a fin’s root, reaching into the body.
- Planform
Geometry - Area and centroid of a planform.
- Tube
FinSet - Tube fins: open tubes parallel to the body, touching it, spaced evenly around it.
Enums§
- FinCross
Section - The shape of a fin’s section along its chord.
- FinPlanform
- The outline of one fin.
Constants§
- FILLET_
RATIO_ MAX - The widest fin fillet weighed, as a multiple of the body radius (
FinSet::single_fin).