Class xlifepp::EllipsoidSidePart#

class EllipsoidSidePart : public xlifepp::Surface#

Inheritence diagram for xlifepp::EllipsoidSidePart:

digraph { graph [bgcolor="#00000000"] node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2] edge [color="#1414CE"] "1" [label="xlifepp::EllipsoidSidePart" tooltip="xlifepp::EllipsoidSidePart" fillcolor="#BFBFBF"] "3" [label="xlifepp::Geometry" tooltip="xlifepp::Geometry"] "2" [label="xlifepp::Surface" tooltip="xlifepp::Surface"] "1" -> "2" [dir=forward tooltip="public-inheritance"] "2" -> "3" [dir=forward tooltip="public-inheritance"] }

Collaboration diagram for xlifepp::EllipsoidSidePart:

digraph { graph [bgcolor="#00000000"] node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2] edge [color="#1414CE"] "22" [label="xlifepp::Collection< string_t >" tooltip="xlifepp::Collection< string_t >"] "15" [label="xlifepp::Matrix< real_t >" tooltip="xlifepp::Matrix< real_t >"] "19" [label="xlifepp::Vector< real_t >" tooltip="xlifepp::Vector< real_t >"] "30" [label="xlifepp::Vector< xlifepp::Vector< real_t > >" tooltip="xlifepp::Vector< xlifepp::Vector< real_t > >"] "39" [label="std::list< std::pair< number_t, real_t > >" tooltip="std::list< std::pair< number_t, real_t > >"] "11" [label="std::map< number_t, std::vector< number_t > >" tooltip="std::map< number_t, std::vector< number_t > >"] "9" [label="std::map< number_t, xlifepp::Geometry * >" tooltip="std::map< number_t, xlifepp::Geometry * >"] "38" [label="std::map< string_t, number_t >" tooltip="std::map< string_t, number_t >"] "40" [label="std::list< T >" tooltip="std::list< T >"] "10" [label="std::map< K, T >" tooltip="std::map< K, T >"] "6" [label="std::vector< T >" tooltip="std::vector< T >"] "25" [label="std::vector< T >" tooltip="std::vector< T >"] "18" [label="std::vector< K >" tooltip="std::vector< K >"] "5" [label="std::vector< RealPair >" tooltip="std::vector< RealPair >"] "21" [label="std::vector< const xlifepp::Transformation * >" tooltip="std::vector< const xlifepp::Transformation * >"] "26" [label="std::vector< number_t >" tooltip="std::vector< number_t >"] "16" [label="std::vector< real_t >" tooltip="std::vector< real_t >"] "35" [label="std::vector< std::vector< GeoNumPair > >" tooltip="std::vector< std::vector< GeoNumPair > >"] "12" [label="std::vector< std::vector< int_t > >" tooltip="std::vector< std::vector< int_t > >"] "23" [label="std::vector< string_t >" tooltip="std::vector< string_t >"] "34" [label="std::vector< xlifepp::GeomDomain * >" tooltip="std::vector< xlifepp::GeomDomain * >"] "33" [label="std::vector< xlifepp::GeomElement * >" tooltip="std::vector< xlifepp::GeomElement * >"] "37" [label="std::vector< xlifepp::Parameter * >" tooltip="std::vector< xlifepp::Parameter * >"] "8" [label="std::vector< xlifepp::Point >" tooltip="std::vector< xlifepp::Point >"] "27" [label="std::vector< xlifepp::Transformation * >" tooltip="std::vector< xlifepp::Transformation * >"] "31" [label="std::vector< xlifepp::Vector< real_t > >" tooltip="std::vector< xlifepp::Vector< real_t > >"] "4" [label="xlifepp::BoundingBox" tooltip="xlifepp::BoundingBox"] "24" [label="xlifepp::Collection< T >" tooltip="xlifepp::Collection< T >"] "42" [label="xlifepp::Ellipsoid" tooltip="xlifepp::Ellipsoid"] "1" [label="xlifepp::EllipsoidSidePart" tooltip="xlifepp::EllipsoidSidePart" fillcolor="#BFBFBF"] "13" [label="xlifepp::ExtrusionData" tooltip="xlifepp::ExtrusionData"] "41" [label="xlifepp::GeoNode" tooltip="xlifepp::GeoNode"] "3" [label="xlifepp::Geometry" tooltip="xlifepp::Geometry"] "17" [label="xlifepp::Matrix< K >" tooltip="xlifepp::Matrix< K >"] "32" [label="xlifepp::Mesh" tooltip="xlifepp::Mesh"] "7" [label="xlifepp::MinimalBox" tooltip="xlifepp::MinimalBox"] "36" [label="xlifepp::Parameters" tooltip="xlifepp::Parameters"] "29" [label="xlifepp::Parametrization" tooltip="xlifepp::Parametrization"] "28" [label="xlifepp::Point" tooltip="xlifepp::Point"] "2" [label="xlifepp::Surface" tooltip="xlifepp::Surface"] "14" [label="xlifepp::Transformation" tooltip="xlifepp::Transformation"] "20" [label="xlifepp::Vector< K >" tooltip="xlifepp::Vector< K >"] "43" [label="xlifepp::Volume" tooltip="xlifepp::Volume"] "22" -> "23" [dir=forward tooltip="public-inheritance"] "22" -> "24" [dir=forward tooltip="template-instance"] "15" -> "16" [dir=forward tooltip="public-inheritance"] "15" -> "17" [dir=forward tooltip="template-instance"] "19" -> "16" [dir=forward tooltip="public-inheritance"] "19" -> "20" [dir=forward tooltip="template-instance"] "30" -> "31" [dir=forward tooltip="public-inheritance"] "30" -> "20" [dir=forward tooltip="template-instance"] "39" -> "40" [dir=forward tooltip="template-instance"] "11" -> "10" [dir=forward tooltip="template-instance"] "9" -> "10" [dir=forward tooltip="template-instance"] "38" -> "10" [dir=forward tooltip="template-instance"] "18" -> "6" [dir=forward tooltip="template-instance"] "5" -> "6" [dir=forward tooltip="template-instance"] "21" -> "6" [dir=forward tooltip="template-instance"] "26" -> "6" [dir=forward tooltip="template-instance"] "16" -> "6" [dir=forward tooltip="template-instance"] "35" -> "6" [dir=forward tooltip="template-instance"] "12" -> "6" [dir=forward tooltip="template-instance"] "23" -> "6" [dir=forward tooltip="template-instance"] "34" -> "6" [dir=forward tooltip="template-instance"] "33" -> "6" [dir=forward tooltip="template-instance"] "37" -> "6" [dir=forward tooltip="template-instance"] "8" -> "6" [dir=forward tooltip="template-instance"] "27" -> "6" [dir=forward tooltip="template-instance"] "31" -> "6" [dir=forward tooltip="template-instance"] "4" -> "5" [dir=forward tooltip="usage"] "24" -> "25" [dir=forward tooltip="public-inheritance"] "42" -> "43" [dir=forward tooltip="public-inheritance"] "42" -> "8" [dir=forward tooltip="usage"] "1" -> "2" [dir=forward tooltip="public-inheritance"] "1" -> "42" [dir=forward tooltip="usage"] "13" -> "14" [dir=forward tooltip="usage"] "13" -> "22" [dir=forward tooltip="usage"] "13" -> "26" [dir=forward tooltip="usage"] "13" -> "16" [dir=forward tooltip="usage"] "13" -> "19" [dir=forward tooltip="usage"] "13" -> "27" [dir=forward tooltip="usage"] "13" -> "28" [dir=forward tooltip="usage"] "41" -> "41" [dir=forward tooltip="usage"] "41" -> "3" [dir=forward tooltip="usage"] "3" -> "4" [dir=forward tooltip="usage"] "3" -> "7" [dir=forward tooltip="usage"] "3" -> "9" [dir=forward tooltip="usage"] "3" -> "11" [dir=forward tooltip="usage"] "3" -> "12" [dir=forward tooltip="usage"] "3" -> "13" [dir=forward tooltip="usage"] "3" -> "29" [dir=forward tooltip="usage"] "3" -> "3" [dir=forward tooltip="usage"] "3" -> "41" [dir=forward tooltip="usage"] "17" -> "18" [dir=forward tooltip="public-inheritance"] "32" -> "3" [dir=forward tooltip="usage"] "32" -> "8" [dir=forward tooltip="usage"] "32" -> "33" [dir=forward tooltip="usage"] "32" -> "34" [dir=forward tooltip="usage"] "32" -> "26" [dir=forward tooltip="usage"] "32" -> "35" [dir=forward tooltip="usage"] "32" -> "32" [dir=forward tooltip="usage"] "7" -> "8" [dir=forward tooltip="usage"] "36" -> "37" [dir=forward tooltip="usage"] "36" -> "38" [dir=forward tooltip="usage"] "29" -> "3" [dir=forward tooltip="usage"] "29" -> "19" [dir=forward tooltip="usage"] "29" -> "30" [dir=forward tooltip="usage"] "29" -> "32" [dir=forward tooltip="usage"] "29" -> "36" [dir=forward tooltip="usage"] "29" -> "39" [dir=forward tooltip="usage"] "28" -> "16" [dir=forward tooltip="public-inheritance"] "2" -> "3" [dir=forward tooltip="public-inheritance"] "2" -> "8" [dir=forward tooltip="usage"] "2" -> "16" [dir=forward tooltip="usage"] "2" -> "26" [dir=forward tooltip="usage"] "14" -> "15" [dir=forward tooltip="usage"] "14" -> "19" [dir=forward tooltip="usage"] "14" -> "21" [dir=forward tooltip="usage"] "20" -> "18" [dir=forward tooltip="public-inheritance"] "43" -> "3" [dir=forward tooltip="public-inheritance"] "43" -> "8" [dir=forward tooltip="usage"] "43" -> "26" [dir=forward tooltip="usage"] "43" -> "16" [dir=forward tooltip="usage"] }

