ug4
|
Applies piecewise smooth loop subdivision rules. More...
#include <subdivision_projector.h>
Protected Member Functions | |
size_t | concerned_nbr_faces (Edge *edge, Grid::face_traits::secure_container *assFaces=NULL, Face *facesOut[2]=NULL) |
size_t | nbr_crease_edges (Vertex *vrt, Grid::edge_traits::secure_container *assEdges=NULL, Edge *creaseEdgesOut[2]=NULL) |
Protected Member Functions inherited from ug::RefinementProjector | |
IGeometry3d & | geom () |
const IGeometry3d & | geom () const |
template<class TElem > | |
bool | is_concerned (TElem *e) |
vector3 | pos (Vertex *v) const |
void | set_pos (Vertex *v, const vector3 &p) |
Private Types | |
typedef std::vector< std::pair< Vertex *, vector3 > > | new_pos_vec_t |
Private Member Functions | |
template<class Archive > | |
void | serialize (Archive &ar, const unsigned int version) |
Private Attributes | |
Grid::edge_traits::callback | m_cbIsCrease |
bool | m_customConcernedElementsCallbackUsed |
new_pos_vec_t | m_newPositions |
Friends | |
class | boost::serialization::access |
Applies piecewise smooth loop subdivision rules.
|
private |
|
inline |
|
inline |
|
inline |
References new().
|
inline |
References new().
|
protected |
References ug::Grid::associated_elements(), and ug::PointerConstArray< TPtr >::size().
|
protected |
References ug::Grid::associated_elements(), and ug::PointerConstArray< TPtr >::size().
called when a new vertex was created from an old edge.
Reimplemented from ug::RefinementProjector.
References ug::Grid::associated_elements(), ug::GetConnectedVertex(), boost::num_vertices(), p, ug::SubdivRules_PLoop::ref_odd_crease_weights(), ug::SubdivRules_PLoop::ref_odd_inner_weights(), ug::PointerConstArray< TPtr >::size(), ug::VecScaleAdd(), and ug::EdgeVertices::vertex().
|
virtual |
called before refinement begins
if not NULL, the specified sub-grid will contains all elements that will be refined and are affected by the given projector.
If the specialized implementation of refinement_begins requires this subgrid, the method 'refinement_begins_requires_subgrid' should be specialized and should return 'true'. In this case the subgrid should always be provided by the caller. If you call 'RefinementProjector::refinement_begins(sg);' at the beginning of your specialization, an error will be thrown if this is not the case.
Reimplemented from ug::RefinementProjector.
References ug::Grid::associated_elements(), ug::GetConnectedVertex(), ug::ISubGrid::goc(), lg_end_for, lg_for_each_const, p, ug::SubdivRules_PLoop::ref_even_crease_weights(), ug::SubdivRules_PLoop::ref_even_inner_center_weight(), ug::SubdivRules_PLoop::ref_even_inner_nbr_weight(), ug::PointerConstArray< TPtr >::size(), ug::VecAdd(), ug::VecScaleAdd(), and ug::VecSet().
|
inlinevirtual |
returns 'true' if a specialized projector requires the subgrid during its 'refinement_begins' method.
Reimplemented from ug::RefinementProjector.
|
virtual |
called when refinement is done
Reimplemented from ug::RefinementProjector.
References ug::MultiGrid::get_child_vertex().
|
inlineprivate |
References UG_EMPTY_BASE_CLASS_SERIALIZATION.
|
inlinevirtual |
Reimplemented from ug::RefinementProjector.
References m_customConcernedElementsCallbackUsed, and ug::RefinementProjector::set_concerned_elements().
|
inlinevirtual |
References m_cbIsCrease.
|
inlinevirtual |
|
friend |
|
private |
Referenced by set_crease_callback().
|
private |
Referenced by set_concerned_elements(), and set_geometry().
|
private |