vtol_one_chain Class Reference

#include <vtol_one_chain.h>

Inheritance diagram for vtol_one_chain:

vtol_chain vtol_topology_object vsol_spatial_object_2d vsol_spatial_object vul_timestamp vbl_ref_count vsol_flags_id List of all members.

Detailed Description

The class represents a collection of edges and orientations.

Definition at line 48 of file vtol_one_chain.h.


Public Types

enum  vsol_spatial_object_2d_type

Public Member Functions

void link_chain_inferior (vtol_one_chain_sptr chain_inferior)
void unlink_chain_inferior (vtol_one_chain_sptr chain_inferior)
 vtol_one_chain ()
 Default constructor.
 vtol_one_chain (edge_list const &, bool new_is_cycle=false)
 Constructor from an array of edges.
 vtol_one_chain (edge_list const &, vcl_vector< signed char > const &, bool new_is_cycle=false)
 Constructor from an array of edges and an array of directions.
 vtol_one_chain (vtol_one_chain_sptr const &other)
 Pseudo copy constructor. Deep copy.
virtual ~vtol_one_chain ()
 Destructor.
virtual vsol_spatial_object_2dclone () const
 Clone `this': creation of a new object and initialization.
virtual vcl_string is_a () const
 Return a platform independent string identifying the class.
virtual bool is_class (const vcl_string &cls) const
 Return true if the argument matches the string identifying the class or any parent class.
virtual signed char direction (vtol_edge const &e) const
 Get the direction of the edge "e" in the onechain.
virtual const vtol_one_chaincast_to_one_chain () const
 Return `this' if `this' is an one_chain, 0 otherwise.
virtual vtol_one_chaincast_to_one_chain ()
 Return `this' if `this' is an one_chain, 0 otherwise.
void link_inferior (vtol_edge_sptr inf)
void unlink_inferior (vtol_edge_sptr inf)
virtual bool valid_inferior_type (vtol_topology_object const *inferior) const
 Is `inferior' type valid for `this' ?.
bool valid_inferior_type (vtol_edge_sptr const &) const
bool valid_inferior_type (vtol_edge_2d_sptr const &) const
bool valid_superior_type (vtol_face_sptr const &) const
bool valid_superior_type (vtol_face_2d_sptr const &) const
virtual bool valid_chain_type (vtol_chain_sptr chain_inf_sup) const
 Is `chain_inf_sup' type valid for `this' ?.
bool valid_chain_type (vtol_one_chain_sptr const &) const
virtual vertex_listoutside_boundary_vertices ()
 accessors for outside boundary elements.
virtual zero_chain_listoutside_boundary_zero_chains ()
 Get the outside boundary zero chains.
virtual edge_listoutside_boundary_edges ()
 Get the outside boundary edges.
virtual one_chain_listoutside_boundary_one_chains ()
 Get the outside boundary one chains.
virtual one_chain_listinferior_one_chains ()
 accessors to inferiors and superiors.
virtual one_chain_listsuperior_one_chains ()
 Get the superior one chains.
virtual void reverse_directions ()
 Reverse the direction of the one chain.
virtual vtol_one_chaincopy_with_arrays (topology_list &verts, topology_list &edges) const
virtual void compute_bounding_box () const
 Computes the bounding box of a vtol_one_chain from the edges.
virtual vtol_edge_sptr edge (int i) const
int num_edges () const
virtual void determine_edge_directions ()
 Redetermining the directions of all edges in the onechain.
virtual void add_edge (vtol_edge_sptr const &, bool)
 Add an edge.
virtual void add_edge (vtol_edge_2d_sptr const &, bool)
virtual void remove_edge (vtol_edge_sptr const &, bool)
 Remove an edge.
virtual void remove_edge (vtol_edge_2d_sptr const &, bool)
virtual bool operator== (vtol_one_chain const &other) const
 Comparison operator.
bool operator!= (const vtol_one_chain &other) const
bool operator== (vsol_spatial_object_2d const &obj) const
 Spatial object equality.
virtual void print (vcl_ostream &strm=vcl_cout) const
 Print Methods.
virtual void describe_directions (vcl_ostream &strm=vcl_cout, int blanking=0) const
 Describe the directions.
virtual void describe (vcl_ostream &strm=vcl_cout, int blanking=0) const
 Describe the one chain.
virtual vcl_vector< vtol_vertex * > * outside_boundary_compute_vertices ()
 Get the outside boundary vertices.