definition of a part of ellipsoid side in R^3 (surface), defined by an ellipsoid and angles theta, phi related to ellisoid axes: theta = (1-u)theta_min + u theta_max, phi = (1-v)phi_min + v phi_max P(u,v) = P0 + (P1-P0) cos(theta) cos(phi) + (P2-P0) sin(theta) cos(phi) + (P6-P0) sin(phi) no construction via key parameter, no geometric transformation available, no mesh (p_,n_,h_ not managed) not a user geometry for the moment !!!

Public Functions

EllipsoidSidePart(const Geometry &g, real_t tmin, real_t tmax, real_t pmin, real_t pmax, EllipsoidParametrizationType = _thetaphi)#

default constructor

eplicit constructor

inline virtual ~EllipsoidSidePart()#

destructor

virtual string_t asString() const#

format as string

format as string: “EllipsoidSidePart …)”

Vector<real_t> biStereographicParametrization(const Point &pt, Parameters &pars, DiffOpType d = _id) const#

bi-stereographic parametrization

Bi-stereographic parametrization of sphere S(C,R), u in [0,1], v in [0,1] (t=2pi.v-pi) :

                        4ucos(t)               4usin(t)              4u^2-1
0 <= u <= 0.5 : x = Cx + R —–&#8212; y = Cy + R —–&#8212; z = Cz + R —&#8212; 1+4u^2 1+4u^2 4u^2+1

