ug4
|
subdivision classes and algorithms More...
Classes | |
class | ug::SubdivRules_PLoop |
A singleton that stores all rules for a piecewise-loop subdivision surface. More... | |
Functions | |
bool | ug::ProjectToLimitLoop (Grid &grid, APosition &aProjPos) |
projects surface vertices to their limit subdivision surface position More... | |
template<class TAVrtPos > | |
void | ug::ProjectToLimitPLoop (Grid &grid, TAVrtPos aPos, TAVrtPos aProjPos) |
projects all vertices in the given grid to their limit-positions using the piecewise loop scheme. More... | |
template<class TAVrtPos > | |
void | ug::ProjectToLimitSubdivBoundary (Grid &grid, TAVrtPos aPos, TAVrtPos aProjPos) |
projects all boundary vertices in the given grid to their limit-positions using the piecewise loop scheme. More... | |
subdivision classes and algorithms
Subdivision is a special form of refinement, where smooth surfaces are described through repeated refinement and application of position masks.
projects surface vertices to their limit subdivision surface position
References ug::aPosition, ug::Grid::associated_edges_begin(), ug::Grid::associated_edges_end(), ug::EdgeVertices::vertex(), ug::Grid::vertices_begin(), and ug::Grid::vertices_end().
void ug::ProjectToLimitPLoop | ( | Grid & | grid, |
TAVrtPos | aPos, | ||
TAVrtPos | aProjPos | ||
) |
projects all vertices in the given grid to their limit-positions using the piecewise loop scheme.
References ug::Grid::associated_edges_begin(), ug::Grid::associated_edges_end(), ug::Grid::attach_to_vertices(), ug::CollectSurfaceNeighborsSorted(), ug::Grid::detach_from_vertices(), ug::GetConnectedVertex(), ug::Grid::has_vertex_attachment(), ug::SubdivRules_PLoop::inst(), ug::IsBoundaryEdge2D(), ug::IsBoundaryEdge3D(), ug::IsBoundaryVertex2D(), ug::Grid::num(), ug::SubdivRules_PLoop::proj_crease_weights(), ug::SubdivRules_PLoop::proj_inner_center_weight(), ug::SubdivRules_PLoop::proj_inner_crease_nbr_weights(), ug::SubdivRules_PLoop::proj_inner_nbr_weight(), ug::AttachmentAccessor< TElem, TAttachment, TElemHandler >::swap(), UG_LOG, ug::VecScale(), ug::VecScaleAdd(), ug::Grid::vertices_begin(), and ug::Grid::vertices_end().
void ug::ProjectToLimitSubdivBoundary | ( | Grid & | grid, |
TAVrtPos | aPos, | ||
TAVrtPos | aProjPos | ||
) |
projects all boundary vertices in the given grid to their limit-positions using the piecewise loop scheme.
References ug::Grid::associated_edges_begin(), ug::Grid::associated_edges_end(), ug::Grid::attach_to_vertices(), ug::Grid::detach_from_vertices(), ug::GetConnectedVertex(), ug::Grid::has_vertex_attachment(), ug::SubdivRules_PLoop::inst(), ug::IsBoundaryEdge2D(), ug::IsBoundaryVertex2D(), ug::SubdivRules_PLoop::proj_crease_weights(), ug::AttachmentAccessor< TElem, TAttachment, TElemHandler >::swap(), ug::VecScaleAdd(), ug::Grid::vertices_begin(), and ug::Grid::vertices_end().