#include <loopsubdiv.h>
Public Member Functions | |
LoopSubdiv (const Transform *o2w, const Transform *w2o, bool ro, int nt, int nv, const int *vi, const Point *P, int nlevels) | |
~LoopSubdiv () | |
bool | CanIntersect () const |
void | Refine (vector< Reference< Shape > > &refined) const |
BBox | ObjectBound () const |
BBox | WorldBound () const |
Static Private Member Functions | |
static float | beta (int valence) |
static Point | weightOneRing (SDVertex *vert, float beta) |
static Point | weightBoundary (SDVertex *vert, float beta) |
static float | gamma (int valence) |
Private Attributes | |
int | nLevels |
vector< SDVertex * > | vertices |
vector< SDFace * > | faces |
Definition at line 37 of file loopsubdiv.h.
LoopSubdiv::LoopSubdiv | ( | const Transform * | o2w, | |
const Transform * | w2o, | |||
bool | ro, | |||
int | nt, | |||
int | nv, | |||
const int * | vi, | |||
const Point * | P, | |||
int | nlevels | |||
) |
Definition at line 148 of file loopsubdiv.cpp.
References SDVertex::boundary, SDFace::f, SDEdge::f, SDEdge::f0edgeNum, faces, NEXT, SDFace::nextFace(), nLevels, SDVertex::regular, SDVertex::startFace, SDFace::v, SDVertex::valence(), and vertices.
LoopSubdiv::~LoopSubdiv | ( | ) |
Definition at line 218 of file loopsubdiv.cpp.
static float LoopSubdiv::beta | ( | int | valence | ) | [inline, static, private] |
Definition at line 50 of file loopsubdiv.h.
bool LoopSubdiv::CanIntersect | ( | ) | const [virtual] |
Reimplemented from Shape.
Definition at line 240 of file loopsubdiv.cpp.
static float LoopSubdiv::gamma | ( | int | valence | ) | [inline, static, private] |
BBox LoopSubdiv::ObjectBound | ( | ) | const [virtual] |
Reimplemented from Shape.
Definition at line 245 of file loopsubdiv.cpp.
References ParamSet::AddInt(), ParamSet::AddNormal(), ParamSet::AddPoint(), MemoryArena::Alloc(), arena, beta(), SDVertex::boundary, SDVertex::child, SDFace::children, CreateTriangleMeshShape(), Cross(), SDFace::f, faces, gamma(), M_PI, NEXT, nLevels, Shape::ObjectToWorld, SDVertex::oneRing(), SDFace::otherVert(), P, SDVertex::P, PREV, SDVertex::regular, Shape::ReverseOrientation, SDVertex::startFace, SDEdge::v, SDFace::v, SDVertex::valence(), vertices, SDFace::vnum(), weightBoundary(), weightOneRing(), and Shape::WorldToObject.
Definition at line 475 of file loopsubdiv.cpp.
References ALLOCA, SDVertex::oneRing(), SDVertex::P, P, and SDVertex::valence().
Referenced by Refine().
Definition at line 440 of file loopsubdiv.cpp.
References ALLOCA, SDVertex::oneRing(), SDVertex::P, P, and SDVertex::valence().
Referenced by Refine().
BBox LoopSubdiv::WorldBound | ( | ) | const [virtual] |
Reimplemented from Shape.
Definition at line 232 of file loopsubdiv.cpp.
References Shape::ObjectToWorld, Union(), and vertices.
vector<SDFace *> LoopSubdiv::faces [private] |
Definition at line 63 of file loopsubdiv.h.
Referenced by LoopSubdiv(), Refine(), and ~LoopSubdiv().
int LoopSubdiv::nLevels [private] |
Definition at line 61 of file loopsubdiv.h.
Referenced by LoopSubdiv(), and Refine().
vector<SDVertex *> LoopSubdiv::vertices [private] |
Definition at line 62 of file loopsubdiv.h.
Referenced by LoopSubdiv(), ObjectBound(), Refine(), WorldBound(), and ~LoopSubdiv().