4(1-u)cos(t) 4(1-u)sin(t) 1-4(1-u)^2 0.5 < u <= 1 : x = Cx + R ———&#8212; y = Cy + R ———&#8212; z = Cz + R ——-&#8212; 1+4(1-u)^2 1+4(1-u)^2 1+4(1-u)^2

u = 0 -> C+(0,0,-R) u = 0.5 -> C+(Rcos(t), Rsin(t),0) u = 1 -> C+(0,0,R) 0<t<1 gives circle parallel to the xy plane 0<u<1 gives meridian parallel to perpendicular plane to xy plane

C0 Parametrization [0,1]x[0,1]->S, but not C1 at u=0.5 !

To deal with any ellipsoid E, use the transformation that maps the unit sphere S(0,1) to E: (x,y,z) -> C + x(P1-C) + y(P2-C) + z(P3-C) (P1,P2,P3 first apogees of E)

inline virtual Geometry *clone() const#

virtual copy constructor for Geometry

inline virtual EllipsoidSidePart *ellipsoidSidePart()#

access to child EllipsoidSidePart object

inline virtual const EllipsoidSidePart *ellipsoidSidePart() const#

access to child EllipsoidSidePart object (const)

Vector<real_t> funParametrization(const Point &pt, Parameters &pars, DiffOpType d = _id) const#

