Class xlifepp::Surface#

class Surface : public xlifepp::Geometry#

base class for 2D geometries

Subclassed by xlifepp::Ellipse, xlifepp::EllipsoidSidePart, xlifepp::ParametrizedSurface, xlifepp::Polygon, xlifepp::SplineSurface, xlifepp::TrunkSidePart

Public Functions

Surface()#

default constructor for 2D geometries

default surface is inside the bounding box [0,1]^2

inline Surface(const Surface &s)#

copy constructor

inline virtual ~Surface()#

virtual destructor

inline virtual string_t asString() const#

format as string

inline virtual Geometry *clone() const#

virtual copy constructor for Geometry

inline virtual Surface *cloneS() const#

virtual copy constructor for Surface

virtual void computeBB()#

check if points of current surface are points of a translated points of an other surface

compute approximated bounding box using parametrization if exists heavy computation, overiden by childs if possible

inline virtual void computeMB()#

computes the bounding box (in x,y,z)

computes the minimal box (default=bounding box)

inline virtual const std::vector<real_t> &h() const#

return the hsteps of the geometry

inline virtual Surface &homothetize(const Parameter &p1)#

apply a homothety on a Surface (1 key)

inline virtual Surface &homothetize(const Parameter &p1, const Parameter &p2)#

apply a homothety on a Surface (2 keys)

inline virtual Surface &homothetize(const Point &c = Point(0., 0., 0.), real_t factor = 1.)#

apply a homothety on a Surface

inline virtual Surface &homothetize(real_t factor)#

apply a homothety on a Surface

inline bool isPolygon() const#

test if a surface is a polygon

virtual bool isTranslated(const Geometry&, Point&) const#

return true if there is a translation between current geometry and an other one, T is the translation vector

inline virtual const std::vector<number_t> &n() const#

accessor to number of nodes per edge and discretized steps

inline virtual number_t n(number_t i) const#

accessor to number of nodes on the Geometry (read only)

inline const std::vector<Point> &p() const#

accessor to nodes/vertices

inline virtual Surface &pointReflect(const Parameter &p1)#

apply a point reflection on a Surface (1 key)

inline virtual Surface &pointReflect(const Point &c = Point(0., 0., 0.))#

apply a point reflection on a Surface

inline virtual Surface &reflect2d(const Parameter &p1)#

apply a reflection2d on a Surface (1 key)

inline virtual Surface &reflect2d(const Parameter &p1, const Parameter &p2)#

apply a reflection2d on a Surface (2 keys)

inline virtual Surface &reflect2d(const Point &c, real_t dx, real_t dy = 0.)#

apply a reflection2d on a Surface

inline virtual Surface &reflect2d(const Point &c = Point(0., 0.), std::vector<real_t> d = std::vector<real_t>(2, 0.))#

apply a reflection2d on a Surface

inline virtual Surface &reflect3d(const Parameter &p1)#

apply a reflection3d on a Surface (1 key)

inline virtual Surface &reflect3d(const Parameter &p1, const Parameter &p2)#

apply a reflection3d on a Surface (2 keys)

inline virtual Surface &reflect3d(const Point &c, real_t nx, real_t ny, real_t nz = 0.)#

apply a reflection3d on a Surface

inline virtual Surface &reflect3d(const Point &c = Point(0., 0., 0.), std::vector<real_t> n = std::vector<real_t>(3, 0.))#

apply a reflection3d on a Surface

inline virtual Surface &rotate2d(const Parameter &p1)#

apply a rotation 2D on a Surface (1 key)

inline virtual Surface &rotate2d(const Parameter &p1, const Parameter &p2)#

apply a rotation 2D on a Surface (2 keys)

inline virtual Surface &rotate2d(const Point &c, real_t angle = 0.)#

apply a rotation 2D on a Surface

inline virtual Surface &rotate3d(const Parameter &p1)#

apply a rotation 3D on a Surface (1 key)

inline virtual Surface &rotate3d(const Parameter &p1, const Parameter &p2)#

apply a rotation 3D on a Surface (2 keys)

inline virtual Surface &rotate3d(const Parameter &p1, const Parameter &p2, const Parameter &p3)#

apply a rotation 3D on a Surface (3 keys)

inline virtual Surface &rotate3d(const Point &c, real_t dx, real_t dy, real_t angle)#

apply a rotation on a Surface

inline virtual Surface &rotate3d(const Point &c, real_t dx, real_t dy, real_t dz, real_t angle)#

apply a rotation on a Surface

inline virtual Surface &rotate3d(const Point &c, std::vector<real_t> d = std::vector<real_t>(3, 0.), real_t angle = 0.)#

apply a rotation 3D on a Surface

inline virtual Surface &rotate3d(real_t dx, real_t dy, real_t angle)#

apply a rotation 3D on a Surface

inline virtual Surface &rotate3d(real_t dx, real_t dy, real_t dz, real_t angle)#

apply a rotation 3D on a Surface

inline virtual void setHstep(real_t hs)#

set the main h step, if not overriden do nothing

inline virtual void setNnodes(number_t i)#

set the main nnodes, if not overriden do nothing

inline virtual Surface *surface()#

access to Surface object (non const), virtual in Geometry

inline virtual const Surface *surface() const#

access to Surface object (const), virtual in Geometry

virtual Surface &transform(const Transformation &t)#

apply a geometrical transformation on a Surface

inline virtual Surface &translate(const Parameter &p1)#

apply a translation on a Surface (1 key)

inline virtual Surface &translate(real_t ux, real_t uy = 0., real_t uz = 0.)#

apply a translation on a Surface (3 reals version)

inline virtual Surface &translate(std::vector<real_t> u)#

apply a translation on a Surface (vector version)

inline virtual bool withNnodes() const#

check if geometry is defined only with _nnodes or with _hsteps option