SheafSystem  0.0.0.0
geometry::point_locator Class Referenceabstract

An abstract point location query in domains with global coordinate dimension dc and local coordinate dimension db. More...

#include <point_locator.h>

Inheritance diagram for geometry::point_locator:
geometry::cylindrical_point_locator geometry::d_bin_point_locator< DC, DB > geometry::d_uniform_point_locator< DC, DB > geometry::db0_point_locator< DC > geometry::array_cylindrical_point_locator geometry::d_array_point_locator< DC, DB > geometry::d_tree_point_locator< DC, DB >

CANONICAL FACET

virtual bool invariant () const
 Class invariant. More...
 
virtual ~point_locator ()
 Destructor. More...
 

POINT_LOCATOR FACET

block< sec_vd_value_type_lb
 The lower bound of the domain. More...
 
block< sec_vd_value_type_ub
 The upper bound of the domain. More...
 
int _dc
 The spatial dimension of the domain; the dimension of the global coordinates. More...
 
int _db
 The intrinsic dimension of the domain; the dimension of the local coordinates. More...
 
sec_edcoordinates () const
 The coordinate section this inverts. More...
 
const block< sec_vd_value_type > & lb () const
 The lower bound of the domain defined by coordinates(). More...
 
const block< sec_vd_value_type > & ub () const
 The upper bound of the domain defined by coordinates(). More...
 
int dc () const
 The spatial dimension of the domain; the dimension of the global coordinates. More...
 
int db () const
 The intrinsic dimension of the domain; the dimension of the local coordinates. More...
 
bool domain_contains (sec_vd_value_type *xpt, size_type xpt_ub) const
 True if the domain contains xpt. More...
 
virtual void update ()=0
 Updates the search structure to the current values of coordinates(). More...
 
virtual void point_at_value (const sec_vd_value_type *xvalue, size_type xvalue_ub, chart_point &xresult)=0
 Finds a chart point at which coordinates() has value xvalue. More...
 
virtual void all_points_at_value (const sec_vd_value_type *xvalue, size_type xvalue_ub, block< chart_point_3d > &xresult)=0
 Finds all chart points at which coordinates() has value xvalue and appends them to xresult. Note that charts overlap at their boundaries and hence if xvalue lies on a boundary it is contained in more than one chart. More...
 
virtual void branch_points_at_value (const sec_vd_value_type *xvalue, size_type xvalue_ub, block< branch_point_pair > &xresult)=0
 Finds one chart point in each branch at which coordinates() has value xvalue and appends them to xresult. More...
 
 point_locator ()
 Default constructor. More...
 
 point_locator (sec_ed &xcoords)
 Create an instance for coordinate section xcoords. More...
 
void update_domain ()
 Initializes the domain bounds and dimension. More...
 
static sec_vd_value_type slightly_greater_than (sec_vd_value_type x)
 A value slightly greater then x. More...
 
static sec_vd_value_type slightly_less_than (sec_vd_value_type x)
 A value slightly less then x. More...
 

Detailed Description

An abstract point location query in domains with global coordinate dimension dc and local coordinate dimension db.

Definition at line 52 of file point_locator.h.

Constructor & Destructor Documentation

◆ ~point_locator()

geometry::point_locator::~point_locator ( )
virtual

Destructor.

Definition at line 58 of file point_locator.cc.

References coordinates().

Referenced by invariant().

◆ point_locator() [1/2]

◆ point_locator() [2/2]

geometry::point_locator::point_locator ( sec_ed xcoords)
protected

Member Function Documentation

◆ all_points_at_value()

void geometry::point_locator::all_points_at_value ( const sec_vd_value_type xvalue,
size_type  xvalue_ub,
block< chart_point_3d > &  xresult 
)
pure virtual

Finds all chart points at which coordinates() has value xvalue and appends them to xresult. Note that charts overlap at their boundaries and hence if xvalue lies on a boundary it is contained in more than one chart.

Is Abstract.

Postcondition
  • for(int i = ( 0 ); i < ( xresult.ct() ); ++ i ) xresult[i].is_valid()

Implemented in geometry::db0_point_locator< DC >, geometry::cylindrical_point_locator, geometry::d_bin_point_locator< DC, DB >, and geometry::d_uniform_point_locator< DC, DB >.

Definition at line 248 of file point_locator.cc.

References branch_points_at_value(), and sheaf::auto_block< T, un_block_initialization_policy< T > >::ct().

Referenced by geometry::sec_ed_invertible::all_points_at_value_ua(), and point_at_value().

◆ branch_points_at_value()