parametrization

EllipsoidSidePart parametrization.

virtual GeometricGeodesic geodesic(const Point &x, const Point &dx, bool wCA = false, bool wT = false)#

build a geometric geodesic starting at (x,dx) x must be located on ellipsoid and dx must in the tangent space (not checked here)

Vector<real_t> invBiStereographicParametrization(const Point &pt, Parameters &pars, DiffOpType d = _id) const#

inv of bi-stereographic parametrization

inverse of bi-stereographic parametrization

Vector<real_t> invParametrization(const Point &pt, Parameters &pars, DiffOpType d = _id) const#

inverse of parametrization

inverse of EllipsoidSidePart parametrization (u,v)=invf(p)

Vector<real_t> invStereographicParametrization(const Point &pt, Parameters &pars, DiffOpType d = _id) const#

inv of stereographic parametrization

inverse of stereographic parametrization: u = (x-Cx)/(R+z-Cz) v = (y-Cy)/(R+z-Cz)

Vector<real_t> invThetaPhiParametrization(const Point &pt, Parameters &pars, DiffOpType d = _id) const#

inv of theta-phi parametrization

inverse of EllipsoidSidePart parametrization (u,v)=invf(p)

bool isFull() const#

true if full ellisoid side

Vector<real_t> stereographicParametrization(const Point &pt, Parameters &pars, DiffOpType d = _id) const#

stereographic parametrization

Stereographic parametrization of sphere S(C,R), (u,v) in ]0,1[x]0,1[ : (u,v) -> (s,t) = (tan(pi(u-0.5),tan(pi(v-0.5)) maps ]0,1[x]0,1[ to R2 Stereographic parametrization of sphere S(C,R) (s,t) in R2 2s 2t 1-s^2-t^2 x = Cx + R ——&#8212; y = Cy + R ——&#8212; z = Cz + R ——&#8212; 1+s^2+t^2 1+s^2+t^2 1+s^2+t^2.

(s,t) = (0,0) -> C+(0,0,R) (s,t) = (cos(a),sin(a)) -> C+(Rcos(a), Rsin(a),0) |(s,t)|-> +inf -> C+(0,0,-R) C-inf parametrization R^2 -> S/south

To deal with any ellipsoid E, use the transformation that maps the unit sphere S(0,1) to E: (x,y,z) -> C + x(P1-C) + y(P2-C) + z(P3-C) (P1,P2,P3 first apogees of E)

Vector<real_t> thetaPhiParametrization(const Point &pt, Parameters &pars, DiffOpType d = _id) const#

theta-phi parametrization

(theta-phi) parametrization of EllipsoidSidePart theta = (1-u)theta_min + u theta_max, phi = (1-v)phi_min + v phi_max P - P0 = (P1-P0) cos(theta) cos(phi) + (P2-P0) sin(theta) cos(phi) + (P6-P0) sin(phi)