virtual vcl_vector< vtol_zero_chain * > * outside_boundary_compute_zero_chains ()
 Get the outside boundary zero chains.
virtual vcl_vector< vtol_edge * > * outside_boundary_compute_edges ()
 Get the outside boundary edges.
virtual vcl_vector< vtol_one_chain * > * outside_boundary_compute_one_chains ()
 Get the outside boundary one chains.
virtual const chain_listchain_inferiors () const
 Return a pointer to the inferiors (no copy).
virtual const chain_listchain_superiors () const
 Return a copy of the chain_superiors list.
virtual const vtol_chaincast_to_chain () const
 Return `this' if `this' is a chain, 0 otherwise.
virtual vtol_chaincast_to_chain ()
 Return `this' if `this' is a chain, 0 otherwise.
virtual bool is_chain_inferior (vtol_chain_sptr chain_inferior) const
 Is `inferior' already an inferior of `this' ?.
virtual bool is_chain_superior (vtol_chain const *chain_superior) const
 Is `superior' already a superior of `this' ?.
int num_chain_superiors () const
 Return the number of superiors.
int num_chain_inferiors () const
 Return the number of inferiors.
bool contains_sub_chains () const
 Does `this' contain some sub chains ?.
bool is_sub_chain () const
 Is `this' a sub chain ?.
void link_chain_inferior (vtol_chain_sptr chain_inferior)
 Link `this' with an inferior `chain_inferior'.
void unlink_chain_inferior (vtol_chain_sptr chain_inferior)
 Unlink `this' with the chain_inferior `chain_inferior'.
void unlink_all_chain_inferiors ()
 Unlink `this' with all its chain inferiors.
void unlink ()
 Unlink `this' of the network.
bool is_cycle () const
 Is `this' a connected chain ?.
const vcl_vector< signed char > * directions () const
 Return the directions.
vcl_vector< signed char > * directions ()
 Return the directions.
int dir (int i) const
 Return the direction `i'.
void set_cycle (bool new_is_cycle)
 Set if `this' is a connected chain.
virtual void clear ()
 Reset the chain.
virtual vtol_topology_objectcast_to_topology_object ()
virtual const vtol_topology_objectcast_to_topology_object () const
virtual const vtol_vertexcast_to_vertex () const
 Return `this' if `this' is a vertex, 0 otherwise.
virtual vtol_vertexcast_to_vertex ()
 Return `this' if `this' is a vertex, 0 otherwise.
virtual const vtol_zero_chaincast_to_zero_chain () const
 Return `this' if `this' is a zero_chain, 0 otherwise.
virtual vtol_zero_chaincast_to_zero_chain ()
 Return `this' if `this' is a zero_chain, 0 otherwise.
virtual const vtol_edgecast_to_edge () const
 Return `this' if `this' is an edge, 0 otherwise.
virtual vtol_edgecast_to_edge ()
 Return `this' if `this' is an edge, 0 otherwise.
virtual const vtol_facecast_to_face () const
 Return `this' if `this' is a face, 0 otherwise.
virtual vtol_facecast_to_face ()
 Return `this' if `this' is a face, 0 otherwise.
virtual const vtol_two_chaincast_to_two_chain () const
 Return `this' if `this' is a two_chain, 0 otherwise.
virtual vtol_two_chaincast_to_two_chain ()
 Return `this' if `this' is a two_chain, 0 otherwise.
virtual const vtol_blockcast_to_block () const
 Return `this' if `this' is a block, 0 otherwise.
virtual vtol_blockcast_to_block ()
 Return `this' if `this' is a block, 0 otherwise.
bool valid_superior_type (vtol_topology_object const *sup) const
 Is `superior' type valid for `this' ?.
bool is_inferior (vtol_topology_object_sptr inferior) const
 Is `inferior' already an inferior of `this' ?.
bool is_superior (vtol_topology_object *const &superior) const
 Is `superior' already a superior of `this' ?.
int numinf () const
 Number of inferiors.
int numsup () const
 Number of superiors.
const vcl_list< vtol_topology_object * > * superiors_list () const
topology_listinferiors ()
 Return the inferiors list.
const topology_listinferiors () const
virtual vsol_spatial_object_2d_type spatial_type () const
 Return the spatial type.
void link_inferior (vtol_topology_object_sptr inferior)
 Link `this' with an inferior `inferior'.
void unlink_inferior (vtol_topology_object_sptr inferior)
 Unlink `this' from the inferior `inferior'.
