Panda3D
|
Represents one edge of a triangle, as used by the EggMesher to discover connected triangles. More...
#include "eggMesherEdge.h"
Public Types | |
typedef plist< EggMesherStrip * > | Strips |
Public Member Functions | |
EggMesherEdge (int vi_a, int vi_b) | |
Defines an edge as a pair of vertices. | |
EggMesherEdge (const EggMesherEdge ©) | |
void | change_strip (EggMesherStrip *from, EggMesherStrip *to) |
Reparents the edge from strip "from" to strip "to". | |
EggMesherEdge * | common_ptr () |
Returns an arbitrary pointer that is used to represent both this edge and its opposite. | |
LVecBase3d | compute_box (const EggVertexPool *vertex_pool) const |
Returns a 3-component vector that represents the lengths of the sides of the smalled axis-aligned box that contains the edge. | |
double | compute_length (const EggVertexPool *vertex_pool) const |
Returns the length of the edge in model units. | |
bool | contains_vertex (int vi) const |
Returns true if the edge contains the indicated vertex index, false otherwise. | |
bool | matches (const EggMesherEdge &other) const |
Returns true if this edge represents the same line segment as the other edge, in either direction. | |
bool | operator!= (const EggMesherEdge &other) const |
bool | operator< (const EggMesherEdge &other) const |
Defines an arbitrary ordering for edges, used for putting edges in a sorted container. | |
bool | operator== (const EggMesherEdge &other) const |
void | output (ostream &out) const |
Formats the edge for output in some sensible way. | |
void | remove (EggMesherStrip *strip) |
Removes an edge from a particular strip. | |
Public Attributes | |
EggMesherEdge * | _opposite |
Strips | _strips |
int | _vi_a |
int | _vi_b |
Represents one edge of a triangle, as used by the EggMesher to discover connected triangles.
The edge is actually represented as a pair of vertex indices into the same vertex pool.
Definition at line 32 of file eggMesherEdge.h.
EggMesherEdge::EggMesherEdge | ( | int | vi_a, |
int | vi_b | ||
) | [inline] |
Defines an edge as a pair of vertices.
The _opposite pointer should be filled in explicitly by the caller.
Definition at line 23 of file eggMesherEdge.I.
void EggMesherEdge::change_strip | ( | EggMesherStrip * | from, |
EggMesherStrip * | to | ||
) |
Reparents the edge from strip "from" to strip "to".
Definition at line 38 of file eggMesherEdge.cxx.
EggMesherEdge * EggMesherEdge::common_ptr | ( | ) | [inline] |
Returns an arbitrary pointer that is used to represent both this edge and its opposite.
this->common_ptr() is guaranteed to be the same as this->_opposite->common_ptr().
Definition at line 73 of file eggMesherEdge.I.
LVecBase3d EggMesherEdge::compute_box | ( | const EggVertexPool * | vertex_pool | ) | const [inline] |
Returns a 3-component vector that represents the lengths of the sides of the smalled axis-aligned box that contains the edge.
That is, the projection the edge onto each axis.
Definition at line 132 of file eggMesherEdge.I.
References EggVertex::get_pos3(), and EggVertexPool::get_vertex().
double EggMesherEdge::compute_length | ( | const EggVertexPool * | vertex_pool | ) | const [inline] |
Returns the length of the edge in model units.
Definition at line 117 of file eggMesherEdge.I.
References EggVertex::get_pos3(), EggVertexPool::get_vertex(), and LVecBase3d::length().
Referenced by EggMesherStrip::pick_mate().
bool EggMesherEdge::contains_vertex | ( | int | vi | ) | const [inline] |
Returns true if the edge contains the indicated vertex index, false otherwise.
Definition at line 48 of file eggMesherEdge.I.
Referenced by EggMesherStrip::find_adjacent_edge(), EggMesherStrip::find_opposite_edge(), and EggMesherStrip::mate_pieces().
bool EggMesherEdge::matches | ( | const EggMesherEdge & | other | ) | const [inline] |
Returns true if this edge represents the same line segment as the other edge, in either direction.
Definition at line 59 of file eggMesherEdge.I.
Referenced by EggMesherStrip::mate_strips().
bool EggMesherEdge::operator< | ( | const EggMesherEdge & | other | ) | const [inline] |
Defines an arbitrary ordering for edges, used for putting edges in a sorted container.
Definition at line 104 of file eggMesherEdge.I.
void EggMesherEdge::output | ( | ostream & | out | ) | const |
Formats the edge for output in some sensible way.
Definition at line 62 of file eggMesherEdge.cxx.
void EggMesherEdge::remove | ( | EggMesherStrip * | strip | ) |
Removes an edge from a particular strip.
Definition at line 24 of file eggMesherEdge.cxx.
Referenced by EggMesherStrip::mate_pieces().