#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.
Inheritance diagram for mm::NURBSShape< vec_t, param_vec_t >:
Collaboration diagram for mm::NURBSShape< vec_t, param_vec_t >: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.