#include <NURBSShape_fwd.hpp>
Class representing a shape made out of NURBS patches in an arbitrary dimensional space.
Usage example:
vec_t | Vector type. |
Definition at line 52 of file NURBSShape_fwd.hpp.
Public Member Functions | |
NURBSShape (const Range< NURBSPatch< vec_t, param_vec_t >> &patches_in) | |
Construct NURBSShape from a Range of patches. More... | |
NURBSShape (Range< NURBSPatch< vec_t, param_vec_t >> &&patches_in) | |
Move constructor for constructing NURBSShape from a Range of patches. More... | |
bool | contains (const vec_t &) const override |
Return true if point is not more than margin() outside the domain. More... | |
bool | hasContains () const override |
Return true if shape has contains() method implemented. More... | |
std::pair< vec_t, vec_t > | bbox () const override |
Return the bounding box of the domain. More... | |
DomainDiscretization< vec_t > | discretizeBoundaryWithDensity (const std::function< scalar_t(vec_t)> &, int) const override |
Discretizes boundary with given density and fill engine. More... | |
std::ostream & | print (std::ostream &ostream) const override |
Output information about this shape to given output stream os . More... | |
NURBSShape * | clone () const override |
Polymorphic clone pattern. More... | |
NURBSShape & | maxPoints (int max_points) |
Maximal number of points generated in surface fill. More... | |
NURBSShape & | seed (int seed) |
Set custom seed for the random number generator. More... | |
NURBSShape & | proximityTolerance (scalar_t zeta) |
Set proximity tolerance in surface fill. More... | |
NURBSShape & | numSamples (int n_samples) |
Controls the number of generated candidates from each point in surface fill. More... | |
NURBSShape & | boundaryProximity (scalar_t epsilon) |
Calculate boundary normals epsilon times the size of domain away from the boundary. More... | |
scalar_t | margin () const |
Returns current margin. More... | |
virtual void | setMargin (scalar_t margin) |
Sets domain margin to margin . More... | |
void | toggleMargin () |
Toggles the margin from positive to negative. More... | |
ShapeUnion< vec_t > | add (const DomainShape &other) const |
Returns a shape representing a union of *this and other . More... | |
ShapeUnion< vec_t > | operator+ (const DomainShape &other) const |
Operator form of DomainShape::add. More... | |
ShapeDifference< vec_t > | subtract (const DomainShape &other) const |
Returns a shape representing a difference of *this and other . More... | |
ShapeDifference< vec_t > | operator- (const DomainShape &other) const |
Operator form of DomainShape::subtract. More... | |
virtual std::pair< bool, vec_t > | projectPointToBoundary (const vec_t &point, const vec_t &unit_normal) const |
Project point to boundary using bisection along the line define by unit_normal . More... | |
virtual DomainDiscretization< vec_t > | discretizeBoundaryWithStep (scalar_t step, int type) const |
Returns a discretization of the boundary of this shape with approximately uniform distance step between nodes. More... | |
DomainDiscretization< vec_t > | discretizeBoundaryWithStep (scalar_t step) const |
Returns a discretization of the boundary of this shape with approximately uniform distance step between nodes. More... | |
virtual DomainDiscretization< vec_t > | discretizeWithStep (scalar_t step, int internal_type, int boundary_type) const |
Returns a discretization of this shape with approximately uniform distance step between nodes. More... | |
DomainDiscretization< vec_t > | discretizeWithStep (scalar_t step) const |
discretizeWithStep but with default types as assigned by the shape. More... | |
virtual DomainDiscretization< vec_t > | discretizeWithDensity (const std::function< scalar_t(vec_t)> &dr, int internal_type, int boundary_type) const |
Returns a discretization of the domain with spatially variable step. More... | |
template<typename func_t , typename fill_t > | |
DomainDiscretization< vec_t > | discretizeWithDensity (const func_t &dr, const fill_t &fill, int internal_type, int boundary_type) const |
Overload for fill engine. More... | |
DomainDiscretization< vec_t > | discretizeWithDensity (const std::function< scalar_t(vec_t)> &dr) const |
Overload with default types. More... | |
template<typename func_t , typename fill_t > | |
DomainDiscretization< vec_t > | discretizeWithDensity (const func_t &dr, const fill_t &fill) const |
Overload for fill engine with default types. More... | |
DomainDiscretization< vec_t > | discretizeBoundaryWithDensity (const std::function< scalar_t(vec_t)> &dr) const |
Overload with default type. More... | |
TranslatedShape< vec_t > | translate (const vec_t &a) |
Translate the shape by given vector a . More... | |
RotatedShape< vec_t > | rotate (const Eigen::Matrix< scalar_t, dim, dim > &Q) |
Transform the shape by given orthogonal matrix Q . More... | |
RotatedShape< vec_t > | rotate (scalar_t angle) |
2D version of rotate accepting an angle. More... | |
Public Types | |
enum | { dim = vec_t::dim, proj_dim = dim + 1, param_dim = param_vec_t::dim } |
Store dimensionality. More... | |
typedef vec_t::scalar_t | scalar_t |
Scalar type. More... | |
typedef Vec< scalar_t, proj_dim > | proj_vec_t |
Vector type before projection. More... | |
enum | { dim = vec_t::dim } |
Store dimension of the domain. More... | |
typedef vec_t | vector_t |
Vector data type used in computations. More... | |
Friends | |
struct | nurbs_shape_internal::NURBSShapeHelper< vec_t, param_vec_t > |
Protected Attributes | |
scalar_t | margin_ |
Tolerance for the geometric operation of the domain. More... | |
Private Attributes | |
Range< NURBSPatch< vec_t, param_vec_t > > | patches |
Range of NURBS patches. More... | |
int | max_points = 5000000 |
Maximal number of points generated in surface fill. More... | |
int | seed_ |
Seed for the random number generator. More... | |
int | n_samples = 15 |
Number of samples in surface fill. More... | |
scalar_t | zeta = 1 - 1e-10 |
Proximity tolerance in surface fill. More... | |
scalar_t | epsilon = 0 |
Evaluate normals slightly away from the boundary. More... | |
|
inherited |
Store dimension of the domain.
Enumerator | |
---|---|
dim | Dimensionality of the domain. |
Definition at line 57 of file DomainShape_fwd.hpp.
anonymous enum |
Store dimensionality.
Enumerator | |
---|---|
dim | Dimensionality of space after projection. |
proj_dim | Dimensionality of space before projection. |
param_dim | Dimensionality of parametric space. |
Definition at line 58 of file NURBSShape_fwd.hpp.
mm::NURBSShape< vec_t, param_vec_t >::NURBSShape | ( | const Range< NURBSPatch< vec_t, param_vec_t >> & | patches_in | ) |
Construct NURBSShape from a Range of patches.
Definition at line 22 of file NURBSShape.hpp.
mm::NURBSShape< vec_t, param_vec_t >::NURBSShape | ( | Range< NURBSPatch< vec_t, param_vec_t >> && | patches_in | ) |
Move constructor for constructing NURBSShape from a Range of patches.
Definition at line 33 of file NURBSShape.hpp.
|
inherited |
Returns a shape representing a union of *this
and other
.
Definition at line 66 of file DomainShape.hpp.
|
inlineoverridevirtual |
Return the bounding box of the domain.
Bounding box is returned in format bbox() == {{mx, my, ...}, {MX, MY, ...}}
, such that mx <= Mx
and my <= My
etc.\ and that the whole domain is contained in the cuboid [mx, my, ...] x [Mx, My, ...]
.
Implements mm::DomainShape< vec_t >.
Definition at line 82 of file NURBSShape_fwd.hpp.
NURBSShape< vec_t, param_vec_t > & mm::NURBSShape< vec_t, param_vec_t >::boundaryProximity | ( | scalar_t | epsilon | ) |
Calculate boundary normals epsilon
times the size of domain away from the boundary.
By default epsilon = 0
. This can be useful if normals are undefined on the boundary. It should hold that 0 < epsilon < 1
.
Definition at line 59 of file NURBSShape.hpp.
|
inlineoverridevirtual |
Polymorphic clone pattern.
Implements mm::DomainShape< vec_t >.
Definition at line 95 of file NURBSShape_fwd.hpp.
|
inlineoverridevirtual |
Return true if point
is not more than margin()
outside the domain.
Implements mm::DomainShape< vec_t >.
Definition at line 78 of file NURBSShape_fwd.hpp.
|
overridevirtual |
Discretizes boundary with given density and fill engine.
If type is 0, the underlying shape provides the default.
Implements mm::DomainShape< vec_t >.
Definition at line 44 of file NURBSShape.hpp.
|
inlineinherited |
Overload with default type.
Definition at line 189 of file DomainShape_fwd.hpp.
|
inlineinherited |
Returns a discretization of the boundary of this shape with approximately uniform distance step
between nodes.
Node type are decided by the underlying shape.
Definition at line 126 of file DomainShape_fwd.hpp.
|
inlinevirtualinherited |
Returns a discretization of the boundary of this shape with approximately uniform distance step
between nodes.
step
must be positive. Added nodes are of type type
, which must be non-positive. Value 0 indicates that types are dependant on the implementation of concrete shape.
Reimplemented in mm::PolygonShape< vec_t >, mm::TranslatedShape< vec_t >, mm::ShapeUnion< vec_t >, mm::BoxShape< vec_t >, mm::ShapeDifference< vec_t >, and mm::BallShape< vec_t >.
Definition at line 118 of file DomainShape_fwd.hpp.
|
inlineinherited |
Overload for fill engine with default types.
Definition at line 177 of file DomainShape_fwd.hpp.
|
inlineinherited |
Overload for fill engine.
Definition at line 162 of file DomainShape_fwd.hpp.
|
inlineinherited |
Overload with default types.
Definition at line 170 of file DomainShape_fwd.hpp.
|
virtualinherited |
Returns a discretization of the domain with spatially variable step.
dr | Function giving desired internodal distance at each point. |
internal_type | User supplied type of internal nodes. Must be non-negative. |
boundary_type | User supplied type of boundary nodes. Must be non-positive. If any of the types is 0, the underlying shape provides the default. |
dr
. Reimplemented in mm::TranslatedShape< vec_t >, mm::ShapeUnion< vec_t >, and mm::ShapeDifference< vec_t >.
Definition at line 77 of file DomainShape.hpp.
|
inlineinherited |
discretizeWithStep but with default types as assigned by the shape.
Definition at line 144 of file DomainShape_fwd.hpp.
|
inlinevirtualinherited |
Returns a discretization of this shape with approximately uniform distance step
between nodes.
step
must be positive.
step | Desired internodal distance. |
internal_type | User supplied type of internal nodes. Must be non-negative. |
boundary_type | User supplied type of boundary nodes. Must be non-positive. If any of the types is 0, the underlying shape provides the default. |
Reimplemented in mm::TranslatedShape< vec_t >, mm::ShapeUnion< vec_t >, mm::BoxShape< vec_t >, mm::ShapeDifference< vec_t >, and mm::BallShape< vec_t >.
Definition at line 137 of file DomainShape_fwd.hpp.
|
inlineoverridevirtual |
Return true if shape has contains()
method implemented.
Reimplemented from mm::DomainShape< vec_t >.
Definition at line 80 of file NURBSShape_fwd.hpp.
|
inlineinherited |
Returns current margin.
Definition at line 72 of file DomainShape_fwd.hpp.
|
inline |
Maximal number of points generated in surface fill.
Definition at line 103 of file NURBSShape_fwd.hpp.
|
inline |
Controls the number of generated candidates from each point in surface fill.
For 2-D it is the actual number of candidates, for 3-D it is the number of candidates on the great circle. Its value is ignored in 1-D.
Definition at line 119 of file NURBSShape_fwd.hpp.
|
inlineinherited |
|
inlineinherited |
Operator form of DomainShape::subtract.
Definition at line 86 of file DomainShape_fwd.hpp.
|
inlineoverridevirtual |
Output information about this shape to given output stream os
.
Implements mm::DomainShape< vec_t >.
Definition at line 91 of file NURBSShape_fwd.hpp.
|
virtualinherited |
Project point to boundary using bisection along the line define by unit_normal
.
Definition at line 21 of file DomainShape.hpp.
NURBSShape< vec_t, param_vec_t > & mm::NURBSShape< vec_t, param_vec_t >::proximityTolerance | ( | scalar_t | zeta | ) |
Set proximity tolerance in surface fill.
A new candidate mush be at least zeta*h(p)
away. It should hold that 0 < zeta < 1
.
Definition at line 51 of file NURBSShape.hpp.
|
inherited |
Transform the shape by given orthogonal matrix Q
.
Definition at line 98 of file DomainShape.hpp.
|
inherited |
2D version of rotate accepting an angle.
Definition at line 89 of file DomainShape.hpp.
|
inline |
Set custom seed for the random number generator.
Definition at line 106 of file NURBSShape_fwd.hpp.
|
inlinevirtualinherited |
Sets domain margin to margin
.
Reimplemented in mm::PolygonShape< vec_t >.
Definition at line 75 of file DomainShape_fwd.hpp.
|
inherited |
Returns a shape representing a difference of *this
and other
.
Definition at line 71 of file DomainShape.hpp.
|
inlineinherited |
Toggles the margin from positive to negative.
Definition at line 77 of file DomainShape_fwd.hpp.
|
inherited |
Translate the shape by given vector a
.
Definition at line 84 of file DomainShape.hpp.
|
private |
Evaluate normals slightly away from the boundary.
Definition at line 69 of file NURBSShape_fwd.hpp.
|
protectedinherited |
Tolerance for the geometric operation of the domain.
The domain should behave as if it was margin_
thicker. Default margin is 1e-10
.
Definition at line 64 of file DomainShape_fwd.hpp.
|
private |
Maximal number of points generated in surface fill.
Definition at line 65 of file NURBSShape_fwd.hpp.
|
private |
Number of samples in surface fill.
Definition at line 67 of file NURBSShape_fwd.hpp.
|
private |
Range of NURBS patches.
Definition at line 64 of file NURBSShape_fwd.hpp.
|
private |
Seed for the random number generator.
Definition at line 66 of file NURBSShape_fwd.hpp.
|
private |
Proximity tolerance in surface fill.
Definition at line 68 of file NURBSShape_fwd.hpp.