pub struct PodSet {
pub count: u32,
pub radial_offset_m: f64,
pub angle_rad: f64,
}Expand description
Pods beside the airframe: side pods, or outboard motor pods. A pod set attaches to a body tube like a fin set, and its children are the pod’s own body components (nose cone, body tubes, transitions), which stack aft from the pod set’s position along the pod’s axis instead of the body’s.
Copies. The pod written in the tree is one pod on the body’s axis, repeated count times
around it as a rotational pattern: pod k is that pod turned by φ_k = angle + 2π k / count
about the body’s axis and moved to r (cos φ_k, sin φ_k) (Self::pods), in
body axes. Everything
the pod holds (fins on its tubes, parts inside them, a motor in a mount) turns and moves with
it, so what points away from the airframe on one pod does on every pod. Each copy adds its own
parallel-axis term, I_O = I_cg + m (|d|² E − d dᵀ) with d the copy’s center from the point
O (J. L. Meriam and L. G. Kraige, Engineering Mechanics: Dynamics, appendix B). The pod set
itself weighs nothing: its mass is its pods’. See the design page’s Pods section
(docs/physics/design.md) and the decision record on pods, ADR-089.
A pod of no length. A pod may be a single body tube of no length, which weighs nothing: what hangs from it (fins, a launch lug) sits on a tube of that radius, most often none, so on the pod’s own axis, and is repeated around the body’s as any pod is. OpenRocket draws winglets this way, calling the tube a “phantom body”. A pod set may also hold nothing at all, and then weighs nothing.
Flown since M1.13c1: each pod’s parts take their own normal force and drag, once per pod (aerodynamics: Pods).
Fields§
§count: u32Number of pods, at least one, spaced evenly around the body’s axis.
radial_offset_m: f64Distance of each pod’s axis from the body’s axis, m.
angle_rad: f64Roll angle of the first pod from x_B toward y_B, rad.
Implementations§
Source§impl PodSet
impl PodSet
Sourcepub const MAX_COUNT: u32 = 64
pub const MAX_COUNT: u32 = 64
The most pods a set may have. Far more than any rocket carries, it bounds the copies a design file can ask for.
Sourcepub fn pods(&self) -> Result<Vec<Placement>, DesignError>
pub fn pods(&self) -> Result<Vec<Placement>, DesignError>
Where each pod sits: pod k is the pod as written (on the body’s axis) turned by
φ_k = angle + 2π k / count about the axis and moved to r (cos φ_k, sin φ_k), for
k = 0 … count − 1.
§Errors
DesignError::Domain for no pods or more than Self::MAX_COUNT, a radial offset that
is negative or not finite, or an angle that is not finite.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for PodSet
impl<'de> Deserialize<'de> for PodSet
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl JsonSchema for PodSet
impl JsonSchema for PodSet
Source§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
Source§fn json_schema(generator: &mut SchemaGenerator) -> Schema
fn json_schema(generator: &mut SchemaGenerator) -> Schema
Source§fn inline_schema() -> bool
fn inline_schema() -> bool
$ref keyword. Read more