我有一个用空间中的 (x,y) 点列表定义的几何图形。我想用这些数据创建一个三角形网格,因此我尝试了matplotlib 中的三角测量函数来实现此目的。然而,由于我的几何体有一些曲线,该算法在我的零件的边缘之间生成不需要的三角形:

红色曲线是我的几何图形的边缘。
有什么办法可以解决这个问题吗?也许三角测量功能不是我需要的,在这种情况下,您对使用什么有什么建议吗?
以下代码来自该示例。在示例中,他们通过显式命名三个点来定义三角形,而不是我想通过调用函数来使用的 Delaunay 三角剖分triang = tri.Triangulation(x, y),这将给我提供与原始图片相同的行为。
import matplotlib.pyplot as plt
import matplotlib.tri as tri
import numpy as np
xy = np.asarray([
[-0.101, 0.872], [-0.080, 0.883], [-0.069, 0.888], [-0.054, 0.890],
[-0.045, 0.897], [-0.057, 0.895], [-0.073, 0.900], [-0.087, 0.898],
[-0.090, 0.904], [-0.069, 0.907], [-0.069, 0.921], [-0.080, 0.919],
[-0.073, 0.928], [-0.052, 0.930], [-0.048, 0.942], [-0.062, 0.949],
[-0.054, 0.958], [-0.069, 0.954], [-0.087, 0.952], [-0.087, 0.959],
[-0.080, 0.966], [-0.085, 0.973], [-0.087, 0.965], [-0.097, …Run Code Online (Sandbox Code Playgroud) 我正在编写一个代码来读取和显示有限元分析(FEA)计算的结果.结果存储在几个(相对较大的)文本文件中,这些文件包含节点列表(ID号,空间位置)和相关物理字段列表(节点ID,该点上字段的值).
但是,我注意到当我在后台运行FEA案例并且我尝试同时运行我的代码时它返回错误,并不总是相同的并且不总是在同一个迭代中,所有这些似乎都是随机的无需对代码或输入文件进行任何修改,只需在运行之间按秒运行RUN按钮即可.
我得到的错误示例如下:
keys[key] = np.round(np.asarray(keys[key]),7)
TypeError: can't multiply sequence by non-int of type 'float'
#-------------------------------------------------------------------------
triang = tri.Triangulation(x, y)
ValueError: x and y arrays must have a length of at least 3
#-------------------------------------------------------------------------
line = [float(n) for n in line]
ValueError: could not convert string to float: '0.1225471E'
Run Code Online (Sandbox Code Playgroud)
如果你很好奇,这是我的代码(请记住,它还没有完成,我是一名机械工程师,而不是程序员).任何有关如何使其更好的反馈也值得赞赏:
import matplotlib.pyplot as plt
import matplotlib.tri as tri
import numpy as np
import os
triangle_max_radius = 0.003
respath = 'C:/path'
fields = ['TEMPERATURE']
# Plot figure definition --------------------------------------------------------------------------------------
fig, ax1 …Run Code Online (Sandbox Code Playgroud)