|
Developer Documentation
|
#include <ObjectTypes/BSplineSurface/BSplineSurfaceT.hh>
Public Types | |
| typedef PointT | Point |
| typedef Point::value_type | Scalar |
|
typedef std::vector < std::vector< Point > > | ControlNet |
|
typedef std::vector < std::vector< unsigned char > > | PropertyNet |
Public Member Functions | |
| BSplineSurfaceT (unsigned int _degm=3, unsigned int _degn=3) | |
| Constructor. More... | |
| void | resize (unsigned int _m, unsigned int _n) |
| Resizes the spline struct. More... | |
| std::vector< Scalar > & | get_knots_m () |
| get the knotvector in m direction of the bspline surface | |
| std::vector< Scalar > & | get_knots_n () |
| get the knotvector in m direction of the bspline surface | |
| Knotvector | get_knotvector_m () |
| Get the knotvector in m direction. | |
| Knotvector | get_knotvector_n () |
| Get the knotvector in n direction. | |
| Knotvector * | get_knotvector_m_ref () |
| Get a reference to the knotvector in m direction. | |
| Knotvector * | get_knotvector_n_ref () |
| Get a reference to the knotvector in n direction. | |
| Scalar | get_knot_m (int _i) |
| Get knot i in m direction. More... | |
| Scalar | get_knot_n (int _i) |
| Get knot i in n direction. More... | |
| void | set_knots_m (std::vector< Scalar > _knots) |
| Set the knotvector of the bspline surface in m direction. More... | |
| void | set_knots_n (std::vector< Scalar > _knots) |
| Set the knotvector of the bspline surface in n direction. More... | |
| void | insert_knot_m (double _t) |
| Insert a knot i in m direction without changing the surface. More... | |
| void | insert_knot_n (double _t) |
| Insert a knot i in n direction without changing the surface. More... | |
| void | createKnots () |
| Creates interpolating knotvectors 0...0, 1, 2, ..., n...n. | |
| void | set_degree (unsigned int _degm, unsigned int _degn) |
| Sets the degree of the spline surface. More... | |
| int | degree_m () const |
| Returns the spline degree in m direction. | |
| int | degree_n () const |
| Returns the spline degree in n direction. | |
| unsigned int | n_control_points_m () const |
| Returns the number of controlpoints in m direction. | |
| unsigned int | n_control_points_n () const |
| Returns the number of controlpoints in n direction. | |
| unsigned int | n_knots_m () |
| Returns the number of knots in m direction. | |
| unsigned int | n_knots_n () |
| Returns the number of knots in n direction. | |
| void | reset_control_net () |
| Clears the control net. | |
| Point & | get_control_point (unsigned int _m, unsigned int _n) |
| Returns a reference to the control point (m, n) More... | |
| Point & | operator() (unsigned int _m, unsigned int _n) |
| Returns a reference to the control point (m, n) More... | |
| const Point & | operator() (unsigned int _m, unsigned int _n) const |
| Returns a const reference to the control point (m, n) More... | |
| Point & | operator() (Vec2i _param) |
| Returns a reference to the control point (m, n) More... | |
| const Point & | operator() (Vec2i _param) const |
| Returns a const reference to the control point (m, n) More... | |
| void | get_vector_m (std::vector< Point > &_control_polygon, unsigned int _m) |
| Returns an n control point vector. More... | |
| void | get_vector_n (std::vector< Point > &_control_polygon, unsigned int _n) |
| Returns an m ctrPointVector. More... | |
| void | add_vector_m (const std::vector< Point > &_control_polygon) |
| Adds a control point n-vector. More... | |
| void | add_vector_n (const std::vector< Point > &_control_polygon) |
| Adds a control point m-vector. More... | |
| void | insert_vector_m (const std::vector< Point > &_control_polygon, unsigned int _m) |
| Inserts an n control point vector. More... | |
| void | insert_vector_n (const std::vector< Point > &_control_polygon, unsigned int _n) |
| Inserts an m control point vector. More... | |
| void | delete_vector_m (unsigned int _m) |
| Deletes an n control point vector. More... | |
| void | delete_vector_n (unsigned int _n) |
| Deletes an m control point vector. More... | |
| Point | surfacePoint (double _u, double _v) |
| Evaluates a spline surface at parameters _u and _v. More... | |
| void | surfacePointNormal (Point &_pt, Point &_normal, double _u, double _v) |
| Evaluates a spline surface at parameters _u and _v. More... | |
| Point | surfacePoint_rec (double _u, double _v) |
| Evaluates a spline surface at parameters _u and _v. More... | |
| Point | derivativeSurfacePoint (double _u, double _v, int _derm, int _dern) |
| Returns the _derm'th derivative of a spline surface. More... | |
| Point | normalSurfacePoint (double _u, double _v) |
| Returns the normal of a spline surface. More... | |
| Scalar | basisFunction (Knotvector &_knotvector, int _i, int _n, double _t) |
| A Spline Basis Function. More... | |
| Scalar | derivativeBasisFunction (Knotvector &_knotvector, int _i, int _n, double _t, int _der) |
| Derivative of a Spline Basis Function. More... | |
| ACG::Vec2i | spanm (double _t) |
| Returns the basis functions which are unequal to zero at parameter u. More... | |
| ACG::Vec2i | spann (double _t) |
| Returns the basis functions which are unequal to zero at parameter v. More... | |
| ACG::Vec2i | interval_m (double _t) |
| Returns the index of the knots u and u+1 such that t in [u, u+1) More... | |
| ACG::Vec2i | interval_n (double _t) |
| Returns the index of the knots v and v+1 such that t in [v, v+1) More... | |
| Scalar | loweru () |
| Returns the lower u parameter. | |
| Scalar | upperu () |
| Returns the upper u parameter. | |
| Scalar | lowerv () |
| Returns the lower v parameter. | |
| Scalar | upperv () |
| Returns the upper v parameter. | |
| void | request_controlpoint_selections () |
| request control point selection property | |
| void | request_edge_selections () |
| request edge selection property | |
| void | release_controlpoint_selections () |
| release control point selection property | |
| void | release_edge_selections () |
| release edge selection property | |
| bool | controlpoint_selections_available () const |
| Check if control point selection property is available. | |
| bool | edge_selections_available () const |
| Check if edge selection property is available. | |
| unsigned char & | controlpoint_selection (unsigned int _i, unsigned int _j) |
| const unsigned char & | controlpoint_selection (unsigned int _i, unsigned int _j) const |
| unsigned char & | edge_selection (unsigned int _i, unsigned int _j) |
| const unsigned char & | edge_selection (unsigned int _i, unsigned int _j) const |
| void | select_controlpoint (unsigned int _iIdx, unsigned int _jIdx) |
| void | deselect_controlpoint (unsigned int _iIdx, unsigned int _jIdx) |
| bool | controlpoint_selected (unsigned int _iIdx, unsigned int _jIdx) const |
Private Member Functions | |
| template<class PropT > | |
| void | request_prop (unsigned int &_ref_count, PropT &_prop) |
| template<class PropT > | |
| void | release_prop (unsigned int &_ref_count, PropT &_prop) |
Private Attributes | |
| unsigned int | dimm_ |
| number of control points in m direction | |
| unsigned int | dimn_ |
| number of control points in n direction | |
| unsigned int | degree_m_ |
| Spline degree in m direction. | |
| unsigned int | degree_n_ |
| Spline degree in n direction. | |
| Knotvector | knotvector_m_ |
| Knotvector in m direction. | |
| Knotvector | knotvector_n_ |
| Knotvector in n direction. | |
| ControlNet | control_net_ |
| PropertyNet | cpselections_ |
| list of control point properties | |
| PropertyNet | eselections_ |
| list of edge properties | |
| unsigned int | ref_count_cpselections_ |
| unsigned int | ref_count_eselections_ |
Brief Description.
A more elaborate description follows.
Definition at line 88 of file BSplineSurfaceT.hh.
|
explicit |
Constructor.
| _degm | Degree in m direction |
| _degn | Degree in n direction |
Definition at line 81 of file BSplineSurfaceT.cc.
| void ACG::BSplineSurfaceT< PointT >::add_vector_m | ( | const std::vector< Point > & | _control_polygon | ) |
Adds a control point n-vector.
| _control_polygon | Additional control point vector |
Definition at line 193 of file BSplineSurfaceT.cc.
| void ACG::BSplineSurfaceT< PointT >::add_vector_n | ( | const std::vector< Point > & | _control_polygon | ) |
Adds a control point m-vector.
| _control_polygon | Additional control point vector |
Definition at line 203 of file BSplineSurfaceT.cc.
| BSplineSurfaceT< PointT >::Scalar ACG::BSplineSurfaceT< PointT >::basisFunction | ( | Knotvector & | _knotvector, |
| int | _i, | ||
| int | _n, | ||
| double | _t | ||
| ) |
A Spline Basis Function.
| _knotvector | the knotvector |
| _i | the i'th basis function |
| _n | the spline degree |
| _t | the parameter Returns N_i^p(_u) |
Definition at line 610 of file BSplineSurfaceT.cc.
| void ACG::BSplineSurfaceT< PointT >::delete_vector_m | ( | unsigned int | _m | ) |
Deletes an n control point vector.
| _m | the m'th pointvector |
Definition at line 281 of file BSplineSurfaceT.cc.
| void ACG::BSplineSurfaceT< PointT >::delete_vector_n | ( | unsigned int | _n | ) |
Deletes an m control point vector.
| _n | the n'th pointvector |
Definition at line 308 of file BSplineSurfaceT.cc.
| BSplineSurfaceT< PointT >::Scalar ACG::BSplineSurfaceT< PointT >::derivativeBasisFunction | ( | Knotvector & | _knotvector, |
| int | _i, | ||
| int | _n, | ||
| double | _t, | ||
| int | _der | ||
| ) |
Derivative of a Spline Basis Function.
| _knotvector | the knotvector |
| _i | the i'th basis function |
| _n | the spline degree |
| _t | the parameter |
| _der | the _der'th derivative |
Definition at line 698 of file BSplineSurfaceT.cc.
| PointT ACG::BSplineSurfaceT< PointT >::derivativeSurfacePoint | ( | double | _u, |
| double | _v, | ||
| int | _derm, | ||
| int | _dern | ||
| ) |
Returns the _derm'th derivative of a spline surface.
| _u | the parameter in u direction |
| _v | the parameter in v direction |
| _derm | the _derm'th derivative in m |
| _dern | the _dern'th derivative in n |
Definition at line 648 of file BSplineSurfaceT.cc.
|
inline |
Returns a reference to the control point (m, n)
| _m,_n | the control point index |
Definition at line 199 of file BSplineSurfaceT.hh.
|
inline |
Get knot i in m direction.
| _i | Knot index |
Definition at line 133 of file BSplineSurfaceT.hh.
|
inline |
Get knot i in n direction.
| _i | Knot index |
Definition at line 140 of file BSplineSurfaceT.hh.
| void ACG::BSplineSurfaceT< PointT >::get_vector_m | ( | std::vector< Point > & | _control_polygon, |
| unsigned int | _m | ||
| ) |
Returns an n control point vector.
| _m | the m'th pointvector |
| _control_polygon | the returned pointvector |
Definition at line 339 of file BSplineSurfaceT.cc.
| void ACG::BSplineSurfaceT< PointT >::get_vector_n | ( | std::vector< Point > & | _control_polygon, |
| unsigned int | _n | ||
| ) |
Returns an m ctrPointVector.
| _n | the n'th pointvector |
| _control_polygon | the returned pointvector |
Definition at line 350 of file BSplineSurfaceT.cc.
| void ACG::BSplineSurfaceT< PointT >::insert_knot_m | ( | double | _t | ) |
Insert a knot i in m direction without changing the surface.
| _t | Parameter value |
Definition at line 386 of file BSplineSurfaceT.cc.
| void ACG::BSplineSurfaceT< PointT >::insert_knot_n | ( | double | _t | ) |
Insert a knot i in n direction without changing the surface.
| _t | Parameter value |
Definition at line 430 of file BSplineSurfaceT.cc.
| void ACG::BSplineSurfaceT< PointT >::insert_vector_m | ( | const std::vector< Point > & | _control_polygon, |
| unsigned int | _m | ||
| ) |
Inserts an n control point vector.
| _m | the position in m direction |
| _control_polygon | the pointvector to be inserted |
Definition at line 213 of file BSplineSurfaceT.cc.
| void ACG::BSplineSurfaceT< PointT >::insert_vector_n | ( | const std::vector< Point > & | _control_polygon, |
| unsigned int | _n | ||
| ) |
Inserts an m control point vector.
| _n | the position in n direction |
| _control_polygon | the pointvector to be inserted |
Definition at line 246 of file BSplineSurfaceT.cc.
| ACG::Vec2i ACG::BSplineSurfaceT< PointT >::interval_m | ( | double | _t | ) |
Returns the index of the knots u and u+1 such that t in [u, u+1)
| _t | the parameter |
Definition at line 783 of file BSplineSurfaceT.cc.
| ACG::Vec2i ACG::BSplineSurfaceT< PointT >::interval_n | ( | double | _t | ) |
Returns the index of the knots v and v+1 such that t in [v, v+1)
| _t | the parameter |
Definition at line 803 of file BSplineSurfaceT.cc.
| PointT ACG::BSplineSurfaceT< PointT >::normalSurfacePoint | ( | double | _u, |
| double | _v | ||
| ) |
Returns the normal of a spline surface.
| _u | the parameter in u direction |
| _v | the parameter in v direction |
Definition at line 680 of file BSplineSurfaceT.cc.
|
inline |
Returns a reference to the control point (m, n)
| _m,_n | the control point index |
Definition at line 209 of file BSplineSurfaceT.hh.
|
inline |
Returns a const reference to the control point (m, n)
| _m,_n | the control point index |
Definition at line 219 of file BSplineSurfaceT.hh.
|
inline |
Returns a reference to the control point (m, n)
| _param | the control point index |
Definition at line 229 of file BSplineSurfaceT.hh.
|
inline |
Returns a const reference to the control point (m, n)
| _param | the control point index |
Definition at line 239 of file BSplineSurfaceT.hh.
| void ACG::BSplineSurfaceT< PointT >::resize | ( | unsigned int | _m, |
| unsigned int | _n | ||
| ) |
Resizes the spline struct.
You usually shoudn't have to care about this I will probably make it private...
| _m | size in m direction |
| _n | size in n direction |
Definition at line 131 of file BSplineSurfaceT.cc.
| void ACG::BSplineSurfaceT< PointT >::set_degree | ( | unsigned int | _degm, |
| unsigned int | _degn | ||
| ) |
Sets the degree of the spline surface.
| _degm | Degree in m direction |
| _degn | Degree in n direction |
Definition at line 182 of file BSplineSurfaceT.cc.
| void ACG::BSplineSurfaceT< PointT >::set_knots_m | ( | std::vector< Scalar > | _knots | ) |
Set the knotvector of the bspline surface in m direction.
| _knots | The new knots |
Definition at line 364 of file BSplineSurfaceT.cc.
| void ACG::BSplineSurfaceT< PointT >::set_knots_n | ( | std::vector< Scalar > | _knots | ) |
Set the knotvector of the bspline surface in n direction.
| _knots | The new knots |
Definition at line 375 of file BSplineSurfaceT.cc.
| ACG::Vec2i ACG::BSplineSurfaceT< PointT >::spanm | ( | double | _t | ) |
Returns the basis functions which are unequal to zero at parameter u.
| _t | the parameter |
Definition at line 763 of file BSplineSurfaceT.cc.
| ACG::Vec2i ACG::BSplineSurfaceT< PointT >::spann | ( | double | _t | ) |
Returns the basis functions which are unequal to zero at parameter v.
| _t | the parameter |
Definition at line 773 of file BSplineSurfaceT.cc.
| PointT ACG::BSplineSurfaceT< PointT >::surfacePoint | ( | double | _u, |
| double | _v | ||
| ) |
Evaluates a spline surface at parameters _u and _v.
| _u | the parameter in u direction |
| _v | the parameter in v direction |
Definition at line 476 of file BSplineSurfaceT.cc.
| PointT ACG::BSplineSurfaceT< PointT >::surfacePoint_rec | ( | double | _u, |
| double | _v | ||
| ) |
Evaluates a spline surface at parameters _u and _v.
Slower version of surfacePoint(), which evaluates the basis functions recursively.
| _u | the parameter in u direction |
| _v | the parameter in v direction |
Definition at line 577 of file BSplineSurfaceT.cc.
| void ACG::BSplineSurfaceT< PointT >::surfacePointNormal | ( | Point & | _pt, |
| Point & | _normal, | ||
| double | _u, | ||
| double | _v | ||
| ) |
Evaluates a spline surface at parameters _u and _v.
Computes surface point and normal at the same time (optimized).
| _point | point output |
| _normal | normal output |
| _u | the parameter in u direction |
| _v | the parameter in v direction |
Definition at line 519 of file BSplineSurfaceT.cc.