MeshRegion

MeshRegion[{p1,p2,},{mcell1[{i1,}],mcell2[{j1,}],}]

产生具有单元 mcellj 的网格,其中由整数 i 给出的坐标为 pi.

MeshRegion[,{,wi[mcelli[]],}]

产生具有由符号式封装 wi 定义的单元属性的网格.

MeshRegion[mreg,opts]

从网格区域 mreg 中产生一个网格,选项为 opts.

更多信息和选项

  • MeshRegion 也称为单纯复形或者单元复形.
  • MeshRegion 可以表示在一维、二维或者三维空间中嵌入的任意几何维度的分段线性区域.
  • MeshRegion[] 在笔记本中显示为网格区域图线.
  • MeshRegion 通常使用诸如 DelaunayMeshDiscretizeGraphicsDiscretizeRegion 等函数创建.
  • MeshRegion 表示的区域包含网格单元的不相交并集.
  • MeshRegion 具有嵌入式维度,等于每个点 pi 的长度,并且可以使用 RegionEmbeddingDimension 求解.
  • 每个单元具有几何维度,并且可以使用 RegionDimension 找到.
  • 可能的网格单元 mcelli 和它们的几何维度:
  • Point[i]0
    Line[{i1,i2,}]1线段 {i1,i2}, {i2,i3},
    Triangle[{i1,i2,i3}]2实心三角形
    Polygon[{i1,i2,}]2实心多边形
    Polyhedron[{{ii,i2,},}]3实心多面体
    Tetrahedron[{i1,,i4}]3实心四面体
    Hexahedron[{i1,,i8}]3实心六面体
    Pyramid[{i1,,i5}]3实心角锥体
    Prism[{i1,,i6}]3实心角柱体
    Simplex[{i1,,ik}]0, 1, 2, 3实心单纯形
  • TetrahedronHexahedronPyramidPrism 只能和三维坐标一起使用.
  • PointLineTrianglePolygonPolyhedronTetrahedronHexahedronPyramidPrismSimplex 都有多单元规范.
  • 可将下面特殊封装 wi 用于单元:
  • Labeled[cell,]显示 cell 时加上标签
    Style[cell,]以指定样式显示 cell
    Annotation[cell,namevalue]将注释 name->valuecell 关联起来
  • MeshRegion 中的每一个单元都被赋予一个特殊的 MeshCellIndex,形式为 {d,i},其中 d 为几何维度,i 为索引.
  • 可使用下列单元规范来选定 MeshRegion 中的单元:
  • {d,i}维度为 d,索引为 i 的单元
    {d,ispec}维度为 d,索引规范为 ispec 的单元
    {dspec,}维度为 dspec 的单元
    h[{i1,}]h 开头,顶点索引为 i1, 的单元
    {c1,c2,}单元列表 ci
  • 单元规范 ispec 的形式为:
  • i单元索引 i
    {i1,i2,}单元索引 ik
    All所有索引
    patt单元的索引符合格式 patt
  • 维度规范 dspec 的形式为:
  • d维度 d
    All从 0 到区域自身几何维度的所有维度
    patt符合格式 patt 的维度
  • MeshRegion 总是被转换为优化的表示,为了模式匹配被函数像 AtomQ 按原始处理.
  • 在嵌入维度为 2 时,MeshRegionGraphics 有同样的选项,在嵌入维度为 3 时,和 Graphics3D 有同样的选项,其不同之处及更多选项如下所示:
  • MeshCellLabel Automatic单元标签及其位置
    MeshCellShapeFunction Automatic单元的形状函数
    MeshCellStyle Automatic单元的样式
    MeshCellHighlight {}突出显示单元的列表
    MeshCellMarker 0单元的整数标记
    PlotTheme $PlotTheme网格的整体主题样式
  • PlotTheme 的可能设置包括常见的基本主题样式、以不同字体为特征的主题和以不同大小为特征的主题.
  • 网格的主题特征会影响到网格单元的绘制. 主题包括:
  • "Points"0 维单元
    "Lines"1 维单元,线网
    "Polygons"2 维单元
  • 主题的渲染会影响到网格的渲染. 主题包括:
  • "SampledPoints"网格单元的抽样点
    "SphereAndTube"把点显示为球形,把线显示为管状
    "SmoothShading"平滑色调
    "FaceNormals"显示二维单元的法线
    "LargeMesh"优化成适宜于显示网格单元多的情况
  • 单元样式及规范实际上以如下次序应用到单元上:MeshCellStyleStyle、其他封装,后面的规范会覆盖前面的设定.
  • 单元标签样式和其他规范实际上以如下次序应用到单元上:MeshCellLabelLabeled,后面的规范会覆盖前面的设定.
  • MeshRegion 可以和某些函数一起使用,比如 RegionMemberRegionDistanceRegionMeasureNIntegrate.

