BoundaryMeshRegion

BoundaryMeshRegion[{p1,p2,},{bcell1[{i1,}],bcell2[{j1,}],}]

yields a mesh with boundary cells bcellj, where coordinates given as integer i are taken to be pi, where the cells together represent a closed curve, surface, etc.

BoundaryMeshRegion[,{,wi[bcelli[]],}]

yields a mesh with cell properties defined by the symbolic wrapper wi.

BoundaryMeshRegion[,boundary1,boundary2,]

yields a mesh from multiple boundaries boundaryi.

Details and Options

  • BoundaryMeshRegion is also known as a boundary representation.
  • BoundaryMeshRegion can represent a piecewise linear and full-dimensional region embedded in dimension 1, 2, or 3.
  • BoundaryMeshRegion[] displays in a notebook as a plot of a boundary mesh region.
  • BoundaryMeshRegion is typically constructed using functions such as ConvexHullMesh, BoundaryMesh, BoundaryDiscretizeRegion, and BoundaryDiscretizeGraphics.
  • The boundary cells need to represent a closed curve or surface without self-intersections.
  • In BoundaryMeshRegion[{p1,p2,},b1,b2,], the boundary curves or surfaces bi should not cross themselves or each other.
  • In BoundaryMeshRegion[{p1,p2,},b1,b2,], a point p is considered to be in the region enclosed by the boundary curves or surfaces bi if any infinite ray starting at p crosses the set of boundaries bi an odd number of times.
  • The following special wrappers wi can be used for boundary faces:
  • Labeled[cell,]display the cell with labeling
    Style[cell,]show the cell with the specified style
    Annotation[cell,name->value]associate the annotation name->value with cell
  • Each cell in a BoundaryMeshRegion is given a unique MeshCellIndex of the form {d,i}, where d is the geometric dimension and i is the index.
  • For purposes of selecting cells of a BoundaryMeshRegion, the following cell specifications may be used:
  • {d,i}cell with index i of dimension d
    {d,ispec}cells with index specification ispec of dimension d
    {dspec,}cells of dimensions given by dspec
    h[{i1,}]explicit cell with head h and vertex indices i1,
    {c1,c2,}list of explicit cells ci
  • The index specification ispec can have the following form:
  • icell index i
    {i1,i2,}cells with indices ik
    Allall cells
    pattcells with indices matching the pattern patt
  • The dimension specification dspec can have the following form:
  • dexplicit dimension d
    Allall dimensions from 0 to geometric dimension of region
    pattdimensions matching the pattern patt
  • BoundaryMeshRegion contains cells of maximal dimension n-1, where n is the embedding dimension.
  • BoundaryMeshRegion is always converted to an optimized representation and treated as raw by functions like AtomQ for purposes of pattern matching.
  • BoundaryMeshRegion has the same options as Graphics for embedding dimension two, and the same options as Graphics3D for embedding dimension three, with the following additions and changes:
  • MeshCellLabelAutomaticlabels and placement for cells
    MeshCellShapeFunctionAutomaticshape functions for cells
    MeshCellStyleAutomaticstyles for cells
    MeshCellHighlight{}list of highlighted cells
    MeshCellMarker0integer markers for cells
    PlotTheme$PlotThemeoverall theme for the mesh
  • Possible settings for PlotTheme include common base themes, font features themes, and size features themes.
  • Mesh feature themes affect the plot of mesh cells. Themes include:
  • "Points"0D cells
    "Lines"1D cells, wireframe
    "Polygons"2D cells
  • Rendering feature themes affect the rendering of meshes. Themes include:
  • "SampledPoints"sampled points from mesh cells
    "SphereAndTube"points as spheres and lines as tubes
    "SmoothShading"smooth shading
    "FaceNormals"normal for each 2D cell
    "LargeMesh"optimized for large number of cells
  • Style and other specifications for cells are effectively applied in the order MeshCellStyle, Style, and other wrappers, with later specifications overriding earlier ones.
  • Label style and other specifications for cell labels are effectively applied in the order MeshCellLabel and Labeled, with later specifications overriding earlier ones.
  • BoundaryMeshRegion can be used with functions such as RegionMember, RegionDistance, RegionMeasure, and NDSolve.

