15 #ifndef EGGMESHERFANMAKER_H 16 #define EGGMESHERFANMAKER_H 18 #include "pandabase.h" 20 #include "eggMesherEdge.h" 21 #include "eggMesherStrip.h" 22 #include "config_egg.h" 27 #include "mathNumbers.h" 59 int unroll(Strips::iterator strip_begin, Strips::iterator strip_end,
60 Edges::iterator edge_begin, Edges::iterator edge_end,
63 void output(ostream &out)
const;
74 #include "eggMesherFanMaker.I" double compute_angle() const
Returns the overall angle subtended by the fan, from the leading edge to the trailing edge...
bool operator==(const EggMesherFanMaker &other) const
Provides a unique ordering between different fan makers based on the leading edge.
A base class for nodes in the hierarchy that are not leaf nodes.
int unroll(Strips::iterator strip_begin, Strips::iterator strip_end, Edges::iterator edge_begin, Edges::iterator edge_end, EggGroupNode *unrolled_tris)
Unrolls a planar subset of the current working fan, defined by the given iterators, into a series of triangles that zig-zag back and forth for better tristripping properties.
This class is used by EggMesher::find_fans() to attempt to make an EggTriangleFan out of the polygons...
Collects together unrelated EggPrimitives, determines their edge connectivity, and generates a set of...
int build(EggGroupNode *unrolled_tris)
Begins the fanning process.
bool is_coplanar_with(const EggMesherFanMaker &other) const
Returns true if the strip and the other strip are coplanar.
Represents a triangle strip or quad strip in progress, as assembled by the mesher.
bool operator<(const EggMesherFanMaker &other) const
Provides a unique ordering between different fan makers based on the leading edge.
bool join(EggMesherFanMaker &other)
Attempts to connect two fans end-to-end.
bool is_valid() const
Returns true if the fan maker has enough edges to define at least one fan, false otherwise.
bool operator!=(const EggMesherFanMaker &other) const
Provides a unique ordering between different fan makers based on the leading edge.
bool is_empty() const
Returns true if the fan maker has no edges, false otherwise.