范例

打开所有单元关闭所有单元

基本范例  (6)

一维中的一维(线)网格区域:

用索引标注各个点:

二维中的一维(线)网格区域:

用索引标注各个点:

三维中的二维(面)网格区域,用索引标注各个点:

三维中的三维(体)网格区域,用索引标注各个点:

一个含有不同维度单元的网格区域:

DelaunayMesh 生成的三维立体网格区域:

求其体积:

范围  (41)

一维区域  (3)

严格的 0 维 MeshRegion 是点的集合:

HighlightMesh 标注各个点:

严格的 1 维 MeshRegion 是一组线段:

HighlightMesh 标注各个线段:

MeshRegion 可以将不同维度的元素合并起来:

DimensionalMeshComponents 将其分开:

二维区域  (4)

严格的 0 维 MeshRegion 是点的集合:

HighlightMesh 标注各个点:

严格的 1 维 MeshRegion 是一组线段:

HighlightMesh 标注各个线段:

严格的 2 维 MeshRegion 是一组多边平面:

HighlightMesh 标注各个面:

MeshRegion 可以将不同维度的元素合并起来:

DimensionalMeshComponents 将其分开:

三维区域  (5)

严格的 0 维 MeshRegion 是点的集合:

HighlightMesh 标注各个点:

严格的 1 维 MeshRegion 是一组线段:

HighlightMesh 标注各个线段:

严格的 2 维 MeshRegion 是一组多边平面:

HighlightMesh 标注各个面:

严格的 3 维 MeshRegion 是一组多面体:

多面体单元包括 TetrahedronPrismPyramidHexahedron

MeshRegion 可以将不同维度的元素合并起来:

外观呈现  (11)

MeshCellLabel 可用来标注 MeshRegion 的各个组成部分:

标签不必是字符:

创建 MeshRegion 时,可用 Labeled 作为封装来标注单元:

标签不必是字符:

MeshCellMarker 可用来标记 MeshRegion 的各个组成部分:

MeshCellStyle 可用来设置 MeshRegion 各组成部分的 Style

创建 MeshRegion 时,可用 Style 作为封装来设置单元的样式:

选用一个主题来绘制0维单元:

选用一个主题来绘制 1 维单元或线网:

选用一个主题来绘制 2 维单元:

选用一个主题来绘制网格单元的抽样点:

选用一种主题显示平滑的色调:

选用一种主题,画出每个 2 维单元的法线:

区域属性  (8)

嵌入维度:

几何维度:

判断某点是否为该区域的成员:

图示:

对于一维网格,度量是 ArcLength,对于二维网格,度量是 Area, 对于三维网格,度量是 Volume

计算并在图中标出几何中心:

到一个点的距离:

图示:

到一个点的有符号距离:

图示:

区域中最近的点:

图示:

MeshRegion 是有界的:

获取边界:

图示边界盒:

MeshRegionIntegrate

网格属性  (10)

MeshCellCount 返回与给定维度或者单元指定匹配的单元数目:

获取一维单元数目:

当没有给出单元指定时,返回每个维度的数值:

MeshCells 返回网格中与单元指定或者给定维度匹配的单元:

获取一维单元:

可以使用单个单元索引或者单元索引集合:

MeshCellIndex 获取网格中单元或者单元集合的索引:

MeshCoordinates 获取网格坐标:

坐标列表是 MeshCells 所指的内容:

MeshPrimitives 返回组成网格的基元:

可以使用单个单元索引或者单元索引集合:

DimensionalMeshComponents 分隔具有不同维度的网格的分量:

ConnectedMeshComponents 基于连通度分隔网格的分量:

MeshCellMeasure 可用于获取网格中单元集合的度量:

适当的度量用于每个维度:

MeshCellCentroid 可用于获取网格中单元集合的几何中心:

可视化:

MeshCellQuality 可用于获取网格中单元集合的质量:

选项  (114)

AlignmentPoint  (1)

指定三维 Inset 中要对齐的位置,使用 坐标:

AspectRatio  (1)

使用数值来指定 AspectRatio

Axes  (2)

画出所有坐标轴:

画出 轴,不画出 轴:

AxesEdge  (2)

自动选择在边界框上画出坐标轴:

自动选择在边界框上画出坐标轴:

AxesLabel  (2)

轴上添加标注:

为每个轴添加标注:

AxesOrigin  (2)

自动确定坐标轴相交的地方:

明确指定坐标原点:

AxesStyle  (2)

指定坐标轴的样式,包括刻度和刻度的标记:

分别指定每个轴的样式:

Background  (1)

指定背景颜色:

BaselinePosition  (3)

把图形的中心与文字的基线对齐:

Scaled 指定图形的基线为高度的不同比例:

用图形的坐标轴作为基线:

BaseStyle  (2)

设置基本样式:

设置多个基本样式:

Boxed  (2)

画出边界盒的边:

不画出边界盒的边:

BoxRatios  (2)

指定边界盒各边之间的比例:

用实际的坐标值来计算比例:

BoxStyle  (1)

用虚线画出边界盒:

Epilog  (1)

在图形上一个圆盘,显示坐标轴:

FaceGrids  (4)

在三维图形的每个面试都画出网格:

面上画出网格:

平面上画出网格:

平面上,在 处画出网格线:

FaceGridsStyle  (1)

指定平面网格的样式

Frame  (2)

在整个图形外面加上边框:

在左面和右面加上边框:

FrameLabel  (2)

为下面和左边的边指定标注:

为每个边指定标注:

FrameStyle  (2)

指定边框的整体样式:

指定每个边的样式:

FrameTicks  (3)

加上边框,但不显示刻度:

为左边和下面的边框加上刻度及标注:

为右边和下面的边框加上刻度:

FrameTicksStyle  (2)

指定刻度及其标注的样式:

为每个边分别指定样式:

GridLines  (3)

为二维图形加上网格:

在指定位置画出网格线:

指定每个网格的样式:

GridLinesStyle  (1)

指定网格的整体样式:

ImageMargins  (3)

ImageSize 外不留边幅:

在所有边上留出 20 个点的边幅:

在指定位置画出网格线:

ImagePadding  (4)

在绘图范围外不留空间:

为出现的各种元素和标注留出足够的空间:

用打印机点指定各个边留出空间的大小:

用打印机点指定各个边留出空间的大小:

ImageSize  (3)

使用预先定义的、用符号表示的尺寸:

明确指定图像宽度:

明确指定图像宽度和高度:

LabelStyle  (1)

指定所有标注一类的元素的整体样式:

Lighting  (4)

将背景光均匀运用到图形中所有的表面:

使用不同颜色的方向性光源:

使用不同颜色的点光源:

使用不同颜色的聚光灯:

MeshCellHighlight  (3)

可以用 MeshCellHighlight 来突出显示 MeshRegion 的某些部分:

将面设为透明,以便看清三维 MeshRegion 的内部结构:

通过使用单元索引来突出显示单个单元:

或是使用单元自身:

MeshCellLabel  (3)

MeshCellLabel 可用来对 MeshRegion 的各部分添加标注:

为多边形的顶点和边添加标注:

通过使用单元索引来突出显示单个单元:

或是使用单元自身:

MeshCellMarker  (1)

MeshCellMarker 可以用于对 MeshRegion 的各部分赋值:

使用 MeshCellLabel 显示记号:

MeshCellShapeFunction  (2)

可以用 MeshCellShapeFunction 来指定 MeshRegion 各部分的函数:

通过使用单元索引来绘制单个单元:

或是使用单元自身:

MeshCellStyle  (3)

可以用 MeshCellStyle 来指定 MeshRegion 各部分的样式:

通过将面变成透明,可以看清三维 MeshRegion 的内部结构:

通过使用单元索引来设计单个单元的样式:

或是使用单元自身:

PlotLabel  (2)

TraditionalForm 形式的图形上方显示标注:

Style 和其它排版函数来调整标注的外观和样式:

PlotRange  (3)

显示所有图形元素:

明确选择 的范围:

PlotRange 处强行剪切:

PlotRange -> s 等价于 PlotRange -> {{-s, s}, {-s, s}}

PlotRangeClipping  (2)

允许图形对象越过 PlotRange

PlotRange 处剪去所有图形对象:

PlotRangePadding  (3)

所有边都留出1个坐标单位的空白:

Scaled 坐标留出空白:

每个边的空白大小不一:

PlotRegion  (3)

图形内容占据整个区域:

将图形的内容限制在每个方向中间一半部分:

ImagePadding 也可被用来在图形周围加上空白:

PlotTheme  (9)

基本主题  (2)

选用常见基本主题:

单色主题:

特色主题  (7)

选用一种主题绘制0维单元:

选用一种主题绘制1维单元或线网:

选用一种主题绘制2维单元:

选用一种主题绘制网格单元的抽样点:

选用一种主题,把点画成球,把线画成管子:

选用一种主题显示平滑的色调:

选用一种主题,画出每个2维单元的法线:

Prolog  (1)

定义一个简单图形作为背景:

在多个网格区域内使用:

RotateLabel  (2)

