|
Medusa
1.1
Coordinate Free Mehless Method implementation
|
|
Go to the documentation of this file. 1 #ifndef MEDUSA_BITS_DOMAINS_NURBSPATCH_FWD_HPP_
2 #define MEDUSA_BITS_DOMAINS_NURBSPATCH_FWD_HPP_
22 namespace nurbs_patch_internal {
33 template <
typename vec_t,
typename param_vec_t>
41 template<
size_t dim,
typename T>
71 template <
typename vec_t,
typename param_vec_t>
88 std::array<int, param_dim>
p;
105 const std::array<int, param_dim>& in_p);
116 const std::array<int, param_dim>& in_p);
145 vec_t
evaluate(const param_vec_t& t) const;
182 const param_vec_t& t) const;
225 #endif // MEDUSA_BITS_DOMAINS_NURBSPATCH_FWD_HPP_
param_vec_t getPatchParameterFromBoundaryParameter(const Vec< scalar_t, param_dim - 1 > &t, int i, scalar_t epsilon=0) const
Get vector from the parametric domain of the NURBS patch from the parameter of the NURBS patch repres...
Root namespace for the whole library.
Scalar scalar_t
Type of the elements, alias of Scalar.
Eigen::Matrix< scalar_t, dim, 1, Eigen::ColMajor|Eigen::AutoAlign, dim, 1 > Vec
Fixed size vector type, representing a mathematical 1d/2d/3d vector.
proj_vec_t evaluateWeighted(const param_vec_t &t) const
Evaluate NURBS patch in one point.
NURBSPatch(const NdRange< proj_vec_t > &wcp, const std::array< Range< scalar_t >, param_dim > &ks, const std::array< int, param_dim > &in_p)
Construct NURBS patch with weighted control points.
vec_t evaluate(const param_vec_t &t, scalar_t *w) const
Evaluate NURBS patch in one point along the second dimension.
Eigen::Matrix< scalar_t, dim, param_dim > jacobian(const param_vec_t &t, const vec_t &pt, const scalar_t &w) const
Evaluate NURBS jacobian matrix in one point.
@ dim
Number of elements of this matrix.
Internal structure of NURBSPatch that helps with partial class specialization.
Range< typename NestedRange< dim - 1, T >::type > type
Type of the multidimensional Range.
@ param_dim
Dimensionality of parametric space.
Vec< scalar_t, param_dim - 1 > getBoundaryParameterFromPatchParameter(const param_vec_t &t, int i) const
Get parameter from the parametric domain of the NURBS patch representing the boundary of the NURBS pa...
std::array< int, param_dim > p
Underlying B-spline orders.
Class representing a single NURBS patch in an arbitrary dimensional space, defined on an arbitrary di...
vec_t::scalar_t scalar_t
Scalar type.
void computeDerivativeStructure()
Calculate data needed for derivative evaluation.
@ proj_dim
Dimensionality of space before projection.
Range< NURBSPatch< vec_t, Vec< scalar_t, param_dim - 1 > > > getBoundaries() const
Get all boundaries of the NURBS patch as a Range of NURBS patches.
BoxShape< param_vec_t > getDomain() const
Get domain of the NURBS patch.
std::array< Range< scalar_t >, param_dim > knots
Array of Ranges of knots (knot vector).
std::unique_ptr< std::array< NURBSPatch< vec_t, param_vec_t >, param_dim > > der_structure
NURBS surfaces needed for derivative calculation.
Class for working with box shaped domains.
std::pair< vec_t, Eigen::Matrix< scalar_t, dim, param_dim > > evaluatePointAndJacobian(const param_vec_t &t) const
Evaluate NURBS and its jacobian matrix in one parameter.
NURBSPatch< vec_t, param_vec_t > & operator=(const NURBSPatch< vec_t, param_vec_t > &) noexcept
Copy assignment.
Struct for declaring a nested Range.
NdRange< proj_vec_t > weighted_control_points
Multidimensional Range of control points.
@ dim
Dimensionality of space after projection.
Vec< scalar_t, proj_dim > proj_vec_t
Vector type before projection.
typename nurbs_patch_internal::NestedRange< param_dim, T >::type NdRange
Range of param_dim dimensions.
Matrix(const Scalar &s)
Construct matrix from scalar. Enabled only for fixed size matrices.
An extension of std::vector<T> to support additional useful operations.