假设data是一个大小为 的矩阵129 * 129。
通过使用
mesh(data, 'FaceColor', 'none', 'EdgeColor', 'black')
我们得到类似的东西
我们可以发现网格相当密集。我想要相同的图形,但网格线数量较少,例如
data例如,当然可以绘制较小的图data(1:10:end, 1:10:end)。但这样一来,剧情就不再像以前那么准确了。
另一个例子是plot(..., 'MarkerIndices', ...)。这可以为您提供标记数量较少的图,而无需修改图。https://www.mathworks.com/help/matlab/creating_plots/create-line-plot-with-markers.html
我正在使用 pywavefront 从 .obj 解析 3D 网格,它给我顶点、面和法线。我想计算减去另一个网格的剩余面积。
在计算体积之后,我想知道如何对网格执行相交和相减等操作。
我正在寻找一种通过 Python 脚本将 TIN(不规则三角网)网格(例如景观)偏移一致距离的方法。过去我通过 API 调用 Blender 的 Solidify 修改器,效果很好,但我想找到一个不需要 Blender 作为依赖项的替代方案。
目前,我正在迭代每个三角形,制作每个顶点的副本,并将它们沿着父三角形的表面法线移动设定的距离。当相同的顶点出现在多个三角形中时,我计算每个法线的偏移并使用平均值。然后我再次将顶点连接在一起以制作偏移网格。
这似乎适用于小偏移,但网格中的尖锐特征可能会产生自相交。
是否有特定的算法或库提供更好的方法?
到目前为止,除了 Blender 之外,我还发现:
我遇到了来自轮廓f()的非常奇怪的错误。我想为 3D 投影设置特定的最小值和最大值,但是当我尝试设置大于 -+max(Z) 的值时,我收到错误消息:
文件“C:\ Program Files \ Python38 \ lib \ site-packages \ mpl_toolkits \ mplot3d \ art3d.py”,第768行,在do_3d_projection zzs,segments_2d,self._facecolors2d,self._edgecolors2d,idxs =
ValueError:没有足够的值解压(预期为 5,实际为 0)
lmin,lmax = -1, 1 仅适用或更低的值
这是示例:
from pylab import *
mpName = 'seismic'
X = np.linspace(-np.pi, np.pi, 192)
Y = np.linspace(-np.pi, np.pi, 192)
X, Y = np.meshgrid(X, Y)
Z = np.sin(X*Y)
lmin,lmax = -2, 2 #
fig = plt.figure()
ax = plt.axes(projection='3d')
ax.contourf(Y, X, Z, cmap='RdBu', zdir='z', offset=np.pi, levels=np.linspace(lmin,lmax,20))
ax.set_xlim3d(-np.pi, np.pi)
ax.set_ylim3d(-np.pi, np.pi)
ax.set_zlim3d(-np.pi, np.pi) …Run Code Online (Sandbox Code Playgroud) 我有一个 XYZ 点列表,它们排列在 XY 平面上均匀间隔的晶格中,如下所示(例如):
我想用三角形“平铺”这些点之间的空间,将一个点连接到其直接(最多)八个邻居中的两个,如下所示:
我如何在 Python 中有效地完成此操作? 一种简单的方法会检查每个点是否有八个可能的三角形,但由于考虑了许多重复的三角形,这是非常低效的。考虑每个点右下角可能存在的三角形之类的事情,会错过一些三角形。这个问题有通用的算法吗?
我认为 Delaunay 三角剖分是不合适的,因为它总是会创建凸三角剖分。
该三角测量是根据 LIDAR 高度数据生成建筑物 3D 网格过程中的一个步骤。当我使用“常用”算法从点云(泊松、旋转球)生成网格时,我最终得到的网格中有许多孔(尤其是在塔或墙等陡峭的斜坡上)。我希望通过认识到点云在 XY 平面上形成均匀间隔的晶格并从该角度对其进行三角测量(如上所述),我可以解决许多此类孔问题。
我正在使用 OLS 求解方程,该方程返回 x/y/z 表面网格上的计时点。我可以按照下面概述的方法求解速度和方向性。问题是,我的矢量与表面网格不平行,并且我不确定使其朝正确方向所需的正确变换。
文献指出:
“为了在 3D 几何中实现矢量的可视化......如果在矢量计算中仅使用表面数据,则传导速度矢量会以几何方式投影到与表面法线正交的平面中。此约束修正了指向内部或内部的矢量。表面之外”
我不知道该怎么做。
代表数据:
library(plotly)
library(dplyr)
Run Code Online (Sandbox Code Playgroud)
tri_list <- list(surf_tri = structure(c(1L, 1L, 4L, 8L, 11L, 12L, 17L, 6L,
19L, 13L, 3L, 5L, 22L, 1L, 26L, 18L, 18L, 8L, 21L, 14L, 27L,
4L, 14L, 7L, 6L, 29L, 22L, 16L, 23L, 26L, 3L, 28L, 2L, 13L, 12L,
31L, 33L, 35L, 32L, 28L, 33L, 31L, 20L, 9L, 36L, 12L, 29L, 20L,
31L, 27L, 17L, 26L, 8L, 15L, 9L, 29L, 9L, 35L, 15L, 11L, 16L,
16L, 38L, …Run Code Online (Sandbox Code Playgroud) 我想对非平面多边形进行三角测量(即顶点不在同一个3D平面中).多边形由许多点(数百个)组成.三角形表面不必是光滑的.事实上,它越密集越好.
我最初的想法是:
我不确定哪些想法适用于我的情况,或者可能还有更好的方法?
更多细节:即使轮廓上的点是数百个,它们也可以分组为3到10个子集,因此每个子集都非常接近一条线.这样生成的线仍然不在同一平面上.人们可以把它想象成一群鸟,它们以多边形飞行,但不完全在同一垂直高度上飞行.
如果将圆柱体细分为8面棱镜,根据它们的位置计算顶点法线("平滑着色"),它看起来非常好.
如果你将一个圆锥体细分为一个8面金字塔,根据它们的位置计算法线,你就会卡在圆锥的顶端(技术上是锥体的顶点,但我们称之为尖端,以避免与网格顶点混淆) .

对于每个三角形面,您希望沿两条边匹配法线.但是因为你只能在三角形的每个顶点指定一个法线,你可以匹配一条边或另一条边,但不能同时匹配两条边.您可以通过选择两条边的平均值的尖端法线来妥协,但现在没有一条边看起来很好.以下是选择每个尖端顶点的平均法线的详细信息.

在一个完美的世界中,GPU可以光栅化真正的四边形,而不仅仅是三角形.然后我们可以用退化四边形指定每个面,允许我们为每个三角形的两个相邻边指定不同的法线.但我们必须使用的是三角形...我们可以将锥体切割成多个"堆叠",这样边缘不连续性只能在锥体的尖端而不是整个物体上看到,但是仍然会有小费!
任何人都有光滑阴影低聚锥的任何技巧?