指定旋转放置垂直边框上的标注:

不旋转垂直边框上的标注:

SphericalRegion  (2)

不管如何摆放,使得一系列的图形大小保持一致:

不设置 SphericalRegion,将会以尽可能大的尺寸显示每个图形:

Ticks  (3)

画出没有刻度的坐标轴:

自动标出刻度:

在指定位置标出刻度:

TicksStyle  (2)

指定刻度及其标注的样式:

分别指定 轴刻度的样式:

ViewAngle  (1)

为模拟相机指定角度:

ViewCenter  (1)

将物体的右上角放在图片的中心位置:

ViewMatrix  (1)

网格区域在负 方向上的正投影视图:

ViewPoint  (3)

用特别缩放过的坐标指定视点:

使用符号式视点:

指定正投影视图:

ViewRange  (2)

缺省情况下,视图范围足够包括所有物体:

指定要包括的距相机最近和最远的距离:

ViewVector  (1)

用一般坐标指定视图向量:

ViewVertical  (2)

轴方向作为垂直方向:

垂直方向上的各种视图:

应用  (9)

曲线  (4)

MeshRegion 中提取线段制成线框网格:

MeshCells 中给出的索引对应于 MeshCoordinates

比较属性:

计算一个普通多边形的周长:

计算周长的长度:

当边数接近无穷时,周长趋近于

利用 Lindenmayer 系统,创建 Koch 曲线的网格区域:

定义一个函数,利用海龟绘图法来将所产生的字符串转换成坐标:

为解释字符串设置初始参数:

根据字符串计算 Koch 曲线的坐标:

依据坐标生成网格区域:

找出一个公式,可以计算 Koch 曲线迭代次数为 时的长度:

把图转化为 MeshRegion:

某些二维嵌入图:

您可以将它们作为几何区域计算:

某些三维嵌入图:

您仍然可以使用它们计算:

例如,您可以计算穿过这些曲线的曲线积分:

曲面  (3)

通过突出二维曲线网格,创建曲面网格:

具有平面布局的某些示例:

您可以使用所得区域计算,在这情况下计算曲面积分:

直接产生矩形网格. 这里 IndexFlatten 用与 Flatten 相同的方式压平位置索引

另一方面,产生与一维网格乘积相同的网格区域:

推广上面的直接方法产生对应于模式矩阵的网格区域:

某些简单的模式:

更多涉及的模式:

立体  (2)

直接产生矩形网格. 这里 IndexFlattenFlatten 同样的方式压平位置索引:

另一方面,产生与一维网格的乘积相同的网格区域:

把上面的方法推广,以产生对应模式矩阵的网格区域:

简单的模式:

更多涉及的模式:

使用上面的思想构建一个 Seidel 网格,例如不交叉在各个方向具有通道的网格区域:

通过转化为有界网格并且进行样式化处理,它更容易理解:

属性和关系  (9)

MeshRegion 可以含有任意几何维度:

MeshRegion 通常有界:

使用 BoundedRegionQ 测试,并且使用 RegionBounds 测试实际边界:

MeshRegionQ 可用于测试一个区域是否是 MeshRegion:

使用 DelaunayMesh 从点集创建 MeshRegion

使用 TriangulateMeshBoundaryMeshRegion 转化为 MeshRegion:

使用 DiscretizeRegion 把任意区域转化为 MeshRegion:

使用 DiscretizeGraphicsGraphics 转化为 MeshRegion:

使用 Show 把任意 MeshRegion 转化为 Graphics:

MeshRegion 通常比 BoundaryMeshRegion 具有更高的内存使用量:

Wolfram Research (2014),MeshRegion,Wolfram 语言函数,https://reference.wolfram.com/language/ref/MeshRegion.html (更新于 2022 年).

文本

Wolfram Research (2014),MeshRegion,Wolfram 语言函数,https://reference.wolfram.com/language/ref/MeshRegion.html (更新于 2022 年).

CMS

Wolfram 语言. 2014. "MeshRegion." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2022. https://reference.wolfram.com/language/ref/MeshRegion.html.

APA

Wolfram 语言. (2014). MeshRegion. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/MeshRegion.html 年

BibTeX

@misc{reference.wolfram_2024_meshregion, author="Wolfram Research", title="{MeshRegion}", year="2022", howpublished="\url{https://reference.wolfram.com/language/ref/MeshRegion.html}", note=[Accessed: 24-November-2024 ]}

BibLaTeX

@online{reference.wolfram_2024_meshregion, organization={Wolfram Research}, title={MeshRegion}, year={2022}, url={https://reference.wolfram.com/language/ref/MeshRegion.html}, note=[Accessed: 24-November-2024 ]}