void unlink_all_inferiors ()
 Unlink `this' from all its inferiors.
void vertices (vertex_list &list) const
 Get list of vertices.
void zero_chains (zero_chain_list &list) const
 Get list of zero chains.
void edges (edge_list &list) const
 Get list of edges.
void one_chains (one_chain_list &list) const
 Get list of one chains.
void faces (face_list &list) const
 Get list of faces.
void two_chains (two_chain_list &list) const
 Get list of two chains.
void blocks (block_list &list) const
 Get list of blocks.
void describe_inferiors (vcl_ostream &strm=vcl_cout, int blanking=0) const
void describe_superiors (vcl_ostream &strm=vcl_cout, int blanking=0) const
const char * get_name () const
void un_protect ()
short version () const
virtual void b_write (vsl_b_ostream &os) const
virtual void b_read (vsl_b_istream &is)
bool operator!= (vsol_spatial_object_2d const &obj)
vsol_box_2d_sptr get_bounding_box () const
double get_min_x () const
double get_max_x () const
double get_min_y () const
double get_max_y () const
virtual vsol_spatial_object_2dcast_to_spatial_object ()
virtual vsol_spatial_object_2d
const * 
cast_to_spatial_object () const
virtual vsol_spatial_object_2dcast_to_vsol_spatial_object ()
virtual vsol_spatial_object_2d
const * 
cast_to_vsol_spatial_object () const
virtual vsol_point_2dcast_to_point ()
virtual vsol_point_2d const * cast_to_point () const
virtual vsol_curve_2dcast_to_curve ()
virtual vsol_curve_2d const * cast_to_curve () const
virtual vsol_region_2dcast_to_region ()
virtual vsol_region_2d const * cast_to_region () const
virtual vsol_group_2dcast_to_group ()
virtual vsol_group_2d const * cast_to_group () const
void touch ()
unsigned long get_time_stamp () const
bool older (vul_timestamp const &t) const
bool older (vul_timestamp const *t) const
void ref ()
void unref ()
int get_references () const
bool is_referenced () const
int get_id () const
void set_id (int i)
void set_user_flag (unsigned int flag)
bool get_user_flag (unsigned int flag)
void unset_user_flag (unsigned int flag)
void set_tagged_union_flag ()
bool get_tagged_union_flag ()
void unset_tagged_union_flag ()
int get_tag_id ()
void set_tag_id (int id)

Public Attributes

 SPATIAL_NO_TYPE
 TOPOLOGYOBJECT
 POINT
 CURVE
 REGION
 SPATIALGROUP
 VOLUME
 NUM_SPATIALOBJECT_TYPES

Static Public Attributes

static const char * SpatialTypes []
static const float eps

Protected Types

enum  vtol_topology_object_type {
  TOPOLOGY_NO_TYPE = 0, VERTEX, ZEROCHAIN, EDGE,
  ONECHAIN, FACE, TRIFACE, INTENSITYFACE,
  INTENSITYFACE3D, DDBINTENSITYFACE, TWOCHAIN, TRIMESHTWOCHAIN,
  BLOCK, NUM_TOPOLOGYOBJECT_TYPES
}

Protected Member Functions

virtual vcl_vector< vtol_vertex * > * compute_vertices ()
 Get the vertices of this object.
virtual vcl_vector< vtol_edge * > * compute_edges ()
 Get the edges.
virtual vcl_vector< vtol_zero_chain * > * compute_zero_chains ()
 Get the zero chains of this object.
virtual vcl_vector< vtol_one_chain * > * compute_one_chains ()
 Get the one chains.
virtual vcl_vector< vtol_face * > * compute_faces ()
 Get the faces.
virtual vcl_vector< vtol_two_chain * > * compute_two_chains ()
 Get the two chains.
virtual vcl_vector< vtol_block * > * compute_blocks ()
 Get the blocks.
void not_applicable (vcl_string const &message) const
void empty_bounding_box () const
void set_bounding_box (vsol_box_2d_sptr const &box) const
void set_bounding_box (double x, double y) const
void add_to_bounding_box (double x, double y) const
void add_to_bounding_box (vsol_box_2d_sptr const &box) const
void grow_minmax_bounds (vsol_box_2d_sptr const &b) const
void check_update_bounding_box () const

Protected Attributes

chain_list chain_inferiors_
vcl_list< vtol_chain * > chain_superiors_
bool is_cycle_
vcl_vector< signed char > directions_
vcl_list< vtol_topology_object * > superiors_
topology_list inferiors_
unsigned long timestamp_
unsigned int tag_
int id_

Static Protected Attributes

static int tagcount_

Private Member Functions

 vtol_one_chain (vtol_one_chain const &other)
 Copy constructor. Deep copy. Deprecated.
virtual vtol_topology_object_type topology_type () const
 Return the topology type.
virtual void add_edge (vtol_edge &, bool)
virtual void remove_edge (vtol_edge &, bool)

Friends

friend vcl_ostream & operator<< (vcl_ostream &, vsol_spatial_object_2d const &)
friend vcl_ostream & operator<< (vcl_ostream &, vsol_spatial_object_2d const *)

Member Enumeration Documentation

enum vtol_topology_object::vtol_topology_object_type [protected, inherited]

Enumerator:
TOPOLOGY_NO_TYPE 
VERTEX 
ZEROCHAIN 
EDGE 
ONECHAIN 
FACE 
TRIFACE 
INTENSITYFACE 
INTENSITYFACE3D 
DDBINTENSITYFACE 
TWOCHAIN 
TRIMESHTWOCHAIN 
BLOCK 
NUM_TOPOLOGYOBJECT_TYPES 

Definition at line 132 of file vtol_topology_object.h.


Constructor & Destructor Documentation

vtol_one_chain::vtol_one_chain (  )  [inline]

Default constructor.

Definition at line 60 of file vtol_one_chain.h.

vtol_one_chain::vtol_one_chain ( edge_list const &  ,
bool  new_is_cycle = false 
) [explicit]

Constructor from an array of edges.

Definition at line 46 of file vtol_one_chain.cxx.

vtol_one_chain::vtol_one_chain ( edge_list const &  ,
vcl_vector< signed char > const &  ,
bool  new_is_cycle = false 
)

Constructor from an array of edges and an array of directions.

Definition at line 63 of file vtol_one_chain.cxx.

vtol_one_chain::vtol_one_chain ( vtol_one_chain_sptr const &  other  ) 

Pseudo copy constructor. Deep copy.

Definition at line 78 of file vtol_one_chain.cxx.

vtol_one_chain::vtol_one_chain ( vtol_one_chain const &  other  )  [private]

Copy constructor. Deep copy. Deprecated.

vtol_one_chain::~vtol_one_chain (  )  [virtual]

Destructor.

Definition at line 111 of file vtol_one_chain.cxx.


Member Function Documentation

void vtol_one_chain::link_chain_inferior ( vtol_one_chain_sptr  chain_inferior  ) 

Definition at line 34 of file vtol_one_chain.cxx.

void vtol_one_chain::unlink_chain_inferior ( vtol_one_chain_sptr  chain_inferior  ) 

Definition at line 39 of file vtol_one_chain.cxx.

vsol_spatial_object_2d * vtol_one_chain::clone (  )  const [virtual]

Clone `this': creation of a new object and initialization.

