BezierVertex Class Reference

The Vertex type for BezierMesh. More...

#include </usr1/tp517/Tumble/trunk/src/tumble/cell.h>

Inheritance diagram for BezierVertex:

[legend]
Collaboration diagram for BezierVertex:
[legend]
List of all members.

Public Member Functions

 BezierVertex (PersistantStore &, const ControlPoint &, const DataPoint &)
 Create an empty BezierVertex.
virtual ~BezierVertex ()
 Destructor.
void set_bdry (BoundaryEdge *e, double alpha)
 Set this BezierVertex to be a vertex internal to a BoundaryEdge (D1 vertex).
void set_bdry (BoundaryEdge *e, int idx)
 Set this BezierVertex to be a vertex internal to a BoundaryEdge (D1).
void set_bdry (BoundaryVertex *v)
 Set this BezierVertex to coorespond to a BoundaryVertex (D0 vertex).
void set_cp (const Point2D &p)
 Set the ControlPoint's value to the given value.
void set_dp (const LinearData &d)
 Set the DataPoint's value to the given value.
void set_data (int pos, double data)
 Set the DataPoint's value for given index to the given value.
double get_data (int pos) const
 Return the DataPoint's value for given index.
const Point2Dget_cp () const
 Return the ControlPoint's value Note that this is the Point2D not the ControlPoint.
Point2Daccess_cp ()
 Return read/write access to the ControlPoint's value.
ControlPoint get_control_point () const
const LinearDataget_dp () const
 Return the DataPoint's value Note that this is the LinearData not the DataPoint.
LinearDataaccess_dp ()
 Return read/write access to the DataPoint's value.
DataPoint get_data_point () const
int containment_dimension () const
 Return the Containment Dimention of this vertex.
bool is_boundary () const
const BoundaryEdgeget_bdry_edge () const
BoundaryEdgeget_bdry_edge ()
const BoundaryVertexget_bdry_vertex () const
BoundaryVertexget_bdry_vertex ()
double get_u (const BoundaryEdge *be, const BezierVertex *opposite) const
 Lookup the u-value along a BoundaryEdge, with respect to given opposite BezierVertex.
double get_u (const BezierEdge *e) const
 Get the u-value of this vertex along the BoundaryEdge cooresponding the the BezierEdge given.
double get_u () const
 Get the u-value of this vertex along the BoundaryEdge of which it is a D1 vertex.
void print () const
 Print info.
 declare_iterators_any (edge, edges, BezierEdge)

Private Types

typedef VertexCell super

Private Member Functions

void replace_cp (const ControlPoint &newp)
 Replace the control point. The caller (BezierMesh) must dispose of the now-obsolete control point, and must synchronize with the edges.
 BezierVertex (const BezierVertex &o)
BezierVertexoperator= (const BezierVertex &o)

Private Attributes

ControlPoint cp_
 An iterator to the geometric data (Point2D) at this vertex.
DataPoint dp_
 An iterator to the functional data (LinearData) at this vertex.
BoundaryEdgebdry_edge_
 Pointer to the BoundaryEdge if this vertex is a D1.
BoundaryVertexbdry_vertex_
 Pointer to the BoundaryVertex if this vertex is a D0.
double u_
 If the vertex is a D1 this is the u-value along the BoundaryEdge.

Friends

class BezierMesh

Detailed Description

The Vertex type for BezierMesh.

Contains a ControlPoint which points to the geometric Point2D information, and a DataPoint which points to the functional (LinearData) information. To get direct access to the infmoration use the get_cp() and get_dp() methods.

Also contains information about the boundary, if any, this vertex is on. If this vertex is on a BoundaryVertex then bdry_vertex points there, and u=-1.0. If this vertex is internal to a boundary edge (thus a bezier point of a QBSpline), then bdry_edge points to the BoundaryEdge, and u is the parameter along that edge. If the BezierVertex is not on any boundary, then both bdry_vertex, and bdry_edge are NULL.

Important terminology:

These D# terms relate to the containment dimention, that is the dimention of the BoundaryCell that conatains the vertex. In the case of D2 vertexes, they are contained in a boundary face, thus they are containment dimention 2.

Definition at line 494 of file cell.h.


Member Typedef Documentation

typedef VertexCell BezierVertex::super [private]

Definition at line 496 of file cell.h.


Constructor & Destructor Documentation

BezierVertex::BezierVertex ( PersistantStore ,
const ControlPoint ,
const DataPoint  
)

Create an empty BezierVertex.

Definition at line 755 of file cell.C.

virtual BezierVertex::~BezierVertex (  )  [inline, virtual]

Destructor.

Definition at line 504 of file cell.h.

BezierVertex::BezierVertex ( const BezierVertex o  )  [private]


Member Function Documentation

void BezierVertex::set_bdry ( BoundaryEdge b,
double  param 
)

Set this BezierVertex to be a vertex internal to a BoundaryEdge (D1 vertex).

This BezierVertex must be a D1 vertex.

Parameters:
b The BoundaryEdge which contains this BezierVertex internally
param The u value of this vertex along the edge

Definition at line 859 of file cell.C.

References bdry_edge_, bdry_vertex_, BoundaryEdge::get_spline(), get_u(), QBSpline::set_bezier_vertex(), and u_.

Referenced by ConformalMesher::create_subsplines(), ConformalMesher::insert_d0_vertices(), BezierMesh::insert_edge_midpoint(), MeshBinaryInput::read(), and MeshInput::read().

Here is the call graph for this function:

void BezierVertex::set_bdry ( BoundaryEdge b,
int  idx 
)

Set this BezierVertex to be a vertex internal to a BoundaryEdge (D1).

This BezierVertex must be a D1 vertex.

This function is given the index of the spline's knot representing this vertex, it then calculates the u-value along the edge from the u-value at the knot.

Note that for this vertex to be a D1 vertex, we have $ 1 <= \mbox{idx} <= \mbox{k.szie()}-2 $.

Parameters:
b The BoundaryEdge which contains this BezierVertex internally
idx The index of the knot cooresponding to this vertex in the spline

Definition at line 882 of file cell.C.

References bdry_edge_, bdry_vertex_, BoundaryEdge::get_spline(), QBSpline::k, QBSpline::set_bezier_vertex(), and u_.

Here is the call graph for this function:

void BezierVertex::set_bdry ( BoundaryVertex v  ) 

Set this BezierVertex to coorespond to a BoundaryVertex (D0 vertex).

This function also sets the BoundaryVertex::bezier_vertex pointer of the given BoundaryVertex.

Parameters:
v The BoundaryVertex cooresponding to this vertex

Definition at line 900 of file cell.C.

References bdry_edge_, bdry_vertex_, and BoundaryVertex::set_bezier().

Here is the call graph for this function:

void BezierVertex::set_cp ( const Point2D p  ) 

Set the ControlPoint's value to the given value.

Definition at line 763 of file cell.C.

References access_cp().

Here is the call graph for this function:

void BezierVertex::set_dp ( const LinearData d  ) 

Set the DataPoint's value to the given value.

Definition at line 769 of file cell.C.

References access_dp().

Here is the call graph for this function:

void BezierVertex::set_data ( int  pos,
double  data 
)

Set the DataPoint's value for given index to the given value.

Definition at line 775 of file cell.C.

References access_dp(), and LinearData::set().

Here is the call graph for this function:

double BezierVertex::get_data ( int  pos  )  const

Return the DataPoint's value for given index.

Definition at line 781 of file cell.C.

References get_dp().

Here is the call graph for this function:

const Point2D & BezierVertex::get_cp (  )  const

Return the ControlPoint's value Note that this is the Point2D not the ControlPoint.

Returns:
The Point2D at this ControlPoint

Definition at line 810 of file cell.C.

References cp_.

Referenced by BezierMesh::add_straight_bezier_edge(), ConformalMesher::angle_is_positive(), BezierMesh::can_flip(), BezierMesh::can_smooth(), BezierMesh::clean_insert_edge_midpoint(), BezierMesh::clean_insert_point(), BezierMesh::coarsen_calculate_edge_lengths(), BezierMesh::debug_flip(), BezierMesh::debug_smooth(), Visualization::draw_bezier_vertex(), BezierMesh::get_flip_polygon(), BezierMesh::get_smooth_polygon(), get_u(), ConformalMesher::insert_d0_vertices(), Visualization::is_visible(), BezierMesh::locate_point_in_linear_mesh(), operator<<(), EPSWrite::shade_triangle(), BezierTriangle::small_angle(), and BezierMesh::smooth_edge().

Point2D & BezierVertex::access_cp (  ) 

Return read/write access to the ControlPoint's value.

Definition at line 816 of file cell.C.

References PersistantList< Value >::iterator::access(), and cp_.

Referenced by set_cp().

Here is the call graph for this function:

ControlPoint BezierVertex::get_control_point (  )  const

Definition at line 821 of file cell.C.

References cp_.

Referenced by BezierEdge::BezierEdge(), BezierMesh::consistency_check_helper(), BezierMesh::delete_vertex(), BezierTriangle::get_edge_index_by_cps(), ConformalMesher::insert_d0_vertices(), and BezierMesh::replace_control_point().

const LinearData & BezierVertex::get_dp (  )  const

Return the DataPoint's value Note that this is the LinearData not the DataPoint.

Returns:
The LinearData at this DataPoint

Definition at line 830 of file cell.C.

References dp_.

Referenced by BezierMesh::add_straight_bezier_edge(), get_data(), and operator<<().

LinearData & BezierVertex::access_dp (  ) 

Return read/write access to the DataPoint's value.

Definition at line 836 of file cell.C.

References PersistantList< Value >::iterator::access(), and dp_.

Referenced by set_data(), and set_dp().

Here is the call graph for this function:

DataPoint BezierVertex::get_data_point (  )  const

Definition at line 841 of file cell.C.

References dp_.

Referenced by BezierMesh::consistency_check_helper(), and BezierMesh::delete_vertex().

int BezierVertex::containment_dimension (  )  const

Return the Containment Dimention of this vertex.

Constinment dimention is:

Definition at line 795 of file cell.C.

References bdry_edge_, and bdry_vertex_.

Referenced by get_bdry_edge(), get_bdry_vertex(), get_u(), is_boundary(), operator<<(), and BezierMesh::remove_vertex().

bool BezierVertex::is_boundary (  )  const

Definition at line 801 of file cell.C.

References containment_dimension().

Referenced by BezierMesh::delete_vertex().

Here is the call graph for this function:

const BoundaryEdge * BezierVertex::get_bdry_edge (  )  const

Definition at line 909 of file cell.C.

References bdry_edge_, and containment_dimension().

Referenced by operator<<().

Here is the call graph for this function:

BoundaryEdge * BezierVertex::get_bdry_edge (  ) 

Definition at line 915 of file cell.C.

References bdry_edge_, and containment_dimension().

Here is the call graph for this function:

const BoundaryVertex * BezierVertex::get_bdry_vertex (  )  const

Definition at line 921 of file cell.C.

References bdry_vertex_, and containment_dimension().

Referenced by operator<<().

Here is the call graph for this function:

BoundaryVertex * BezierVertex::get_bdry_vertex (  ) 

Definition at line 927 of file cell.C.

References bdry_vertex_, and containment_dimension().

Here is the call graph for this function:

double BezierVertex::get_u ( const BoundaryEdge be,
const BezierVertex opposite 
) const

Lookup the u-value along a BoundaryEdge, with respect to given opposite BezierVertex.

Clearly, we must be a vertex on a constraint edge: it is an error to call this function on a D2 vertex.

If this BezierVertex is a D1 vertex, then the u-value is known already, so return it.

If this BezierVertex is a D0 vertex, then there are possibly many BoundaryEdges for it to have a u-value on. We take the BoundaryEdge given to us as the edge on which to find the u-value.

However, if the BoundaryEdge is a self-loop then this BezierVertex will be the first and last vertex along the spline, and so have two valid u-values. Thus, we take the opposite vertex as well, which is the BezierVertex right before, or right after this vertex in the parametrization of the spline. Thus if we want the u-value with this BezierVertex as the last in the parametrization, then opposite should be the second to last vertex.

Parameters:
be The BoundaryEdge along which the u-value is requested
opposite The vertex immediately before or after this vertex in parametrization
Returns:
The u-value along the BoundaryEdge, with respect to the given opposite vertex

Definition at line 982 of file cell.C.

References QBSpline::closed, containment_dimension(), QBSpline::evaluate(), get_cp(), BoundaryEdge::get_spline(), get_u(), QBSpline::k, and QBSpline::vertexs.

Referenced by BezierMesh::insert_edge_midpoint(), operator<<(), and BezierMesh::remove_vertex().

Here is the call graph for this function:

double BezierVertex::get_u ( const BezierEdge e  )  const

Get the u-value of this vertex along the BoundaryEdge cooresponding the the BezierEdge given.

This function is a wrapper for BezierVertex::get_u(BoundaryEdge*,BezierVertex*). Given a BezierEdge that is itself a part of a BoundaryEdge, we can look up that BoundaryEdge. We use the opposite vertex along the given BezierEdge as the opposite vertex. This gives the BoundaryEdge and BezierVertex needed to call the get_u(BoundaryEdge*,BezierVertex*) method.

If the given edge is not a super-cell of this vertex, or not a boundary edge, then fail with a -1.0 as the u-value.

Parameters:
e The BezierEdge to look for a BoundaryEdge on.
Returns:
The u-value along the BoundaryEdge with repsect to the given BezierEdge

Definition at line 947 of file cell.C.

References BezierEdge::get_bdry_edge(), get_u(), BezierEdge::get_vertex(), and VertexCell::has_edge().

Here is the call graph for this function:

double BezierVertex::get_u (  )  const

Get the u-value of this vertex along the BoundaryEdge of which it is a D1 vertex.

Definition at line 1021 of file cell.C.

References containment_dimension(), and u_.

Referenced by get_u(), and set_bdry().

Here is the call graph for this function:

void BezierVertex::print (  )  const

Print info.

Definition at line 847 of file cell.C.

BezierVertex::declare_iterators_any ( edge  ,
edges  ,
BezierEdge   
)

void BezierVertex::replace_cp ( const ControlPoint newp  )  [private]

Replace the control point. The caller (BezierMesh) must dispose of the now-obsolete control point, and must synchronize with the edges.

Definition at line 1029 of file cell.C.

References cp_.

Referenced by BezierMesh::replace_control_point().

BezierVertex& BezierVertex::operator= ( const BezierVertex o  )  [private]


Friends And Related Function Documentation

friend class BezierMesh [friend]

Definition at line 541 of file cell.h.


Member Data Documentation

ControlPoint BezierVertex::cp_ [private]

An iterator to the geometric data (Point2D) at this vertex.

Definition at line 546 of file cell.h.

Referenced by access_cp(), get_control_point(), get_cp(), and replace_cp().

DataPoint BezierVertex::dp_ [private]

An iterator to the functional data (LinearData) at this vertex.

Definition at line 547 of file cell.h.

Referenced by access_dp(), get_data_point(), and get_dp().

BoundaryEdge* BezierVertex::bdry_edge_ [private]

Pointer to the BoundaryEdge if this vertex is a D1.

Definition at line 548 of file cell.h.

Referenced by containment_dimension(), get_bdry_edge(), and set_bdry().

BoundaryVertex* BezierVertex::bdry_vertex_ [private]

Pointer to the BoundaryVertex if this vertex is a D0.

Definition at line 549 of file cell.h.

Referenced by containment_dimension(), get_bdry_vertex(), and set_bdry().

double BezierVertex::u_ [private]

If the vertex is a D1 this is the u-value along the BoundaryEdge.

Definition at line 550 of file cell.h.

Referenced by get_u(), and set_bdry().


The documentation for this class was generated from the following files:
Generated on Mon May 24 09:53:33 2010 for TUMBLE by  doxygen 1.5.2