pfTopo(3pf) OpenGL Performer 3.2.2 libpf C++ Reference Pages pfTopo(3pf)NAMEpfTopo - Topology information of surfaces
FUNCTION SPECIFICATION
#include <Performer/pf/pfTopo.h>
pfTopo::pfTopo();
static pfType * pfTopo::getClassType(void);
void pfTopo::setDistanceTol(pfReal tol, pfLengthUnits u);
pfReal pfTopo::getDistanceTol();
void pfTopo::setSurface(int i, pfParaSurface *sur);
pfParaSurface* pfTopo::getSurface(int i);
int pfTopo::getSurfaceCount();
pfBoundary* pfTopo::getBoundary(int i);
int pfTopo::getBoundaryCount();
int pfTopo::getSolidCount();
pfSolid* pfTopo::getSolid(int i);
int pfTopo::addSolid(pfSolid *solid);
int pfTopo::addBoundary(pfBoundary *bnd);
int pfTopo::buildTopology();
int pfTopo::buildSolids();
static pfTopo* pfTopo::getGlobalTopo(int n);
static int pfTopo::getNumTopos();
PARENT CLASS FUNCTIONS
The OpenGL Performer class pfTopo is derived from the parent class
pfObject, so each of these member functions of class pfObject are also
directly usable with objects of class pfTopo. This is also true for
ancestor classes of class pfObject.
void* pfObject::operator new(size_t);
void* pfObject::operator new(size_t, pfFluxMemory *fmem);
void pfObject::setUserData(void *data);
void pfObject::setUserData(int slot, void *data);
Page 1
pfTopo(3pf) OpenGL Performer 3.2.2 libpf C++ Reference Pages pfTopo(3pf)
void* pfObject::getUserData(pfObject *obj);
void* pfObject::getUserData(pfObject *obj, int slot);
int pfObject::getNumUserData();
Since the class pfObject is itself derived from the parent class
pfMemory, objects of class pfTopo can also be used with these functions
designed for objects of class pfMemory.
void* pfMemory::getData(const void *ptr);
pfType * pfMemory::getType();
int pfMemory::isOfType(pfType *type);
int pfMemory::isExactType(pfType *type);
const char * pfMemory::getTypeName();
int pfMemory::copy(pfMemory *src);
int pfMemory::compare(const pfMemory *mem);
void pfMemory::print(uint which, uint verbose, char *prefix,
FILE *file);
int pfMemory::getArena(void *ptr);
void* pfMemory::getArena();
int pfMemory::ref();
int pfMemory::unref();
int pfMemory::unrefDelete();
int pfMemory::unrefGetRef();
int pfMemory::getRef();
int pfMemory::checkDelete();
int pfMemory::isFluxed();
void * pfMemory::getArena();
int pfMemory::getSize();
DESCRIPTIONpfTopo holds the topology information of the surfaces. The basic topology
information consists of the shared boundaries of any two surfaces. Such
connectivity information can be used to avoid cracks at tessellation
time, to find the shells (a set of connected surfaces) of a model, to
allow better mesh optimizations because the meshes are larger when there
are no cracks between adjacent surfaces.
This class provides functions pfTopo::buildTopology and the utility
function pfdTopoBuildTopologyTraverse to compute the connectivity
information for any given set of surfaces (stored in surface).
Another way to invoke topology computation is through the tessellator.
(See pfTessellateAction).
If the connectivity information is already known and you don't want to
invoke topology computation, you may choose to construct the topology
yourself using the member function pfTopo::addBoundary.
new(arena) allocates a pfTopo from the specified memory arena, or from
the process heap if arena is NULL. new allocates a pfTopo from the
default memory arena (see pfGetSharedArena). Like other pfObjects,
Page 2
pfTopo(3pf) OpenGL Performer 3.2.2 libpf C++ Reference Pages pfTopo(3pf)
pfTopos cannot be created statically, automatically on the stack or in
arrays. pfTopos should be deleted with pfDelete rather than the delete
operator.
pfTopo::getClassType returns the pfType* for the class pfTopo. the
pfType* returned by pfTopo::getClassType is the same as the pfType*
returned by invoking the virtual function getType on any instance of
class pfTopo. Because OpenGL Performer allows subclassing of built-in
types, when decisions are made based on the type of an object, it is
usually better to use the member function isOfType to test if an object
is of a type derived from a Performer type rather than to test for strict
equality of the pfType*'s.
pfTopo::setDistanceTol sets the tolerance for determining wheter curves
overlap or not at topology construction, and the member units which is
the measure unit in the object space.
pfTopo::getDistanceTol returns the tolerance which is used for
determining whether curves overlap or not at topology construction and
which can be set by pfTopo::setDistanceTol.
pfTopo::getSurface returns the i'th element of the surface array.
pfTopo::getSurfaceCount returns the number of surfaces.
pfTopo::getBoundary returns the i'th element of the boudary list.
pfTopo::getBoundaryCount returns the number of boundaries.
pfTopo::getSolidCount returns the number of solids (see
pfTopo::buildSolids.)
pfTopo::getSolid returns the i'th solid (see pfTopo::buildSolids.)
pfTopo::addSollid returns the index of solid in topo if successful and -1
otherwise.
pfTopo::addSurface adds a surface onto the surface list. Returns 0 if sur
was already in the list.
pfTopo::addBoundary adds a boundary onto the boundary list.
pfTopo::buildTopology Given a list of surfaces (surface), computes the
shared boundaries and junctions of these surfaces. The shared boundaries
are put into boundary, and the junctions are put into junction.
The previously existing boundaries and junctions, if any, are deleted.
In the current implementation, the junctions, which can be computed from
the boundaries, are not computed. Also notice that the cache space for
samplePoints is deallocated at the end of this function.
It assumes that the surfaces have been added to the topology data
Page 3
pfTopo(3pf) OpenGL Performer 3.2.2 libpf C++ Reference Pages pfTopo(3pf)
structure (pfTopo::addSurface) by the user. If the surface list is
empty, the method prints a warning message and returns.
pfTopo::buildSolids Creates solids (pfSolid) from the list of all
surfaces in this topology, and return the number of solids that have been
created. Each solid is a list of connected surfaces. These solids can be
accessed using pfTopo::getSolidCount and pfTopo::getSolid.
pfGetTopoGlobalTopopfTopo::getGlobalTopo returns a pointer to the n'th
pfTopo in the global topology list.
pfGetTopoNumTopospfTopo::getNumTopos returns the number of pfTopos stored
in the global topology list.
SEE ALSO
pfSolid, pfBoundary, pfJunction, pfTessellateAction,
pfTessParaSurfaceAction, pfdTopoBuildTopologyTraverse
Page 4