Skip to main content

PodSet

Struct PodSet 

Source
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: u32

Number of pods, at least one, spaced evenly around the body’s axis.

§radial_offset_m: f64

Distance of each pod’s axis from the body’s axis, m.

§angle_rad: f64

Roll angle of the first pod from x_B toward y_B, rad.

Implementations§

Source§

impl PodSet

Source

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.

Source

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 Clone for PodSet

Source§

fn clone(&self) -> PodSet

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for PodSet

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for PodSet

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl JsonSchema for PodSet

Source§

fn schema_name() -> Cow<'static, str>

The name of the generated JSON Schema. Read more
Source§

fn schema_id() -> Cow<'static, str>

Returns a string that uniquely identifies the schema produced by this type. Read more
Source§

fn json_schema(generator: &mut SchemaGenerator) -> Schema

Generates a JSON Schema for this type. Read more
Source§

fn inline_schema() -> bool

Whether JSON Schemas generated for this type should be included directly in parent schemas, rather than being re-used where possible using the $ref keyword. Read more
Source§

impl PartialEq for PodSet

Source§

fn eq(&self, other: &PodSet) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Serialize for PodSet

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more
Source§

impl StructuralPartialEq for PodSet

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.