Panda3D

Public Types | Public Member Functions | Public Attributes | List of all members
EggMesherFanMaker Class Reference

This class is used by EggMesher::find_fans() to attempt to make an EggTriangleFan out of the polygons connected to the indicated vertex. More...

`#include "eggMesherFanMaker.h"`

## Public Types
typedef plist< const EggMesherEdge * > | Edges
typedef plist< EggMesherStrip * > | Strips

## Public Member Functions
| EggMesherFanMaker (const EggMesherFanMaker &copy)
| EggMesherFanMaker (int vertex, EggMesherStrip *tri, EggMesher *mesher)
int | build (EggGroupNode *unrolled_tris)
| Begins the fanning process. More...
double | compute_angle () const
| Returns the overall angle subtended by the fan, from the leading edge to the trailing edge, in degrees. More...
bool | is_coplanar_with (const EggMesherFanMaker &other) const
| Returns true if the strip and the other strip are coplanar. More...
bool | is_empty () const
| Returns true if the fan maker has no edges, false otherwise. More...
bool | is_valid () const
| Returns true if the fan maker has enough edges to define at least one fan, false otherwise. More...
bool | join (EggMesherFanMaker &other)
| Attempts to connect two fans end-to-end. More...
bool | operator!= (const EggMesherFanMaker &other) const
| Provides a unique ordering between different fan makers based on the leading edge. More...
bool | operator< (const EggMesherFanMaker &other) const
| Provides a unique ordering between different fan makers based on the leading edge. More...
void | operator= (const EggMesherFanMaker &copy)
bool | operator== (const EggMesherFanMaker &other) const
| Provides a unique ordering between different fan makers based on the leading edge. More...
void | output (std::ostream &out) const
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. More...

## Public Attributes
Edges | _edges
EggMesher * | _mesher
bool | _planar
Strips | _strips
int | _vertex

## Detailed Description

This class is used by EggMesher::find_fans() to attempt to make an EggTriangleFan out of the polygons connected to the indicated vertex.

Definition at line 34 of file eggMesherFanMaker.h.

## Member Function Documentation

## ◆ build()

int EggMesherFanMaker::build | ( | EggGroupNode * | unrolled_tris | ) |

Begins the fanning process.

Searches for triangles and connects them into a fan.

In certain cases, if egg_unroll_fans is enabled, the resulting fan may be retesselated into a series of zig-zag triangles, which are stored in unrolled_tris. Otherwise, an EggMesherStrip (representing the fan) is created and added to the mesher.

The return value is (loosely) the number of primitives created.

Definition at line 147 of file eggMesherFanMaker.cxx.

## ◆ compute_angle()

double EggMesherFanMaker::compute_angle | ( |  | ) | const

Returns the overall angle subtended by the fan, from the leading edge to the trailing edge, in degrees.

Definition at line 111 of file eggMesherFanMaker.cxx.

## ◆ is_coplanar_with()

bool EggMesherFanMaker::is_coplanar_with | ( | const EggMesherFanMaker & | other | ) | const
| inline

Returns true if the strip and the other strip are coplanar.

Definition at line 62 of file eggMesherFanMaker.I.

## ◆ is_empty()

bool EggMesherFanMaker::is_empty | ( |  | ) | const
| inline

Returns true if the fan maker has no edges, false otherwise.

Definition at line 45 of file eggMesherFanMaker.I.

## ◆ is_valid()

bool EggMesherFanMaker::is_valid | ( |  | ) | const
| inline

Returns true if the fan maker has enough edges to define at least one fan, false otherwise.

Definition at line 54 of file eggMesherFanMaker.I.

## ◆ join()

bool EggMesherFanMaker::join | ( | EggMesherFanMaker & | other | ) |

Attempts to connect two fans end-to-end.

They must both share the same common vertex and a common edge.

The return value is true if the fans were successfully joined, or false if they could not be.

Definition at line 67 of file eggMesherFanMaker.cxx.

## ◆ operator!=()

bool EggMesherFanMaker::operator!= | ( | const EggMesherFanMaker & | other | ) | const
| inline

Provides a unique ordering between different fan makers based on the leading edge.

Definition at line 28 of file eggMesherFanMaker.I.

## ◆ operator<()

bool EggMesherFanMaker::operator< | ( | const EggMesherFanMaker & | other | ) | const
| inline

Provides a unique ordering between different fan makers based on the leading edge.

Definition at line 18 of file eggMesherFanMaker.I.

## ◆ operator==()

bool EggMesherFanMaker::operator== | ( | const EggMesherFanMaker & | other | ) | const
| inline

Provides a unique ordering between different fan makers based on the leading edge.

Definition at line 37 of file eggMesherFanMaker.I.

## ◆ unroll()

int EggMesherFanMaker::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.

The new triangles are added to unrolled_tris; the return value is 1 if successful, or 0 otherwise.

Definition at line 258 of file eggMesherFanMaker.cxx.

The documentation for this class was generated from the following files:

- panda/src/egg/eggMesherFanMaker.h
- panda/src/egg/eggMesherFanMaker.cxx
- panda/src/egg/eggMesherFanMaker.I