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: Vector3Implementations§
Source§impl Arc
impl Arc
Sourcepub fn transform(&self, motion: &Motion) -> Self
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.
Sourcepub fn could_be_closed(&self) -> bool
pub fn could_be_closed(&self) -> bool
Whether the arc could be the whole circle.
Sourcepub fn angle(&self) -> GeopResult<Scalar>
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.
Sourcepub fn length(&self) -> GeopResult<Scalar>
pub fn length(&self) -> GeopResult<Scalar>
How long the arc is: its radius times the angle it turns through.
Sourcepub fn sweep(&self) -> f64
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.
Sourcepub fn point_at(&self, fraction: f64) -> GeopResult<Vector3>
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.
Sourcepub fn tangent_at(&self, p: &Vector3) -> GeopResult<Vector3>
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.
Sourcepub fn to_curve(&self) -> GeopResult<NurbCurve3D>
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.