本文整理汇总了C++中MultiGrid::detach_from_vertices方法的典型用法代码示例。如果您正苦于以下问题:C++ MultiGrid::detach_from_vertices方法的具体用法?C++ MultiGrid::detach_from_vertices怎么用?C++ MultiGrid::detach_from_vertices使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MultiGrid
的用法示例。
在下文中一共展示了MultiGrid::detach_from_vertices方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: CopyGridLevel
void CopyGridLevel(MultiGrid& srcMG, Grid& destGrid,
ISubsetHandler& srcSH, ISubsetHandler& destSH,
int lvl, TAPos aPos)
{
Grid::VertexAttachmentAccessor<TAPos> aaPos(destGrid, aPos);
Grid::VertexAttachmentAccessor<TAPos> aaSrcPos(srcMG, aPos);
GridObjectCollection goc = srcMG.get_grid_objects();
AVertex aNewVrt;
srcMG.attach_to_vertices(aNewVrt);
Grid::VertexAttachmentAccessor<AVertex> aaNewVrt(srcMG, aNewVrt);
for(int si = destSH.num_subsets(); si < srcSH.num_subsets(); ++si)
{
destSH.subset_info(si) = srcSH.subset_info(si);
}
for(VertexIterator vrtIter = goc.begin<Vertex>(lvl); vrtIter != goc.end<Vertex>(lvl); ++vrtIter)
{
Vertex* srcVrt = *vrtIter;
Vertex* destVrt = *destGrid.create_by_cloning(srcVrt);
aaNewVrt[srcVrt] = destVrt;
aaPos[destVrt] = aaSrcPos[srcVrt];
destSH.assign_subset(destVrt, srcSH.get_subset_index(srcVrt));
}
CopyGridLevelElements<Edge>(srcMG, destGrid, srcSH, destSH, lvl, aNewVrt);
CopyGridLevelElements<Face>(srcMG, destGrid, srcSH, destSH, lvl, aNewVrt);
CopyGridLevelElements<Volume>(srcMG, destGrid, srcSH, destSH, lvl, aNewVrt);
srcMG.detach_from_vertices(aNewVrt);
}
示例2: SaveGridHierarchyTransformed
bool SaveGridHierarchyTransformed(MultiGrid& mg, ISubsetHandler& sh,
const char* filename, number offset)
{
PROFILE_FUNC_GROUP("grid");
APosition aPos;
// uses auto-attach
Grid::AttachmentAccessor<Vertex, APosition> aaPos(mg, aPos, true);
// copy the existing position to aPos. We take care of dimension differences.
// Note: if the method was implemented for domains, this could be implemented
// in a nicer way.
if(mg.has_vertex_attachment(aPosition))
ConvertMathVectorAttachmentValues<Vertex>(mg, aPosition, aPos);
else if(mg.has_vertex_attachment(aPosition2))
ConvertMathVectorAttachmentValues<Vertex>(mg, aPosition2, aPos);
else if(mg.has_vertex_attachment(aPosition1))
ConvertMathVectorAttachmentValues<Vertex>(mg, aPosition1, aPos);
// iterate through all vertices and apply an offset depending on their level.
for(size_t lvl = 0; lvl < mg.num_levels(); ++lvl){
for(VertexIterator iter = mg.begin<Vertex>(lvl);
iter != mg.end<Vertex>(lvl); ++iter)
{
aaPos[*iter].z() += (number)lvl * offset;
}
}
// finally save the grid
bool writeSuccess = SaveGridToFile(mg, sh, filename, aPos);
// clean up
mg.detach_from_vertices(aPos);
return writeSuccess;
}
示例3: SaveSurfaceViewTransformed
bool SaveSurfaceViewTransformed(MultiGrid& mg, const SurfaceView& sv,
const char* filename, number offset)
{
PROFILE_FUNC_GROUP("grid");
APosition aPos;
// uses auto-attach
Grid::AttachmentAccessor<Vertex, APosition> aaPos(mg, aPos, true);
// copy the existing position to aPos. We take care of dimension differences.
// Note: if the method was implemented for domains, this could be implemented
// in a nicer way.
if(mg.has_vertex_attachment(aPosition))
ConvertMathVectorAttachmentValues<Vertex>(mg, aPosition, aPos);
else if(mg.has_vertex_attachment(aPosition2))
ConvertMathVectorAttachmentValues<Vertex>(mg, aPosition2, aPos);
else if(mg.has_vertex_attachment(aPosition1))
ConvertMathVectorAttachmentValues<Vertex>(mg, aPosition1, aPos);
// iterate through all vertices and apply an offset depending on their level.
for(size_t lvl = 0; lvl < mg.num_levels(); ++lvl){
for(VertexIterator iter = mg.begin<Vertex>(lvl);
iter != mg.end<Vertex>(lvl); ++iter)
{
aaPos[*iter].z() += (number)lvl * offset;
}
}
// create a subset handler which holds different subsets for the different interface types
SubsetHandler sh(mg);
AssignSubsetsBySurfaceViewState<Vertex>(sh, sv, mg);
AssignSubsetsBySurfaceViewState<Edge>(sh, sv, mg);
AssignSubsetsBySurfaceViewState<Face>(sh, sv, mg);
AssignSubsetsBySurfaceViewState<Volume>(sh, sv, mg);
AssignSubsetColors(sh);
EraseEmptySubsets(sh);
// finally save the grid
bool writeSuccess = SaveGridToFile(mg, sh, filename, aPos);
// clean up
mg.detach_from_vertices(aPos);
return writeSuccess;
}