#include <BoxShape_fwd.hpp>
Class for working with box shaped domains.
This subclass of DomainShape implements the interface for working with geometric box shaped domains (generalisation of a rectangle in arbitrary number of dimensions).
Usage example:
Definition at line 28 of file BoxShape_fwd.hpp.
Public Member Functions | |
BoxShape (vec_t beg, vec_t end) | |
Constructs a n dimensional box shaped domain defined by two n dimensional points - vertices at ends of the longest diagonal. More... | |
const vec_t & | beg () const |
Returns the first point defining the box. More... | |
const vec_t & | end () const |
Returns the second point defining the box. More... | |
bool | contains (const vec_t &point) const override |
Return true if point is not more than margin() outside the domain. More... | |
std::pair< vec_t, vec_t > | bbox () const override |
Return the bounding box of the domain. More... | |
DomainDiscretization< vec_t > | discretizeBoundaryWithStep (scalar_t step, int type) const override |
Returns a discretization of the boundary of this shape with approximately uniform distance step between nodes. More... | |
DomainDiscretization< vec_t > | discretizeWithStep (scalar_t step, int internal_type, int boundary_type) const override |
Returns a discretization of this shape with approximately uniform distance step between nodes. More... | |
DomainDiscretization< vec_t > | discretizeBoundaryWithDensity (const std::function< scalar_t(vec_t)> &dr, int type) const override |
Discretizes boundary with given density and fill engine. More... | |
DomainDiscretization< vec_t > | discretizeBoundary (const Vec< int, dim > &counts, int type=0) const |
Uniformly discretizes underlying domain boundary. More... | |
DomainDiscretization< vec_t > | discretize (const Vec< int, dim > &counts, int internal_type=0, int boundary_type=0) const |
Uniformly discretizes underlying domain. More... | |
BoxShape< vec_t > * | clone () const override |
Polymorphic clone pattern. More... | |
std::ostream & | print (std::ostream &os) const override |
Output information about this shape to given output stream os . 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 bool | hasContains () const |
Return true if shape has contains() method implemented. 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... | |
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 } |
Store dimension of the domain. More... | |
typedef vec_t | vector_t |
Vector data type used in computations. More... | |
typedef vec_t::Scalar | scalar_t |
Scalar data type used in computation. More... | |
Protected Attributes | |
scalar_t | margin_ |
Tolerance for the geometric operation of the domain. More... | |
Private Attributes | |
vec_t | beg_ |
Smaller of the edge points. More... | |
vec_t | end_ |
Larger of the edge points. More... | |
|
inherited |
Store dimension of the domain.
Enumerator | |
---|---|
dim | Dimensionality of the domain. |
Definition at line 57 of file DomainShape_fwd.hpp.
mm::BoxShape< vec_t >::BoxShape | ( | vec_t | beg, |
vec_t | end | ||
) |
Constructs a n dimensional box shaped domain defined by two n dimensional points - vertices at ends of the longest diagonal.
beg | Position vector of first point defining the box. (Vertex at lower end of longest diagonal with every coordinate lower than end vertex). |
end | Position vector of second point defining the box. (Vertex at higher end of longest diagonal with every coordinate higher than beg vertex). |
Definition at line 21 of file BoxShape.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 56 of file BoxShape_fwd.hpp.
|
inline |
Returns the first point defining the box.
Definition at line 50 of file BoxShape_fwd.hpp.
|
inlineoverridevirtual |
Polymorphic clone pattern.
Implements mm::DomainShape< vec_t >.
Definition at line 92 of file BoxShape_fwd.hpp.
|
overridevirtual |
Return true if point
is not more than margin()
outside the domain.
Implements mm::DomainShape< vec_t >.
Definition at line 31 of file BoxShape.hpp.
DomainDiscretization< vec_t > mm::BoxShape< vec_t >::discretize | ( | const Vec< int, dim > & | counts, |
int | internal_type = 0 , |
||
int | boundary_type = 0 |
||
) | const |
Uniformly discretizes underlying domain.
It fills positions with appropriate coordinates and given type.
counts | Vector of same dimension as the domain. Specifies how many discretization points to use in each dimension. |
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. |
Definition at line 320 of file BoxShape.hpp.
DomainDiscretization< vec_t > mm::BoxShape< vec_t >::discretizeBoundary | ( | const Vec< int, dim > & | counts, |
int | type = 0 |
||
) | const |
Uniformly discretizes underlying domain boundary.
It fills positions with appropriate coordinates and types with distinctive negative integers for each boundary of the box. Unless type is user specified, all points where first coordinate (x) is constant have types -1 and -2, points where second coordinate (y) is constant have types -3 and -4 and so on. How types are assigned by default in 2D and 3D is presented on the included graphic.
counts | Vector of same dimension as the domain. Specifies how many discretization points to use in each dimension. |
type | User supplied type of boundary nodes. Must be non-positive. If any types is 0, the default types as shown above are used. |
Definition at line 49 of file BoxShape.hpp.
|
inlineinherited |
Overload with default type.
Definition at line 189 of file DomainShape_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 209 of file BoxShape.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.
|
overridevirtual |
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 from mm::DomainShape< vec_t >.
Definition at line 41 of file BoxShape.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.
|
overridevirtual |
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 from mm::DomainShape< vec_t >.
Definition at line 312 of file BoxShape.hpp.
|
inline |
Returns the second point defining the box.
Definition at line 52 of file BoxShape_fwd.hpp.
|
inlinevirtualinherited |
Return true if shape has contains()
method implemented.
Reimplemented in mm::NURBSShape< vec_t, param_vec_t >, mm::RotatedShape< vec_t >, mm::ShapeDifference< vec_t >, mm::ShapeUnion< vec_t >, mm::STLShape< vec_t >, mm::TranslatedShape< vec_t >, and mm::UnknownShape< vec_t >.
Definition at line 96 of file DomainShape_fwd.hpp.
|
inlineinherited |
Returns current margin.
Definition at line 72 of file DomainShape_fwd.hpp.
|
inlineinherited |
|
inlineinherited |
Operator form of DomainShape::subtract.
Definition at line 86 of file DomainShape_fwd.hpp.
|
overridevirtual |
Output information about this shape to given output stream os
.
Implements mm::DomainShape< vec_t >.
Definition at line 203 of file BoxShape.hpp.
|
virtualinherited |
Project point to boundary using bisection along the line define by unit_normal
.
Definition at line 21 of file DomainShape.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.
|
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 |
Smaller of the edge points.
Definition at line 29 of file BoxShape_fwd.hpp.
|
private |
Larger of the edge points.
Definition at line 30 of file BoxShape_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.