chrono::geometry::ChBasisToolsNurbsSurfaces Class Reference

Description

Tools for evaluating basis functions for tensor-product surface NURBS, parametrized with parameter u,v (as lines) These bases are often called "R" in literature.

#include <ChBasisToolsNurbs.h>

Static Public Member Functions

static void BasisEvaluate (const int p_u, const int p_v, const double u, const double v, const ChMatrixDynamic<> &Weights, const ChVectorDynamic<> &Knots_u, const ChVectorDynamic<> &Knots_v, ChMatrixDynamic<> &R)
 Compute vector of bases R. More...
 
static void BasisEvaluateDeriv (const int p_u, const int p_v, const double u, const double v, const ChMatrixDynamic<> &Weights, const ChVectorDynamic<> &Knots_u, const ChVectorDynamic<> &Knots_v, ChMatrixDynamic<> &R, ChMatrixDynamic<> &dRdu, ChMatrixDynamic<> &dRdv)
 Compute vector of bases R and their first derivatives. More...
 
static void BasisEvaluateDeriv (const int p_u, const int p_v, const double u, const double v, const ChMatrixDynamic<> &Weights, const ChVectorDynamic<> &Knots_u, const ChVectorDynamic<> &Knots_v, ChMatrixDynamic<> &R, ChMatrixDynamic<> &dRdu, ChMatrixDynamic<> &dRdv, ChMatrixDynamic<> &d2Rdudu, ChMatrixDynamic<> &d2Rdvdv, ChMatrixDynamic<> &d2Rdudv)
 Compute vector of bases R and their first and second derivatives. More...
 

Member Function Documentation

◆ BasisEvaluate()

static void chrono::geometry::ChBasisToolsNurbsSurfaces::BasisEvaluate ( const int  p_u,
const int  p_v,
const double  u,
const double  v,
const ChMatrixDynamic<> &  Weights,
const ChVectorDynamic<> &  Knots_u,
const ChVectorDynamic<> &  Knots_v,
ChMatrixDynamic<> &  R 
)
inlinestatic

Compute vector of bases R.

Evaluate ALL the (pu+1) * (pv+1) nonzero basis functions R of a 2D(surface) NURBS, at the needed u-v knot span, given the parameters u,v, the orders p_u p_v, the knot vector Knots_u, Knots_v, the weights Weights. Results go into the matrix R = { R11, R12, R13.... ; R21, R22, R23....; ... } where u increases along columns, v along rows.

Parameters
p_uorder u
p_vorder v
uparameter u
vparameter u
Weightsweights (u increases along columns, v along rows)
Knots_uknots u
Knots_vknots vu
Rhere return bases (u increases along columns, v along rows)

◆ BasisEvaluateDeriv() [1/2]

static void chrono::geometry::ChBasisToolsNurbsSurfaces::BasisEvaluateDeriv ( const int  p_u,
const int  p_v,
const double  u,
const double  v,
const ChMatrixDynamic<> &  Weights,
const ChVectorDynamic<> &  Knots_u,
const ChVectorDynamic<> &  Knots_v,
ChMatrixDynamic<> &  R,
ChMatrixDynamic<> &  dRdu,
ChMatrixDynamic<> &  dRdv 
)
inlinestatic

Compute vector of bases R and their first derivatives.

Evaluate ALL the (pu+1) * (pv+1) nonzero basis functions R of a 2D(surface) NURBS, at the needed u-v knot span, given the parameters u,v, the orders p_u p_v, the knot vector Knots_u, Knots_v, the weights Weights. Results go into the matrix R = { R11, R12, R13.... ; R21, R22, R23....; ... } where u increases along columns, v along rows. Same for the derivatives in dRdu and dRdv.

Parameters
p_uorder u
p_vorder v
uparameter u
vparameter u
Weightsweights (u increases along columns, v along rows)
Knots_uknots u
Knots_vknots vu
Rhere return bases (u increases along columns, v along rows)
dRduhere return du-derivatives (u increases along columns, v along rows)
dRdvhere return dv-derivatives (u increases along columns, v along rows)

◆ BasisEvaluateDeriv() [2/2]

static void chrono::geometry::ChBasisToolsNurbsSurfaces::BasisEvaluateDeriv ( const int  p_u,
const int  p_v,
const double  u,
const double  v,
const ChMatrixDynamic<> &  Weights,
const ChVectorDynamic<> &  Knots_u,
const ChVectorDynamic<> &  Knots_v,
ChMatrixDynamic<> &  R,
ChMatrixDynamic<> &  dRdu,
ChMatrixDynamic<> &  dRdv,
ChMatrixDynamic<> &  d2Rdudu,
ChMatrixDynamic<> &  d2Rdvdv,
ChMatrixDynamic<> &  d2Rdudv 
)
inlinestatic

Compute vector of bases R and their first and second derivatives.

Evaluate ALL the (pu+1) * (pv+1) nonzero basis functions R of a 2D(surface) NURBS, at the needed u-v knot span, given the parameters u,v, the orders p_u p_v, the knot vector Knots_u, Knots_v, the weights Weights. Results go into the matrix R = { R11, R12, R13.... ; R21, R22, R23....; ... } where u increases along columns, v along rows. Same for the derivatives.

Parameters
p_uorder u
p_vorder v
uparameter u
vparameter u
Weightsweights (u increases along columns, v along rows)
Knots_uknots u
Knots_vknots vu
Rhere return bases (u increases along columns, v along rows)
dRduhere return du-derivatives (u increases along columns, v along rows)
dRdvhere return dv-derivatives (u increases along columns, v along rows)
d2Rduduhere return dudu-second derivatives (u increases along columns, v along rows)
d2Rdvdvhere return dvdv-second derivatives (u increases along columns, v along rows)
d2Rdudvhere return dudv-second derivatives (u increases along columns, v along rows)

The documentation for this class was generated from the following file:
  • /builds/uwsbel/chrono/src/chrono/geometry/ChBasisToolsNurbs.h