See Prototype pattern

Implements vsol_spatial_object_2d.

Definition at line 120 of file vtol_one_chain.cxx.

virtual vcl_string vtol_one_chain::is_a (  )  const [inline, virtual]

Return a platform independent string identifying the class.

Reimplemented from vtol_chain.

Definition at line 91 of file vtol_one_chain.h.

virtual bool vtol_one_chain::is_class ( const vcl_string &  cls  )  const [inline, virtual]

Return true if the argument matches the string identifying the class or any parent class.

Reimplemented from vtol_chain.

Definition at line 94 of file vtol_one_chain.h.

virtual vtol_topology_object_type vtol_one_chain::topology_type (  )  const [inline, private, virtual]

Return the topology type.

Reimplemented from vtol_topology_object.

Definition at line 101 of file vtol_one_chain.h.

signed char vtol_one_chain::direction ( vtol_edge const &  e  )  const [virtual]

Get the direction of the edge "e" in the onechain.

Definition at line 173 of file vtol_one_chain.cxx.

virtual const vtol_one_chain* vtol_one_chain::cast_to_one_chain (  )  const [inline, virtual]

Return `this' if `this' is an one_chain, 0 otherwise.

Reimplemented from vtol_topology_object.

Definition at line 112 of file vtol_one_chain.h.

virtual vtol_one_chain* vtol_one_chain::cast_to_one_chain (  )  [inline, virtual]

Return `this' if `this' is an one_chain, 0 otherwise.

