![]() |
Bayeux
3.4.1
Core Foundation library for SuperNEMO
|
A general quadric a 3D space. More...
#include <bayeux/geomtools/quadric.h>
Public Types | |
enum | coef_index { A = 9, B = 8, C = 7, D = 6, E = 5, F = 4, G = 3, H = 2, I = 1, J = 0, NCOEFFS = 10 } |
![]() | |
enum | faces_mask_type { FACE_NONE = face_identifier::FACE_BITS_NONE, FACE_UNIQUE = datatools::bit_mask::bit00, FACE_UP = FACE_UNIQUE, FACE_DOWN = datatools::bit_mask::bit01, FACE_ALL = FACE_UNIQUE } |
The up/down identifier of the face. More... | |
![]() | |
enum | dimensional_type { DIMENSIONAL_0 = 0, DIMENSIONAL_1 = 1, DIMENSIONAL_2 = 2, DIMENSIONAL_3 = 3 } |
Known dimensions. More... | |
typedef datatools::handle< i_object_3d > | handle_type |
A handle to a 3D object. More... | |
typedef std::map< std::string, object_entry > | handle_dict_type |
Dictionary of handle of 3D object entries. More... | |
![]() | |
enum | ostream_type { OSTREAM_COUT = 1, OSTREAM_CERR = 2, OSTREAM_CLOG = 3 } |
Enumeration for standard output streams. More... | |
![]() | |
enum | wires_rendering_option_type { WR_NONE = 0, WR_BASE_GRID = datatools::bit_mask::bit00, WR_BASE_GRID_LOW_DENSITY = (WR_BASE_GRID << 1), WR_BASE_GRID_HIGH_DENSITY = (WR_BASE_GRID << 2), WR_BASE_GRID_VERY_HIGH_DENSITY = (WR_BASE_GRID << 3), WR_BASE_GRID_HUGE_DENSITY = (WR_BASE_GRID << 4), WR_BASE_LOW_ANGLE_SAMPLING = (WR_BASE_GRID << 5), WR_BASE_HIGH_ANGLE_SAMPLING = (WR_BASE_GRID << 6), WR_BASE_VERY_HIGH_ANGLE_SAMPLING = (WR_BASE_GRID << 7), WR_BASE_HUGE_ANGLE_SAMPLING = (WR_BASE_GRID << 8), WR_BASE_UNUSED_09 = (WR_BASE_GRID << 9), WR_BASE_UNUSED_10 = (WR_BASE_GRID << 10), WR_BASE_UNUSED_11 = (WR_BASE_GRID << 11), WR_BASE_UNUSED_12 = (WR_BASE_GRID << 12), WR_BASE_UNUSED_13 = (WR_BASE_GRID << 13), WR_BASE_BOUNDINGS = (WR_BASE_GRID << 14), WR_BASE_EXPLODE = (WR_BASE_GRID << 15), WR_BASE_LAST = (WR_BASE_EXPLODE), WR_BASE_MASK = datatools::bit_mask::nbits16 } |
Wires rendering optional flags. More... | |
enum | sampling_level_type { SL_NONE = 0, SL_LOW = 1, SL_NORMAL = 2, SL_HIGH = 3, SL_VERY_HIGH = 4, SL_HUGE = 5 } |
Sampling levels. More... | |
Public Member Functions | |
virtual std::string | get_shape_name () const |
Return the shape name. More... | |
bool | is_valid () const |
Check if the plane is valid. More... | |
void | initialize (const datatools::properties &, const handle_dict_type *=0) |
Initialize from properties and a dictionary of 3D-objects. More... | |
void | reset () |
Reset. More... | |
quadric () | |
Default constructor. More... | |
void | set_coefficient (coef_index, double) |
Set the coefficient at given rank. More... | |
double | get_coefficient (coef_index) const |
Return the coefficient at given rank. More... | |
virtual double | eval_f (double x_, double y_, double z_) const |
Compute the quadric formula f(x,y,z) at given 3D point. More... | |
virtual double | eval_dfdx (double x_, double y_, double z_) const |
Compute the quadric df/dx derivative at given 3D point. More... | |
virtual double | eval_dfdy (double x_, double y_, double z_) const |
Compute the quadric df/dy derivative at given 3D point. More... | |
virtual double | eval_dfdz (double x_, double y_, double z_) const |
Compute the quadric df/dz derivative at given 3D point. More... | |
void | eval_gradient (double x_, double y_, double z_, double &dfdx_, double &dfdy_, double &dfdz_) const |
Compute the quadric gradient (df/dx, df/dy, df/dz) at given 3D point. More... | |
void | eval_gradient (const geomtools::vector_3d &position_, geomtools::vector_3d &gradient_) const |
Compute the quadric gradient (df/dx, df/dy, df/dz) at given 3D point. More... | |
double | eval_f (const geomtools::vector_3d &position_) const |
Compute the quadric formula at given 3D point. More... | |
double | distance (const geomtools::vector_3d &position_) const |
Compute the distance from a position to the plane. More... | |
geomtools::vector_3d | orthogonal_projection (const geomtools::vector_3d &position_, double skin_=GEOMTOOLS_PROPER_TOLERANCE) const |
Compute the orthogonal projection from a position. More... | |
geomtools::vector_3d | projection (const geomtools::vector_3d &position_, const geomtools::vector_3d &direction_, double skin_=GEOMTOOLS_PROPER_TOLERANCE) const |
Compute the projection from a position along a direction. More... | |
virtual bool | is_on_surface (const geomtools::vector_3d &position_, double skin_=GEOMTOOLS_PROPER_TOLERANCE) const |
Check if the point. More... | |
virtual geomtools::vector_3d | get_normal_on_surface (const geomtools::vector_3d &position_, bool check_=true, double skin_=GEOMTOOLS_PROPER_TOLERANCE) const |
virtual bool | find_intercept (const geomtools::vector_3d &from_, const geomtools::vector_3d &direction_, face_intercept_info &intercept_, double tolerance_=GEOMTOOLS_PROPER_TOLERANCE) const |
void | generate_wires_self (wires_type &, uint32_t options_=0) const |
virtual void | tree_dump (std::ostream &out_=std::clog, const std::string &title_="", const std::string &indent_="", bool inherit_=false) const |
Smart print. More... | |
![]() | |
virtual bool | has_number_of_sides () const |
Check if the 2D shape knows its number of associated sides. More... | |
virtual unsigned int | get_number_of_sides () const |
Return the number of associated sides. More... | |
virtual bool | has_perimeter (uint32_t flags_=ALL_PIECES) const |
Check if the 2D shape known its perimeter. More... | |
virtual double | get_perimeter (uint32_t flags_=ALL_PIECES) const |
Return the perimeter. More... | |
virtual bool | has_surface (uint32_t flags_=ALL_PIECES) const |
Check if the 2D shape surface is defined. More... | |
virtual double | get_surface (uint32_t flags_=ALL_PIECES) const |
Return the surface. More... | |
int | get_dimensional () const |
Return the dimension of the object. More... | |
i_shape_2d () | |
Default constructor. More... | |
i_shape_2d (double tolerance_) | |
Constructor. More... | |
i_shape_2d (double tolerance_, double angular_tolerance_) | |
Constructor. More... | |
virtual | ~i_shape_2d () |
Destructor. More... | |
![]() | |
datatools::logger::priority | get_logging_priority () const |
Return the logging priority threshold. More... | |
void | set_logging_priority (datatools::logger::priority) |
Set the logging priority threshold. More... | |
bool | has_wires_drawer () const |
Check is a wires drawer is available. More... | |
void | set_wires_drawer (i_wires_3d_rendering &wires_drawer_) |
Set a wires drawer. More... | |
void | reset_wires_drawer () |
Reset the wires drawer. More... | |
i_wires_3d_rendering & | grab_wires_drawer () |
Return a wires drawer. More... | |
const i_wires_3d_rendering & | get_wires_drawer () const |
Return a wires drawer. More... | |
double | compute_tolerance (double tolerance_) const |
Return the distance tolerance. More... | |
double | compute_angular_tolerance (double angular_tolerance_) const |
Return the angular tolerance. More... | |
double | get_tolerance () const |
Return the distance tolerance. More... | |
void | set_tolerance (double tolerance_) |
Set the distance tolerance. More... | |
double | get_angular_tolerance () const |
Return the angular tolerance. More... | |
void | set_angular_tolerance (double tolerance_) |
Set the angular tolerance. More... | |
virtual bool | is_composite () const |
Check if the object is composite. More... | |
i_object_3d () | |
Default constructor. More... | |
i_object_3d (double tolerance_) | |
Constructor on length tolerance. More... | |
i_object_3d (double tolerance_, double angular_tolerance_) | |
Constructor on length tolerance. More... | |
i_object_3d (const i_object_3d &) | |
Copy constructor. More... | |
i_object_3d & | operator= (const i_object_3d &) |
Assignment operator. More... | |
virtual | ~i_object_3d () |
Destructor. More... | |
void | initialize_simple () |
Initialize the 3D object. More... | |
![]() | |
i_serializable () | |
Default constructor. More... | |
virtual | ~i_serializable () |
Destructor. More... | |
virtual const std::string & | get_serial_tag () const =0 |
Return the serialization string identifier of the class. More... | |
![]() | |
i_tree_dumpable () | |
Constructor. More... | |
virtual | ~i_tree_dumpable () |
Destructor. More... | |
virtual void | print_tree (std::ostream &out_=std::clog, const boost::property_tree::ptree &options_=empty_options()) const |
Main new interface method for printing. More... | |
void | print_tree_json (std::ostream &out_=std::clog, const std::string &json_options_="") const |
Printing with jsonized options. More... | |
void | print_tree_json (std::ostream &out_=std::clog, const char *json_options_=nullptr) const |
Printing with jsonized options. More... | |
void | tree_dump_id (const int out_type_=OSTREAM_CLOG, const std::string &title_="", const std::string &indent_="", const bool inherit_=false) const |
void | tree_print_id (const int out_type_=OSTREAM_CLOG, const std::string &title_="") const |
void | smart_print_id (const int out_type_=OSTREAM_CLOG, const std::string &title_="", const std::string &indent_="") const |
![]() | |
i_find_intercept () | |
Default constructor. More... | |
virtual | ~i_find_intercept () |
Destructor. More... | |
bool | find_intercept_self (const vector_3d &a_from, const vector_3d &a_direction, face_intercept_info &a_intercept, double a_skin=GEOMTOOLS_PROPER_TOLERANCE) const |
bool | find_intercept (const vector_3d &a_from, const vector_3d &a_direction, const placement &a_placement, face_intercept_info &a_intercept, double a_skin=GEOMTOOLS_PROPER_TOLERANCE) const |
![]() | |
virtual | ~i_wires_3d_rendering () |
Destructor. More... | |
void | generate_wires (wires_type &wires_, const placement &positioning_, uint32_t options_=0) const |
void | generate_wires (wires_type &wires_, const geomtools::vector_3d &position_, const geomtools::rotation_3d &rotation_, uint32_t options_=0) const |
Static Public Member Functions | |
static const std::string & | quadric_label () |
Return the identifier label for the class. More... | |
static std::string | coeff_label (coef_index i_) |
static void | make_plane (quadric &q_, double a_, double b_, double c_, double d_) |
static void | make_plane_yz (quadric &q_, double a_) |
static void | make_plane_xz (quadric &q_, double b_) |
static void | make_plane_xy (quadric &q_, double c_) |
static void | make_parallel_planes_yz (quadric &q_, double a_) |
static void | make_parallel_planes_xz (quadric &q_, double b_) |
static void | make_parallel_planes_xy (quadric &q_, double c_) |
static void | make_ellipsoid (quadric &q_, double a_, double b_, double c_) |
static void | make_spheroid_along_z (quadric &q_, double a_, double b_) |
static void | make_sphere (quadric &q_, double a_) |
static void | make_elliptic_paraboloid_along_z (quadric &q_, double a_, double b_) |
static void | make_circular_paraboloid_along_z (quadric &q_, double a_) |
static void | make_hyperbolic_paraboloid_along_z (quadric &q_, double a_, double b_) |
static void | make_elliptic_hyperbolic_one_sheet_along_z (quadric &q_, double a_, double b_, double c_) |
static void | make_elliptic_hyperbolic_two_sheets_along_z (quadric &q_, double a_, double b_, double c_) |
static void | make_elliptic_cone_along_z (quadric &q_, double a_, double b_, double c_) |
static void | make_circular_cone_along_z (quadric &q_, double a_, double b_) |
static void | make_elliptic_cylinder_along_z (quadric &q_, double a_, double b_) |
static void | make_circular_cylinder_along_z (quadric &q_, double a_) |
static void | make_hyperbolic_cylinder_along_z (quadric &q_, double a_, double b_) |
static void | make_parabolic_cylinder_along_z (quadric &q_, double a_) |
![]() | |
static void | init_ocd (datatools::object_configuration_description &ocd_) |
![]() | |
static void | init_ocd (datatools::object_configuration_description &) |
OCD support. More... | |
![]() | |
static const boost::property_tree::ptree & | empty_options () |
static boost::property_tree::ptree | make_base_print_options (const std::string &title_, const std::string &indent_="", const bool inherit_=false) |
static std::ostream & | last_skip_tag (std::ostream &out_) |
static std::ostream & | skip_tag (std::ostream &out_) |
static std::ostream & | last_tag (std::ostream &out_) |
static std::ostream & | tag (std::ostream &out_) |
![]() | |
static uint32_t | linear_sampling (sampling_level_type) |
Return linear sampling from sampling level. More... | |
static uint32_t | linear_sampling_from_options (uint32_t) |
Return linear sampling from rendering options. More... | |
static uint32_t | angular_sampling (sampling_level_type) |
Return angular sampling from sampling level. More... | |
static uint32_t | angular_sampling_from_options (uint32_t) |
Return angular sampling from rendering options. More... | |
static void | boost_linear_sampling (uint32_t &) |
Boost the linear sampling. More... | |
Protected Member Functions | |
void | _set_defaults () |
Set default attributes values. More... | |
![]() | |
void | _set_defaults () |
Set default values for attributes. More... | |
void | _initialize (const datatools::properties &, const handle_dict_type *=0) |
Initialize from properties. More... | |
void | _reset () |
Reset. More... | |
Additional Inherited Members | |
![]() | |
static const uint32_t | ALL_PIECES = 0xFFFFFFFF |
Special flag representing all pieces composing a 2D shape. More... | |
A general quadric a 3D space.
geomtools::quadric::quadric | ( | ) |
Default constructor.
|
protected |
Set default attributes values.
|
static |
double geomtools::quadric::distance | ( | const geomtools::vector_3d & | position_ | ) | const |
Compute the distance from a position to the plane.
|
virtual |
Compute the quadric df/dx derivative at given 3D point.
|
virtual |
Compute the quadric df/dy derivative at given 3D point.
|
virtual |
Compute the quadric df/dz derivative at given 3D point.
|
virtual |
Compute the quadric formula f(x,y,z) at given 3D point.
double geomtools::quadric::eval_f | ( | const geomtools::vector_3d & | position_ | ) | const |
Compute the quadric formula at given 3D point.
void geomtools::quadric::eval_gradient | ( | double | x_, |
double | y_, | ||
double | z_, | ||
double & | dfdx_, | ||
double & | dfdy_, | ||
double & | dfdz_ | ||
) | const |
Compute the quadric gradient (df/dx, df/dy, df/dz) at given 3D point.
void geomtools::quadric::eval_gradient | ( | const geomtools::vector_3d & | position_, |
geomtools::vector_3d & | gradient_ | ||
) | const |
Compute the quadric gradient (df/dx, df/dy, df/dz) at given 3D point.
|
virtual |
Find intercept on some surface from a segment/ray emitted from a point
This method implies we work in the local coordinate system of the target object
Implements geomtools::i_find_intercept.
|
virtual |
Generate a collection of polylines representing a 3D object in 'wires' display mode using the object coordinate frame
Implements geomtools::i_wires_3d_rendering.
double geomtools::quadric::get_coefficient | ( | coef_index | ) | const |
Return the coefficient at given rank.
|
virtual |
Return the normal direction at some position on the 2D shape's path
Implements geomtools::i_shape_2d.
|
virtual |
Return the shape name.
Implements geomtools::i_object_3d.
|
virtual |
Initialize from properties and a dictionary of 3D-objects.
Reimplemented from geomtools::i_object_3d.
|
virtual |
Check if the point.
Implements geomtools::i_shape_2d.
|
virtual |
Check if the plane is valid.
Implements geomtools::i_object_3d.
|
static |
Make circular cone along Z axis f(x,y,z) = (x/a)2 + (y/a)2 - (z/b)2 = 0
|
static |
Make circular cylinder along Z axis f(x,y,z) = (x/a)2 + (y/a)2 - 1 = 0
|
static |
Make circular paraboloid along Z axis f(x,y,z) = (x/a)2 + (y/a)2 - z = 0
|
static |
Make ellipsoid f(x,y,z) = (x/a)2 + (y/b)2 + (z/c)2 - 1 = 0
|
static |
Make elliptic cone along Z axis f(x,y,z) = (x/a)2 + (y/b)2 - (z/c)2 = 0
|
static |
Make elliptic cylinder along Z axis f(x,y,z) = (x/a)2 + (y/b)2 - 1 = 0
|
static |
Make hyperbolic paraboloid of one sheet along Z axis f(x,y,z) = (x/a)2 + (y/b)2 - (z/c)2 - 1 = 0
|
static |
Make hyperbolic paraboloid of two sheets along Z axis f(x,y,z) = (x/a)2 + (y/b)2 - (z/c)2 + 1 = 0
|
static |
Make elliptic paraboloid along Z axis f(x,y,z) = (x/a)2 + (y/b)2 - z = 0
|
static |
Make hyperbolic cylinder along Z axis f(x,y,z) = (x/a)2 - (y/b)2 - 1 = 0
|
static |
Make hyperbolic paraboloid along Z axis f(x,y,z) = (x/a)2 - (y/b)2 - z = 0
|
static |
Make parabolic cylinder along Z axis f(x,y,z) = x2 + 2ay = 0
|
static |
Make parallel XY planes at z2=c2 f(x,y,z) = z2 - c2 = 0
|
static |
Make parallel XZ planes at y2=b2 f(x,y,z) = y2 - b2 = 0
|
static |
Make parallel YZ planes at x2=a2 f(x,y,z) = x2 - a2 = 0
|
static |
Make a general plane f(x,y,z) = ax + by + cz + d = 0
|
static |
Make a XY plane at z=c f(x,y,z) = z - c = 0
|
static |
Make a XZ plane at y=b f(x,y,z) = y - b = 0
|
static |
Make a YZ plane at x=a f(x,y,z) = x - a = 0
|
static |
Make sphere f(x,y,z) = (x/a)2 + (y/a)2 + (z/a)2 - 1 = 0
|
static |
Make spheroid along Z axis f(x,y,z) = (x/a)2 + (y/a)2 + (z/b)2 - 1 = 0
geomtools::vector_3d geomtools::quadric::orthogonal_projection | ( | const geomtools::vector_3d & | position_, |
double | skin_ = GEOMTOOLS_PROPER_TOLERANCE |
||
) | const |
Compute the orthogonal projection from a position.
geomtools::vector_3d geomtools::quadric::projection | ( | const geomtools::vector_3d & | position_, |
const geomtools::vector_3d & | direction_, | ||
double | skin_ = GEOMTOOLS_PROPER_TOLERANCE |
||
) | const |
Compute the projection from a position along a direction.
|
static |
Return the identifier label for the class.
|
virtual |
Reset.
Reimplemented from geomtools::i_object_3d.
void geomtools::quadric::set_coefficient | ( | coef_index | , |
double | |||
) |
Set the coefficient at given rank.
|
virtual |
Smart print.
Reimplemented from geomtools::i_object_3d.