Examples

open allclose all

Basic Examples  (5)

Specify an interval from its boundary points:

It is full dimensional:

The region is bounded:

The length and centroid:

Check point membership:

Specify a triangle from its closed boundary curve:

It is full dimensional:

The region is bounded:

The area and centroid:

Check point membership:

Specify a tetrahedron from its closed boundary surface:

It is full dimensional:

The region is bounded:

The volume and centroid:

Check point membership:

Specify a 2D region from multiple closed boundary curves:

Find its area:

Specify a 3D region from multiple closed boundary surfaces:

Find its volume:

Scope  (18)

Regions in 1D  (4)

Specify an interval from its boundary points:

Label the points with HighlightMesh:

It is full dimensional:

The region is bounded:

The length and centroid:

Check point membership:

Specify a 1D region from multiple boundary points:

Apply Style to boundary points:

Label boundary points:

Regions in 2D  (4)

Specify a triangle from its closed boundary curve:

Label the segments with HighlightMesh:

It is full dimensional:

The region is bounded:

The area and centroid:

Check point membership:

Specify a 2D region from multiple closed boundary curves:

Label the points with their corresponding indexes with HighlightMesh:

Apply Style to specific boundary lines:

Label specific boundary lines:

Regions in 3D  (4)

Specify a tetrahedron from its closed boundary surface:

Label the segments with HighlightMesh:

It is full dimensional:

The region is bounded:

The volume and centroid:

Check point membership:

Specify a 3D region from multiple closed boundary surfaces:

Apply Style to specific boundary faces:

Label specific boundary faces:

Presentation  (6)

Use a theme to draw 0D cells:

Use a theme to draw 1D cells or a wireframe:

Use a theme to draw 2D cells:

Use a theme to draw sampled points from mesh cells:

Use a theme to smooth the shading:

Use a theme to draw normals for each 2D cell:

Options  (127)

AlignmentPoint  (1)

Specify the position to be aligned in 3D Inset, using coordinates:

AspectRatio  (1)

Use numerical values for AspectRatio:

Axes  (2)

Draw all the axes:

Draw the axis, but not the axis:

AxesEdge  (2)

Choose the bounding box edges automatically to draw the axes:

Choose the bounding box edges automatically to draw the axes:

AxesLabel  (2)

Place a label for the axis:

Specify a label for each axis:

AxesOrigin  (2)

Determine where the axes cross automatically:

Specify the axes' origin explicitly:

AxesStyle  (2)

Specify the overall axes style, including the ticks and the tick labels:

Specify the style of each axis:

Background  (1)

Specify the style of each axis:

BaselinePosition  (3)

Align the center of a graphic with the baseline of the text:

Specify the baseline of a graphic as a fraction of the height by using Scaled:

Use the axis of a graphic as the baseline:

BaseStyle  (2)

Set the starting style:

Set multiple starting styles:

Boxed  (2)

Draw the edges of the bounding box:

Do not draw the edges of the bounding box:

BoxRatios  (2)

Specify the ratios between the bounding box edges:

Use the actual coordinate values for the ratios:

BoxStyle  (1)

Use dashed lines for the bounding box:

Epilog  (1)

Draw a disk above the graphic, including the axes:

FaceGrids  (4)

Put grids on every face of a 3D graphic:

Put grids on both faces:

Put face grids on the plane:

On the plane, put grid lines on , , and :

FaceGridsStyle  (1)

Specify the overall style of face grids:

Frame  (2)

Draw a frame around the whole graphic:

Draw a frame on the left and the right edges:

FrameLabel  (2)

Specify frame labels for the bottom and the left edges:

Specify labels for each edge:

FrameStyle  (2)

Specify the overall frame style:

Specify the style of each frame edge:

FrameTicks  (3)

Put a frame, but no ticks:

Tick mark labels on the bottom and the left frame edges:

Frame ticks on the bottom and the right edges:

FrameTicksStyle  (2)

Specify frame tick and frame tick label style:

Specify frame tick style for each edge:

GridLines  (3)

Put grids across a 2D graphic:

Draw grid lines at specific positions:

Specify the style of each grid:

GridLinesStyle  (1)

Specify the overall grid style:

ImageMargins  (3)

Allow no margins outside of ImageSize:

Have 20-point margins on all sides:

Draw grid lines at specific positions:

ImagePadding  (4)

Leave no padding outside of the plot range:

Leave enough padding for all objects and labels that are present:

Specify the same padding for all sides in printer's points:

Specify the same padding for all sides in printer's points:

ImageSize  (3)

Use predefined symbolic sizes:

Use an explicit image width:

Use an explicit image width and height:

LabelStyle  (1)

Specify the overall style of all the label-like elements:

Lighting  (4)

Ambient light is uniformly applied to all the surfaces in the scene:

Directional lights with different colors:

Point lights with different colors:

Spotlights with different colors:

MeshCellHighlight  (3)

MeshCellHighlight allows you to specify highlighting for parts of a BoundaryMeshRegion:

By making faces transparent, the internal structure of a 3D BoundaryMeshRegion can be seen:

Individual cells can be highlighted using their cell index:

Or by the cell itself:

MeshCellLabel  (11)

MeshCellLabel can be used to label parts of a BoundaryMeshRegion:

MeshCellLabel can reveal a cell's index with "Index", "CellIndex", or "Cell":

Any expression can be used as a label:

Label all cells with tooltips:

All can be used to specify all cells:

By default, all cells are labeled:

Label all cells of a given dimension:

Label specific vertices and edges of a polygon:

Alternatively, you can specify a head and indices:

Specify a list of cell indices to label:

Label cells whose dimensions match a pattern:

Label cells whose indices match a pattern:

Wrappers have precedence over options:

MeshCellMarker  (1)

MeshCellMarker can be used to assign values to parts of a BoundaryMeshRegion:

Use MeshCellLabel to show the markers:

MeshCellShapeFunction  (2)

MeshCellShapeFunction allows you to specify functions for parts of a BoundaryMeshRegion:

Individual cells can be drawn using their cell index:

Or by the cell itself:

MeshCellStyle  (8)

All can be used to specify all cells:

By default, all cells are styled:

Style all cells of a given dimension:

Style specific vertices and edges of a polygon:

Alternatively, you can specify a head and indices:

Specify a list of cell indices to style:

Style cells whose dimensions match a pattern:

Style cells whose indices match a pattern:

Style with graphics directives appropriate for the dimension of the components:

Wrappers have precedence over options:

PlotLabel  (2)

Display a label on the top of the graphic in TraditionalForm:

Use Style and other typesetting functions to modify how the label appears:

PlotRange  (3)

Display all objects:

Explicitly choose and ranges:

Force clipping at the PlotRange:

PlotRange->s is equivalent to PlotRange->{{-s, s}, {-s, s}}:

PlotRangeClipping  (2)

Allow graphics objects to spread beyond PlotRange:

Clip all graphics objects at PlotRange:

PlotRangePadding  (3)

Include coordinate unit of padding on all sides:

Include padding using Scaled coordinates:

Specify different padding on each side:

PlotRegion  (3)

The contents of a graphic use the whole region:

Limit the contents of the graphic to the middle half of the region in each direction:

ImagePadding can also be used to add padding around a graphic:

PlotTheme  (9)

Base Themes  (2)

Use a common based theme:

Use a monochrome theme:

