pub struct NurbsCurve {
pub degree: usize,
pub knots: Vec<f64>,
pub control_points: Vec<Vec4>,
/* private fields */
}Fields§
§degree: usize§knots: Vec<f64>§control_points: Vec<Vec4>Implementations§
Source§impl NurbsCurve
impl NurbsCurve
pub fn new( degree: usize, knots: Vec<f64>, control_points: Vec<Vec4>, ) -> Result<Self, String>
pub fn domain(&self) -> Result<[f64; 2], String>
pub fn evaluate_homogeneous(&self, parameter: f64) -> Result<Vec4, String>
pub fn evaluate(&self, parameter: f64) -> Result<Vec3, String>
Sourcepub fn evaluate_extended(&self, parameter: f64) -> Result<Vec3, String>
pub fn evaluate_extended(&self, parameter: f64) -> Result<Vec3, String>
Value beyond the domain (Golovanov §2.15): every curve must answer out-of-domain queries because intersection and projection algorithms probe there. Closed curves wrap the parameter cyclically; open curves extend linearly along the end tangent.
Sourcepub fn derivatives_extended(
&self,
parameter: f64,
derivative_count: usize,
) -> Result<Vec<Vec3>, String>
pub fn derivatives_extended( &self, parameter: f64, derivative_count: usize, ) -> Result<Vec<Vec3>, String>
Derivatives beyond the domain (§2.15). The open-end extension is linear: the first derivative is the boundary tangent and higher derivatives vanish.
pub fn derivatives( &self, parameter: f64, derivative_count: usize, ) -> Result<Vec<Vec3>, String>
pub fn reversed(&self) -> Result<Self, String>
pub fn insert_knot( &self, parameter: f64, requested: usize, ) -> Result<Self, String>
pub fn split(&self, parameter: f64) -> Result<(Self, Self), String>
Trait Implementations§
Source§impl Clone for NurbsCurve
impl Clone for NurbsCurve
Source§fn clone(&self) -> NurbsCurve
fn clone(&self) -> NurbsCurve
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for NurbsCurve
impl Debug for NurbsCurve
Source§impl<'de> Deserialize<'de> for NurbsCurve
impl<'de> Deserialize<'de> for NurbsCurve
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>,
Deserialize this value from the given Serde deserializer. Read more
Auto Trait Implementations§
impl !Freeze for NurbsCurve
impl !RefUnwindSafe for NurbsCurve
impl !Sync for NurbsCurve
impl Send for NurbsCurve
impl Unpin for NurbsCurve
impl UnsafeUnpin for NurbsCurve
impl UnwindSafe for NurbsCurve
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more