Skip to main content

Torus

Struct Torus 

Source
pub struct Torus { /* private fields */ }
Expand description

A torus, with the frame’s z as its axis of revolution.

Implementations§

Source§

impl Torus

Source

pub fn new( frame: Frame, major_radius: f64, minor_radius: f64, tol: Tolerances, ) -> OgeomResult<Self>

A torus about frame’s z axis.

major_radius is the distance from the axis to the centre of the tube; minor_radius is the tube’s own radius.

§Errors

OgeomError::Construction if either radius is not finite and positive. A minor radius exceeding the major is allowed: that is a spindle torus, a real self-intersecting surface, and Torus::kind reports which case this is.

Source

pub const fn frame(&self) -> Frame

The frame positioning this torus.

Source

pub const fn centre(&self) -> Point

The centre.

Source

pub const fn axis(&self) -> Axis

The axis of revolution.

Source

pub const fn major_radius(&self) -> f64

The distance from the axis to the centre of the tube.

Source

pub const fn minor_radius(&self) -> f64

The radius of the tube.

Source

pub fn kind(&self, tol: Tolerances) -> TorusKind

Which of the three topological cases this torus falls into.

Source

pub fn self_intersects(&self, tol: Tolerances) -> bool

Whether the surface passes through itself.

Source

pub fn signed_distance_to(&self, p: Point) -> f64

The signed distance from p: negative inside, magnitude the distance to the nearest sheet.

For a TorusKind::Ring or TorusKind::Horn torus, inside is the tube. A TorusKind::Spindle torus passes through itself and bounds two nested regions, and “inside” cannot name both; here it names the outer one (the apple, the solid of revolution the outer sheet bounds, which contains the lemon) because that is the region the torus-as-a-solid occupies. The magnitude is measured to whichever sheet is nearer, the folded inner sheet included, so a point on either sheet reads zero.

Source

pub fn distance_to(&self, p: Point) -> f64

The distance from p to the surface.

Correct for all three kinds. In the half-plane at a fixed azimuth, the surface’s profile is the generating circle folded about the axis: when the minor radius exceeds the major, part of that circle lies on the far side of the axis and sweeps to the near side. Measuring only to the unfolded branch (which is what the signed form does) then reports a point on the surface as being some distance off it.

Source

pub fn contains(&self, p: Point, tol: Tolerances) -> bool

Whether p lies on the surface within tol.confusion().

Source

pub fn area(&self) -> f64

The surface area, for a ring torus.

Meaningless for a spindle torus, whose surface overlaps itself.

Source

pub fn volume(&self) -> f64

The volume enclosed, for a ring torus.

Source

pub fn transformed(&self, t: &Transform, tol: Tolerances) -> OgeomResult<Self>

This torus moved by t.

§Errors

OgeomError::Construction if the transformed frame is degenerate.

Trait Implementations§

Source§

impl Clone for Torus

Source§

fn clone(&self) -> Torus

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 Copy for Torus

Source§

impl Debug for Torus

Source§

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

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

impl PartialEq for Torus

Source§

fn eq(&self, other: &Torus) -> 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 StructuralPartialEq for Torus

Auto Trait Implementations§

§

impl Freeze for Torus

§

impl RefUnwindSafe for Torus

§

impl Send for Torus

§

impl Sync for Torus

§

impl Unpin for Torus

§

impl UnsafeUnpin for Torus

§

impl UnwindSafe for Torus

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> 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> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> Scalar for T
where T: 'static + Clone + PartialEq + Debug,

§

impl<SS, SP> SupersetOf<SS> for SP
where SS: SubsetOf<SP>,

§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
§

fn is_in_subset(&self) -> bool

Checks if self is actually part of its subset T (and can be converted to it).
§

fn to_subset_unchecked(&self) -> SS

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
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.