Feature Themes  (7)

Use a theme to draw 0D cells:

Use a theme to draw 1D cells or a wireframe:

Use a theme to draw 2D cells:

Use a theme to draw sampled points from mesh cells:

Use a theme to draw points as spheres and lines as tubes:

Use a theme to smooth shading:

Use a theme to draw normals for each 2D cell:

Prolog  (1)

Define a simple graphic to use as a background:

Use it in multiple boundary mesh regions:

RotateLabel  (2)

Specify that vertical frame labels should be rotated:

Specify that vertical frame labels should not be rotated:

SphericalRegion  (2)

Make a sequence of images be consistently sized, independent of orientation:

Without SphericalRegion, each image is made as big as possible:

Ticks  (3)

Draw the axes, but not tick marks:

Place tick marks automatically:

Draw tick marks at the specific positions:

TicksStyle  (2)

Specify the styles of the ticks and tick labels:

Specify the styles of and axis ticks separately:

ViewAngle  (1)

Use a specific angle for a simulated camera:

ViewCenter  (1)

Place the top-right corner of the object at the center of the final image:

ViewMatrix  (1)

Orthographic view of a mesh region from the negative direction:

ViewPoint  (3)

Specify the view point using the special scaled coordinates:

Use symbolic view points:

Specify orthographic views:

ViewRange  (2)

By default, the range is sufficient to include all the objects:

Specify the minimum and maximum distances from the camera to be included:

ViewVector  (1)

Specify the view vectors using ordinary coordinates:

ViewVertical  (2)

Use the axis direction as the vertical direction in the final image:

Various views of vertical directions:

Applications  (6)

Polygons  (2)

Non-intersecting polygons are also BoundaryMeshRegion:

The resulting regions can be used for computing:

The area approaches as the number of sides goes to infinity:

Build a BoundaryMeshRegion in 2D with multiple rectangular holes. The coordinates for the inner rectangles:

The indexes for the inner rectangle closed curves:

Generating an outer rectangle with × inner rectangle closed curves:

The resulting mesh can be used for computing:

Polyhedra  (4)

Non-intersecting polyhedra are also a BoundaryMeshRegion:

The Archimedean or semi-regular polyhedra:

Color the faces based on the number of vertices:

Color the faces of Archimedean polyhedra:

Build a BoundaryMeshRegion with multiple voids by using multiple inner cuboid boundaries. The coordinates for the inner cuboids:

The indexes for inner cuboid closed surfaces:

Generating an outer cuboid with ×× inner cuboid surfaces:

The resulting region can be used for computing:

Construct a cuboid boundary mesh with rectangular tunnels through it. You can construct it as the product of a 2D boundary mesh with an interval. Using the same construction as for constructing the polygon with holes above for the 2D boundary mesh:

The resulting boundary representation for a polygon with × holes:

Compute the Cartesian product with an interval:

Style it so that you can only see the boundary surfaces:

You can still compute with this region:

Properties & Relations  (8)

BoundaryMeshRegion can represent full-dimensional regions:

Since the geometric dimension is the embedding dimension, it is full dimensional:

BoundaryMeshRegion is always bounded:

Use BoundedRegionQ to test and RegionBounds for actual bounds:

BoundaryMeshRegionQ can be used to test whether a region is a BoundaryMeshRegion:

Use ConvexHullMesh to create a BoundaryMeshRegion from a set of points:

Use BoundaryMesh to convert a MeshRegion to a BoundaryMeshRegion:

Only the full-dimensional component can be represented:

Use BoundaryDiscretizeRegion to convert any region to a BoundaryMeshRegion:

To include lower-dimensional components, use DiscretizeRegion:

Use Show to convert any BoundaryMeshRegion to Graphics:

BoundaryMeshRegion is usually more memory efficient than MeshRegion:

Introduced in 2014
 (10.0)
 |
Updated in 2015
 (10.2)