Virtual Testbed
Ship dynamics simulator for extreme conditions
Public Types | Public Member Functions | Static Public Member Functions | List of all members
vtb::geometry::Basis_spline< T, N > Class Template Reference

Non-uniform rational basis spline (NURBS). More...

#include <basis_spline.hh>

Inheritance diagram for vtb::geometry::Basis_spline< T, N >:
[legend]

Public Types

using point_type = Vertex< T, N >
 
using element_type = Vertex< T, N+1 >
 
using knot_type = T
 
using weight_type = T
 
using point_array = std::vector< point_type >
 
using element_array = std::vector< element_type >
 
using knot_array = std::vector< knot_type >
 
using weight_array = std::vector< weight_type >
 
using coefficient_array = std::vector< T >
 
using scalar_type = T
 
using value_type = element_type
 
using reference = value_type &
 
using const_reference = const value_type &
 
using size_type = size_t
 

Public Member Functions

 Basis_spline (const Basis_spline &)=default
 
Basis_splineoperator= (const Basis_spline &)=default
 
 Basis_spline (Basis_spline &&)=default
 
Basis_splineoperator= (Basis_spline &&)=default
 
 Basis_spline (element_array elements, knot_array knots)
 
 Basis_spline (element_array elements, size_type degree=3)
 
 Basis_spline (point_array points, weight_array weights, knot_array knots)
 
 Basis_spline (point_array points, knot_array knots)
 
 Basis_spline (point_array points, weight_array weights, size_type degree=3)
 
 Basis_spline (point_array points, size_type degree=3)
 
size_type degree () const
 
size_type num_internal_knots () const
 
element_type operator() (T x) const
 Uses de Boor's agorithm [deboor1977]. More...
 
coefficient_array coefficients (T x) const
 
void interpolate ()
 
size_type size () const
 
size_type num_points () const
 
size_type num_knots () const
 
const knot_arrayknots () const
 
const element_arrayelements () const
 
void range (T min, T max)
 

Static Public Member Functions

static knot_array make_knots (size_type npoints, size_type degree)
 
static knot_array make_cyclic_knots (size_type npoints, size_type degree)
 
static element_type to_element (const point_type &p, T weight)
 
static point_type to_point (const element_type &elem)
 

Detailed Description

template<class T, int N>
class vtb::geometry::Basis_spline< T, N >

Non-uniform rational basis spline (NURBS).

Date
2019-03-16
Author
Ivan Gankevich
See also
http://mathworld.wolfram.com/B-Spline.html

Definition at line 18 of file basis_spline.hh.

Member Function Documentation

◆ operator()()

template<class T , int N>
element_type vtb::geometry::Basis_spline< T, N >::operator() ( x) const
inline