Matplotlib is hiring a Research Software Engineering Fellow! See discourse for details. Apply by January 3, 2020
matplotlib.tri
¶非结构化三角网格函数。
matplotlib.tri.
Triangulation
(x, y, triangles=None, mask=None)[源代码]¶由npoints点和ntri三角形组成的非结构化三角形网格。三角形可以由用户指定,也可以使用Delaunay三角测量自动生成。
参数: |
|
---|
笔记
为了使三角测量有效,它不能有重复的点、由共线点形成的三角形或重叠的三角形。
属性: |
---|
calculate_plane_coefficients
(z)[源代码]¶从点(x,y)坐标和指定的形状z数组(npoints)计算所有无遮罩三角形的平面方程系数。返回的数组具有形状(npoints,3),允许使用以下公式计算三角形tri中(x,y)位置的z值: z = array[tri, 0] * x + array[tri, 1] * y + array[tri, 2]
.
edges
¶返回包含非遮罩三角形所有边的形状整数数组(Nedges,2)。
每一行通过其起点索引和终点索引定义一条边。每个边只出现一次,即点之间的边 i 和 j 只有一个 (i,j) 或 (J,I) .
get_from_args_and_kwargs
(*args, **kwargs)[源代码]¶从args和kwargs返回一个三角测量对象,并返回剩余的args和kwargs,删除消耗的值。
有两种选择:第一个参数是一个三角测量对象,在这种情况下,它会被返回,或者args和kwargs足以创建一个要返回的新三角测量。在后一种情况下,请参见 Triangulation.__init__ 对于可能的args和kwargs。
get_trifinder
()[源代码]¶返回默认值 matplotlib.tri.TriFinder
三角测量,必要时创建。这使得同一个trifinder对象很容易共享。
neighbors
¶返回包含相邻三角形的形状(ntri,3)的整数数组。
对于每个三角形,共享相同边的三个三角形的索引,如果没有这样的相邻三角形,则为-1。邻居 [i,j] 是从点索引三角形到边的相邻三角形 [i,j] 点索引三角形 [i,(j+1)% 3] .
matplotlib.tri.
TriFinder
(triangulation)[源代码]¶抽象类的基类,用于查找(x,y)点所在的三角剖分的三角形。
与其实例化从trifinder派生的类的对象,不如使用函数 matplotlib.tri.Triangulation.get_trifinder()
.
派生类实现“调用”(x,y),其中x,y是同一形状的类似数组的点坐标。
matplotlib.tri.
TrapezoidMapTriFinder
(triangulation)[源代码]¶基类:matplotlib.tri.trifinder.TriFinder
TriFinder
类使用“计算几何、算法和应用”一书中的梯形图算法实现,第二版,M.de Berg、M.van Kreveld、M.Overmars和O.Schwarzkopf。
三角测量必须有效,即不能有重复点、共线点形成的三角形或重叠三角形。该算法对共线点形成的三角形有一定的容忍度,但不应依赖于此。
matplotlib.tri.
TriInterpolator
(triangulation, z, trifinder=None)[源代码]¶用于在三角形网格上执行插值的类的抽象基类。
派生类实现以下方法:
__call__(x, y)
,其中x,y是相同形状的类似数组的点坐标,返回包含内插z值的相同形状的屏蔽数组。gradient(x, y)
,其中x,y是相同形状的数组类点坐标,返回包含插值器的2个导数(插值z值相对于x和y的导数)的相同形状的2个屏蔽数组的列表。
matplotlib.tri.
LinearTriInterpolator
(triangulation, z, trifinder=None)[源代码]¶基类:matplotlib.tri.triinterpolate.TriInterpolator
线性插值器在三角形网格上执行线性插值。
每个三角形都由一个平面表示,因此点(x,y)处的插值值位于包含(x,y)的三角形平面上。因此,插值值在三角测量中是连续的,但其第一个导数在三角形之间的边上是不连续的。
参数: |
|
---|
方法
`__call__` (x, y) | (返回X、Y点处的插值值) |
`gradient` (x, y) | (返回x,y点处的插值导数) |
matplotlib.tri.
CubicTriInterpolator
(triangulation, z, kind='min_E', trifinder=None, dz=None)[源代码]¶基类:matplotlib.tri.triinterpolate.TriInterpolator
CubictriInterpolator在三角形网格上执行三次插值。
在一维中——在段上——三次插值函数由函数的值及其两端的导数定义。这在三角形内部的二维中几乎是一样的,只是函数的值及其2个导数必须在每个三角形节点上定义。
CubictriInterpolator获取用户提供的每个节点上函数的值,并在内部计算导数的值,从而实现平滑的插值。(作为一个特殊功能,用户还可以在每个节点上强制派生的值,但这不应该是常见的用法。)
参数: |
|
---|
笔记
这是一个有点技术性和细节的方式A CubicTriInterpolator
计算三次插值。
插值是基于 三角测量 网格(为了更清楚,网格的每个三角形将被划分为3个子三角形,在每个子三角形上,插值函数是2个坐标的三次多项式)。这种方法来源于有限元分析,所用的单元是一个简化的谢-克劳-托(Hct)单元。其形状功能如 [1]. 装配函数保证C1光滑,即连续,其一阶导数也连续(这很容易在三角形内部显示,但在穿过边缘时也是如此)。
在默认情况下( kind ='min_e'),内插函数将HCT元素形状函数生成的函数空间上的曲率能量最小化-在每个节点上使用强制值但任意导数。最小化函数是所谓的总曲率的积分(基于 [2] -PCG稀疏解算器):
\[E(z) = \frac{1}{2} \int_{\Omega} \left( \left( \frac{\partial^2{z}}{\partial{x}^2} \right)^2 + \left( \frac{\partial^2{z}}{\partial{y}^2} \right)^2 + 2\left( \frac{\partial^2{z}}{\partial{y}\partial{x}} \right)^2 \right) dx\,dy\]
如果是这种情况 kind =用户选择“geom”,使用简单的几何近似(三角形法向量的加权平均值),可以提高非常大网格上的速度。
工具书类
[1] | (1, 2) 贝纳多,哈桑,“全三角形或约简三角形的基函数”,国际工程数值方法杂志,17(5):784-789.2.01。 |
[2] | (1, 2) C.T.Kelley,“迭代优化方法”。 |
方法
`__call__` (x, y) | (返回X、Y点处的插值值) |
`gradient` (x, y) | (返回x,y点处的插值导数) |
matplotlib.tri.
TriRefiner
(triangulation)[源代码]¶实现网格优化的类的抽象基类。
TriRefiner封装了三角测量对象,并提供了网格细化和插值工具。
派生类必须实现:
refine_triangulation(return_tri_index=False, **kwargs)
,其中可选关键字参数 关键字参数 在每个trifiner具体实现中定义,并返回:
- 精确的三角测量
- 可选(取决于 return_tri_index ,对于精确三角测量的每个点:它所属的初始三角测量三角形的索引。
refine_field(z, triinterpolator=None, **kwargs)
,其中:
- z 在基本三角测量节点定义的字段值数组(要优化)
- 三插补器 是一个
TriInterpolator
(可选)- 其他可选关键字参数 关键字参数 在每个trifiner具体实现中定义
它返回(作为元组)一个精三角网格和精三角节点处字段的内插值。
matplotlib.tri.
UniformTriRefiner
(triangulation)[源代码]¶基类:matplotlib.tri.trirefine.TriRefiner
通过递归细分统一网格细化。
参数: |
|
---|
refine_field
(z, triinterpolator=None, subdiv=3)[源代码]¶优化在封装的三角测量上定义的字段。
返回 refi_tri (精确三角测量) refi_z (精确三角测量节点处字段的插值值)。
参数: |
|
---|---|
返回: |
|
refine_triangulation
(return_tri_index=False, subdiv=3)[源代码]¶计算均匀精确的三角测量 refi_triangulation 封装的 triangulation
.
此函数通过递归地将每个父三角形拆分为4个子三角形(递归级别)来优化封装的三角测量。 细分 )最后,每个三角形被划分为 4**subdiv
儿童三角形。的默认值 细分 为初始三角测量的每个三角形生成64个精细的子三角。
参数: |
|
---|---|
返回: |
|
matplotlib.tri.
TriAnalyzer
(triangulation)[源代码]¶定义三角形网格分析和改进的基本工具。
三角化器封装了 Triangulation
对象并为网格分析和网格改进提供基本工具。
参数: |
|
---|---|
属性: |
|
circle_ratios
(rescale=True)[源代码]¶返回三角形平面度的度量值。
内圆半径与外圆半径之比是衡量三角形平面度的常用指标。它总是 <= 0.5
和 == 0.5
仅适用于等边三角形。小于0.01的圆比率表示非常平的三角形。
为了避免由于两个轴之间的比例差而导致值过低,可以首先重新调整三角形网格,使其适合于单位平方 scale_factors
(仅当 重新缩放 为真,这是它的默认值)。
参数: |
|
---|---|
返回: |
|
get_flat_tri_mask
(min_circle_ratio=0.01, rescale=True)[源代码]¶从三角测量中消除过平的边界三角形。
返回掩码 new_mask 它允许从位于平面三角形的边界(根据其 circle_ratios()
)此遮罩将随后应用于三角测量,使用 matplotlib.tri.Triangulation.set_mask()
. new_mask 是初始三角测量遮罩的扩展,即初始遮罩三角形将保持遮罩。
这个 new_mask 数组是递归计算的;只有当平面三角形与当前网格边界共用一条边时,才会在每个步骤中删除平面三角形。因此,不会在三角域中创建新的孔。
参数: |
|
---|---|
返回: |
|
笔记
此函数背后的基本原理是,一个非结构化点集的Delaunay三角测量有时在其边界处包含几乎平坦的三角形,从而导致绘图中出现伪影(尤其是高分辨率轮廓)。用计算机屏蔽 new_mask ,封装的三角剖分将不再包含具有以下圆比率的未屏蔽边界三角形。 min_circle_ratio 从而提高后续绘图或插值的网格质量。
scale_factors
¶将三角测量重新调整为单位平方的因子。
返回 k ,2个比例因子的元组。
返回: |
|
---|