Skip to main content

Arc

Struct Arc 

Source
pub struct Arc {
    pub circle: Circle,
    pub start: Vector3,
    pub end: Vector3,
}
Expand description

A circular arc: the part of circle from start counter-clockwise (seen with circle.normal towards the viewer) to end — all of it when start and end coincide.

Fields§

§circle: Circle§start: Vector3§end: Vector3

Implementations§

Source§

impl Arc

Source

pub fn transform(&self, motion: &Motion) -> Self

The arc moved by motion. A mirror turns counter-clockwise into clockwise, so the mirrored arc runs from its end to its start.

Source

pub fn could_be_closed(&self) -> bool

Whether the arc could be the whole circle.

Source

pub fn angle(&self) -> GeopResult<Scalar>

The angle the arc turns through, in radians, in (0, 2 pi]: an enclosure, for what is measured — its length (Arc::length). The whole turn for an arc that could be closed, as Arc::sweep takes it.

Source

pub fn length(&self) -> GeopResult<Scalar>

How long the arc is: its radius times the angle it turns through.

Source

pub fn sweep(&self) -> f64

The angle the arc turns through, in radians, in (0, 2 pi], as a plain f64: only ever used to choose a point along the arc (see Arc::point_at); what is measured takes Arc::angle.

Source

pub fn point_at(&self, fraction: f64) -> GeopResult<Vector3>

The point fraction of the way along the arc, by angle: start at 0, end at 1.

The angle is computed in f64 (see Arc::sweep) and taken as sharp — legitimately: which point is “0.3 of the way” is a choice the caller makes, and any angle within rounding of it serves that choice equally well. What the result has to be honestly is a point on the circle, and it is, since it is built from the circle itself.

Source

pub fn tangent_at(&self, p: &Vector3) -> GeopResult<Vector3>

The unit tangent at p, a point of the arc, pointing the way the arc runs.

Source

pub fn to_curve(&self) -> GeopResult<NurbCurve3D>

The arc as a curve, the way the kernel builds every arc: rational quadratic pieces of at most a quarter turn each, on [0, 1], running from start to end exactly.

Where the pieces meet is a free choice (see Arc::point_at): any point of the circle serves. Each piece from P0 to P2 around the center C, turning through phi, has its middle control point where the tangents at its ends meet, C + (P0 - C + P2 - C) / (1 + cos phi), weighted cos(phi / 2) = sqrt((1 + cos phi) / 2) — both read off the ends, so no angle is taken.

Trait Implementations§

Source§

impl Clone for Arc

Source§

fn clone(&self) -> Arc

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 Arc

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl Freeze for Arc

§

impl RefUnwindSafe for Arc

§

impl Send for Arc

§

impl Sync for Arc

§

impl Unpin for Arc

§

impl UnsafeUnpin for Arc

§

impl UnwindSafe for Arc

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> 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.