Panda3D

Loading...
Searching...
No Matches
eggMesherFanMaker.h
Go to the documentation of this file.
1/**
2 * PANDA 3D SOFTWARE
3 * Copyright (c) Carnegie Mellon University. All rights reserved.
4 *
5 * All use of this software is subject to the terms of the revised BSD
6 * license. You should have received a copy of this license along
7 * with this source code in a file named "LICENSE."
8 *
9 * @file eggMesherFanMaker.h
10 * @author drose
11 * @date 2005-03-22
12 */
13
14#ifndef EGGMESHERFANMAKER_H
15#define EGGMESHERFANMAKER_H
16
17#include "pandabase.h"
18
19#include "eggMesherEdge.h"
20#include "eggMesherStrip.h"
21#include "config_egg.h"
22#include "plist.h"
23#include "pvector.h"
24
25#include "pnotify.h"
26#include "mathNumbers.h"
27
28 class EggMesher;
29
30/**
31 * This class is used by EggMesher::find_fans() to attempt to make an
32 * EggTriangleFan out of the polygons connected to the indicated vertex.
33 */
34 class EXPCL_PANDA_EGG EggMesherFanMaker {
35 public:
36 typedef plist<const EggMesherEdge *> Edges;
37 typedef plist<EggMesherStrip *> Strips;
38
39 EggMesherFanMaker(int vertex, EggMesherStrip *tri,
40 EggMesher *mesher);
41 EggMesherFanMaker(const EggMesherFanMaker &copy);
42 void operator = (const EggMesherFanMaker &copy);
43
44 INLINE bool operator < (const EggMesherFanMaker &other) const;
45 INLINE bool operator != (const EggMesherFanMaker &other) const;
46 INLINE bool operator == (const EggMesherFanMaker &other) const;
47
48 INLINE bool is_empty() const;
49 INLINE bool is_valid() const;
50 INLINE bool is_coplanar_with(const EggMesherFanMaker &other) const;
51
52 bool join(EggMesherFanMaker &other);
53 double compute_angle() const;
54
55 int build(EggGroupNode *unrolled_tris);
56 int unroll(Strips::iterator strip_begin, Strips::iterator strip_end,
57 Edges::iterator edge_begin, Edges::iterator edge_end,
58 EggGroupNode *unrolled_tris);
59
60 void output(std::ostream &out) const;
61
62 int _vertex;
63 Edges _edges;
64 Strips _strips;
65 bool _planar;
66 EggMesher *_mesher;
67};
68
69INLINE std::ostream &operator << (std::ostream &out, const EggMesherFanMaker &fm);
70
71#include "eggMesherFanMaker.I"
72
73#endif
EggGroupNode
A base class for nodes in the hierarchy that are not leaf nodes.
Definition eggGroupNode.h:46
EggMesherFanMaker
This class is used by EggMesher::find_fans() to attempt to make an EggTriangleFan out of the polygons...
Definition eggMesherFanMaker.h:34
EggMesherFanMaker::compute_angle
double compute_angle() const
Returns the overall angle subtended by the fan, from the leading edge to the trailing edge,...
Definition eggMesherFanMaker.cxx:112
EggMesherFanMaker::join
bool join(EggMesherFanMaker &other)
Attempts to connect two fans end-to-end.
Definition eggMesherFanMaker.cxx:68
EggMesherFanMaker::unroll
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,...
Definition eggMesherFanMaker.cxx:259
EggMesherFanMaker::build
int build(EggGroupNode *unrolled_tris)
Begins the fanning process.
Definition eggMesherFanMaker.cxx:148
EggMesherFanMaker::is_coplanar_with
bool is_coplanar_with(const EggMesherFanMaker &other) const
Returns true if the strip and the other strip are coplanar.
Definition eggMesherFanMaker.I:63
EggMesherFanMaker::is_empty
bool is_empty() const
Returns true if the fan maker has no edges, false otherwise.
Definition eggMesherFanMaker.I:46
EggMesherFanMaker::is_valid
bool is_valid() const
Returns true if the fan maker has enough edges to define at least one fan, false otherwise.
Definition eggMesherFanMaker.I:55
EggMesherStrip
Represents a triangle strip or quad strip in progress, as assembled by the mesher.
Definition eggMesherStrip.h:30
EggMesher
Collects together unrelated EggPrimitives, determines their edge connectivity, and generates a set of...
Definition eggMesher.h:33
plist
This is our own Panda specialization on the default STL list.
Definition plist.h:35
config_egg.h
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
eggMesherEdge.h
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
eggMesherFanMaker.I
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
eggMesherStrip.h
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
mathNumbers.h
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
pandabase.h
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
plist.h
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
pnotify.h
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.
pvector.h
PANDA 3D SOFTWARE Copyright (c) Carnegie Mellon University.