Reimplemented from vtol_topology_object.

Definition at line 116 of file vtol_one_chain.h.

void vtol_one_chain::link_inferior ( vtol_edge_sptr  inf  ) 

Definition at line 24 of file vtol_one_chain.cxx.

void vtol_one_chain::unlink_inferior ( vtol_edge_sptr  inf  ) 

Definition at line 29 of file vtol_one_chain.cxx.

virtual bool vtol_one_chain::valid_inferior_type ( vtol_topology_object const *  inferior  )  const [inline, virtual]

Is `inferior' type valid for `this' ?.

Implements vtol_topology_object.

Definition at line 127 of file vtol_one_chain.h.

bool vtol_one_chain::valid_inferior_type ( vtol_edge_sptr const &   )  const [inline]

Definition at line 129 of file vtol_one_chain.h.

bool vtol_one_chain::valid_inferior_type ( vtol_edge_2d_sptr const &   )  const [inline]

Definition at line 130 of file vtol_one_chain.h.

bool vtol_one_chain::valid_superior_type ( vtol_face_sptr const &   )  const [inline]

Definition at line 131 of file vtol_one_chain.h.

bool vtol_one_chain::valid_superior_type ( vtol_face_2d_sptr const &   )  const [inline]

Definition at line 132 of file vtol_one_chain.h.

virtual bool vtol_one_chain::valid_chain_type ( vtol_chain_sptr  chain_inf_sup  )  const [inline, virtual]

Is `chain_inf_sup' type valid for `this' ?.

Implements vtol_chain.

Definition at line 136 of file vtol_one_chain.h.

bool vtol_one_chain::valid_chain_type ( vtol_one_chain_sptr const &   )  const [inline]

Definition at line 138 of file vtol_one_chain.h.

vertex_list * vtol_one_chain::outside_boundary_vertices (  )  [virtual]

accessors for outside boundary elements.

Definition at line 215 of file vtol_one_chain.cxx.

zero_chain_list * vtol_one_chain::outside_boundary_zero_chains (  )  [virtual]

Get the outside boundary zero chains.

Definition at line 253 of file vtol_one_chain.cxx.

edge_list * vtol_one_chain::outside_boundary_edges (  )  [virtual]

Get the outside boundary edges.

Definition at line 291 of file vtol_one_chain.cxx.

one_chain_list * vtol_one_chain::outside_boundary_one_chains (  )  [virtual]

Get the outside boundary one chains.

Definition at line 369 of file vtol_one_chain.cxx.

one_chain_list * vtol_one_chain::inferior_one_chains (  )  [virtual]

accessors to inferiors and superiors.

Definition at line 344 of file vtol_one_chain.cxx.

one_chain_list * vtol_one_chain::superior_one_chains (  )  [virtual]

Get the superior one chains.

Definition at line 356 of file vtol_one_chain.cxx.

void vtol_one_chain::reverse_directions (  )  [virtual]

Reverse the direction of the one chain.

Definition at line 715 of file vtol_one_chain.cxx.

vtol_one_chain * vtol_one_chain::copy_with_arrays ( topology_list verts,
topology_list edges 
) const [virtual]

Definition at line 126 of file vtol_one_chain.cxx.

void vtol_one_chain::compute_bounding_box ( void   )  const [virtual]

Computes the bounding box of a vtol_one_chain from the edges.

Just get the bounding box for each edge and update this's box accordingly. Note that the computation is done independently of dimension.

Reimplemented from vtol_topology_object.

Definition at line 473 of file vtol_one_chain.cxx.

vtol_edge_sptr vtol_one_chain::edge ( int  i  )  const [virtual]

Definition at line 13 of file vtol_one_chain.cxx.

int vtol_one_chain::num_edges (  )  const [inline]

Definition at line 161 of file vtol_one_chain.h.

void vtol_one_chain::determine_edge_directions (  )  [virtual]

Redetermining the directions of all edges in the onechain.

Require: is_cycle()

Definition at line 494 of file vtol_one_chain.cxx.

void vtol_one_chain::add_edge ( vtol_edge_sptr const &  ,
bool   
) [virtual]

Add an edge.

Definition at line 571 of file vtol_one_chain.cxx.

void vtol_one_chain::add_edge ( vtol_edge_2d_sptr const &  ,
bool   
) [virtual]

Definition at line 581 of file vtol_one_chain.cxx.

void vtol_one_chain::remove_edge (