void geometry::point_locator::branch_points_at_value ( const sec_vd_value_type xvalue,
size_type  xvalue_ub,
block< branch_point_pair > &  xresult 
)
pure virtual

Finds one chart point in each branch at which coordinates() has value xvalue and appends them to xresult.

Is Abstract.

Postcondition
  • xresult.ct() >= old_xresult_ct
  • for(int i = ( old_xresult_ct ); i < ( xresult.ct() ); ++ i ) coordinates().host()->contains_member(xresult[i].first, false)
  • for(int i = ( old_xresult_ct ); i < ( xresult.ct() ); ++ i ) xresult[i].second.is_valid()

Implemented in geometry::db0_point_locator< DC >, geometry::cylindrical_point_locator, geometry::d_bin_point_locator< DC, DB >, and geometry::d_uniform_point_locator< DC, DB >.

Definition at line 270 of file point_locator.cc.

References sheaf::auto_block< T, S >::ct(), and point_locator().

Referenced by all_points_at_value(), and geometry::sec_ed_invertible::branch_points_at_value_ua().

◆ coordinates()

◆ db()

◆ dc()

◆ domain_contains()

bool geometry::point_locator::domain_contains ( sec_vd_value_type xpt,
size_type  xpt_ub 
) const

True if the domain contains xpt.

Precondition
  • xpt != 0
Postcondition
  • for(int i = ( 0 ); i < ( dc() ); ++ i ) result ? ((lb()[i] <= xpt[i]) && (xpt[i] <= ub()[i])) : true

Definition at line 178 of file point_locator.cc.

References update().

Referenced by geometry::d_bin_point_locator< DC, DB >::all_points_at_value(), geometry::d_bin_point_locator< DC, DB >::box_list(), geometry::d_tree_point_locator< DC, DB >::box_list(), geometry::d_bin_point_locator< DC, DB >::branch_points_at_value(), db(), and geometry::d_bin_point_locator< DC, DB >::point_at_value().

◆ invariant()

◆ lb()

const sheaf::block< fiber_bundle::sec_vd_value_type > & geometry::point_locator::lb ( ) const

The lower bound of the domain defined by coordinates().

Definition at line 101 of file point_locator.cc.

References ub().

Referenced by coordinates(), geometry::operator<<(), and geometry::d_array_point_locator< DC, DB >::to_stream().

◆ point_at_value()

void geometry::point_locator::point_at_value ( const sec_vd_value_type xvalue,
size_type  xvalue_ub,
chart_point xresult 
)
pure virtual

◆ slightly_greater_than()

fiber_bundle::sec_vd_value_type geometry::point_locator::slightly_greater_than ( sec_vd_value_type  x)
staticprotected

A value slightly greater then x.

Postcondition
  • result > x

Definition at line 355 of file point_locator.cc.

References slightly_less_than().

Referenced by point_locator(), and update_domain().

◆ slightly_less_than()

fiber_bundle::sec_vd_value_type geometry::point_locator::slightly_less_than ( sec_vd_value_type  x)
staticprotected

A value slightly less then x.

Postcondition
  • result < x

Definition at line 391 of file point_locator.cc.

References update_domain().

Referenced by slightly_greater_than(), and update_domain().

◆ ub()

const sheaf::block< fiber_bundle::sec_vd_value_type > & geometry::point_locator::ub ( ) const

The upper bound of the domain defined by coordinates().

Definition at line 120 of file point_locator.cc.

References dc().

Referenced by lb(), geometry::operator<<(), and geometry::d_array_point_locator< DC, DB >::to_stream().

◆ update()

void geometry::point_locator::update ( )
pure virtual

Updates the search structure to the current values of coordinates().

Precondition
Is Abstract.

Implemented in geometry::db0_point_locator< DC >, geometry::cylindrical_point_locator, geometry::d_bin_point_locator< DC, DB >, and geometry::d_uniform_point_locator< DC, DB >.

Definition at line 207 of file point_locator.cc.

References point_at_value().

Referenced by domain_contains(), and geometry::sec_ed_invertible::update_inversion().

◆ update_domain()

Member Data Documentation

◆ _db

int geometry::point_locator::_db
protected

The intrinsic dimension of the domain; the dimension of the local coordinates.

Definition at line 185 of file point_locator.h.

Referenced by point_locator().

◆ _dc

int geometry::point_locator::_dc
protected

The spatial dimension of the domain; the dimension of the global coordinates.

Definition at line 179 of file point_locator.h.

Referenced by point_locator(), and update_domain().

◆ _lb

◆ _ub


The documentation for this class was generated from the following files: