#include </usr1/tp517/Tumble/trunk/src/tumble/cell.h>
Inheritance diagram for BezierVertex:
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 Point2D & | get_cp () const |
Return the ControlPoint's value Note that this is the Point2D not the ControlPoint. | |
Point2D & | access_cp () |
Return read/write access to the ControlPoint's value. | |
ControlPoint | get_control_point () const |
const LinearData & | get_dp () const |
Return the DataPoint's value Note that this is the LinearData not the DataPoint. | |
LinearData & | access_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 BoundaryEdge * | get_bdry_edge () const |
BoundaryEdge * | get_bdry_edge () |
const BoundaryVertex * | get_bdry_vertex () const |
BoundaryVertex * | get_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) | |
BezierVertex & | operator= (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. | |
BoundaryEdge * | bdry_edge_ |
Pointer to the BoundaryEdge if this vertex is a D1. | |
BoundaryVertex * | bdry_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 |
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.
typedef VertexCell BezierVertex::super [private] |
BezierVertex::BezierVertex | ( | PersistantStore & | , | |
const ControlPoint & | , | |||
const DataPoint & | ||||
) |
virtual BezierVertex::~BezierVertex | ( | ) | [inline, virtual] |
BezierVertex::BezierVertex | ( | const BezierVertex & | o | ) | [private] |
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.
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 .
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.
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 |
const Point2D & BezierVertex::get_cp | ( | ) | const |
Return the ControlPoint's value Note that this is the Point2D not the 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.
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.
be | The BoundaryEdge along which the u-value is requested | |
opposite | The vertex immediately before or after this vertex in parametrization |
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.
e | The BezierEdge to look for a BoundaryEdge on. |
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:
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] |
friend class BezierMesh [friend] |
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().