相关疑难解决方法(0)

从具有x,y和z坐标的点生成网格

问题:从3D点生成网格(使用x,y和z坐标).

在此输入图像描述

在此输入图像描述

我所拥有的是3D空间中的点(使用x,y和z坐标),您可以在图像1中看到它.
输出的是图像2或图像3或图像4.简而言之,它将是网格.如果我有网格,可以提供它上面的材料.

我见过很多人都说Delaunay三角剖分或受约束的Delaunay三角剖分将帮助我进行网格生成,但我最常发现的是它在2D点(仅有x和Y坐标)中的实现.

但我的问题是:我从图像1中可以看到3D点.

Delaunay三角测量或受约束的Delaunay三角测量是否适用于3D点?如果是,那怎么样?或者我是否必须找到另一种从3D点生成网格的算法?

注意:这里可以找到关于2D点的Delaunay三角剖分的一个很好的解释

algorithm 3d geometry delaunay

38
推荐指数
2
解决办法
4万
查看次数

在python中从{x,y,z} - 散射数据绘制3D表面

我正在尝试绘制一个3D表面,以适应python中的某些{x,y,z}点 - 理想情况下就像Mathematica ListSurfacePlot3D函数.到目前为止,我已经尝试plot_surface并且plot_wireframe在我的观点上无济于事.

只有轴渲染plot_surface.plot_wireframe给出了一堆波浪状的,隐约在对象的形状,但不是文档中显示的漂亮的排序: 在此输入图像描述 与以下结果比较ListSurfacePlot3D: 在此输入图像描述

这是一个最小的工作示例,使用我在这里发布的test.csv文件:

import csv
from matplotlib import pyplot
import pylab
from mpl_toolkits.mplot3d import Axes3D

hFile = open("test.csv", 'r')
datfile = csv.reader(hFile)
dat = []

for row in datfile:
        dat.append(map(float,row))

temp = zip(*(dat))

fig = pylab.figure(figsize=pyplot.figaspect(.96))
ax = Axes3D(fig)
Run Code Online (Sandbox Code Playgroud)

然后,要么

ax.plot_surface(temp[0], temp[1], temp[2])
pyplot.show()
Run Code Online (Sandbox Code Playgroud)

要么

ax.plot_wireframe(temp[0], temp[1], temp[2])
pyplot.show()
Run Code Online (Sandbox Code Playgroud)

这是它渲染的方式plot_surface: 在此输入图像描述 和使用plot_wireframe: 在此输入图像描述 和使用ListSurfacePlot3D: 在此输入图像描述

python 3d matplotlib

14
推荐指数
1
解决办法
1万
查看次数

Matplotlib,避免plot_trisurf()中不需要的三角形

我有以下代码来创建一个稍后将应用置换字段的圆锥体.在下图所示的图中,您可以看到一些大三角形在顶部绘制,但不在底部绘制.我相信有一些内部隐藏参数可以告诉plot_trisurf()我们应该创建三角形的距离,否则它们也应该在底部创建.

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
from numpy import linspace, interp, meshgrid, sin, cos, pi
numel_circum = 120
L = 38.
rb, rt = (38., 16.)
t1, t2 = (0, 2*pi)
rav = ( rb - rt )*rt/rb + rt
perav = (t2-t1) * rav
elsize_L = perav / numel_circum
numel_L = int(round(L/elsize_L,0))
ts = linspace(t1, t2, numel_circum)
r = lambda z: interp( z, [0, L], [rb, rt] )
zs = …
Run Code Online (Sandbox Code Playgroud)

python numpy matplotlib

8
推荐指数
1
解决办法
3342
查看次数

如何使用 matplotlib 在 Python 中绘制球形多边形?

我有一个vertices形状 (N,3) 的 numpy 数组,其中包含 3D 球形多边形的 N 个顶点,即所有这些点都位于球体的表面上。球体的中心和半径已知(以单位球体为例)。我想绘制由这些顶点包围的球形多边形。(从数学上来说,我想绘制这些顶点生成的球凸包)。

我该如何使用 来做到这一点matplotlib?我尝试过Poly3DCollection,但这只绘制了欧几里得多边形。plot_surface我设法用这样的方法绘制了整个单位球体:

u = np.linspace(0, 2 * np.pi, 100)
v = np.linspace(0, np.pi, 100)
x = np.outer(np.cos(u), np.sin(v))
y = np.outer(np.sin(u), np.sin(v))
z = np.outer(np.ones(np.size(u)), np.cos(v))
ax.plot_surface(x, y, z, rstride=5, cstride=5, color='y', alpha=0.1)
Run Code Online (Sandbox Code Playgroud)

我想人们可以手动计算要从中删除哪些点x, y, z,然后仍然使用这些点plot_surface来绘制多边形。这是正确的使用方法matplotlib还是它有另一个我可以直接使用的模块?

如果没有方便的方法来做到这一点matplotlib,你能推荐任何其他库吗?

python plot matplotlib convex-hull mplot3d

5
推荐指数
0
解决办法
1048
查看次数

标签 统计

matplotlib ×3

python ×3

3d ×2

algorithm ×1

convex-hull ×1

delaunay ×1

geometry ×1

mplot3d ×1

numpy ×1

plot ×1