Refinement
Meshes.refine
— Functionrefine(mesh, method)
Refine mesh
with refinement method
.
Meshes.RefinementMethod
— TypeRefinementMethod
A method for refining meshes.
TriRefinement
Meshes.TriRefinement
— TypeTriRefinement()
Refinement of polygonal meshes into triangles. A n-gon is subdivided into n-2 triangles.
grid = CartesianGrid(10, 10)
# refine three times
ref1 = refine(grid, TriRefinement())
ref2 = refine(ref1, TriRefinement())
ref3 = refine(ref2, TriRefinement())
fig = Mke.Figure(resolution = (800, 800))
viz(fig[1,1], grid, showfacets = true)
viz(fig[1,2], ref1, showfacets = true)
viz(fig[2,1], ref2, showfacets = true)
viz(fig[2,2], ref3, showfacets = true)
fig
QuadRefinement
Meshes.QuadRefinement
— TypeQuadRefinement()
Refinement of polygonal meshes into quadrangles. A n-gon is subdivided into n quadrangles.
grid = CartesianGrid(10, 10)
# refine three times
ref1 = refine(grid, QuadRefinement())
ref2 = refine(ref1, QuadRefinement())
ref3 = refine(ref2, QuadRefinement())
fig = Mke.Figure(resolution = (800, 800))
viz(fig[1,1], grid, showfacets = true)
viz(fig[1,2], ref1, showfacets = true)
viz(fig[2,1], ref2, showfacets = true)
viz(fig[2,2], ref3, showfacets = true)
fig
Catmull-Clark
Meshes.CatmullClark
— TypeCatmullClark()
Catmull-Clark refinement of polygonal meshes.
Strictly speaking, the Catmull-Clark algorithm is used for subdivision surface modeling, not just mesh refinement. At each step of refinement, the vertices are adjusted to approximate a smooth surface.
References
- Catmull & Clark. 1978. Recursively generated B-spline surfaces on arbitrary topological meshes
# define a cube in R^3
points = Point3[(0,0,0),(1,0,0),(1,1,0),(0,1,0),(0,0,1),(1,0,1),(1,1,1),(0,1,1)]
connec = connect.([(1,4,3,2),(5,6,7,8),(1,2,6,5),(3,4,8,7),(1,5,8,4),(2,3,7,6)])
mesh = SimpleMesh(points, connec)
# refine three times
ref1 = refine(mesh, CatmullClark())
ref2 = refine(ref1, CatmullClark())
ref3 = refine(ref2, CatmullClark())
fig = Mke.Figure(resolution = (800, 800))
viz(fig[1,1], mesh, showfacets = true)
viz(fig[1,2], ref1, showfacets = true)
viz(fig[2,1], ref2, showfacets = true)
viz(fig[2,2], ref3, showfacets = true)
fig