标签: mesh

读取网格算法和网格库

我有兴趣阅读和理解2D网格算法.在Google上进行的搜索显示了大量的论文和来源,但大多数都是学术性的,在初学者方面并不多.

那么,这里有人会推荐任何阅读资源(适合初学者),或者我可以从一开始就学习的开源实现吗?谢谢.

此外,与三角网格生成相比,我对四边形网格和混合网格(四元组合和三元组合)更感兴趣.

algorithm mesh

9
推荐指数
2
解决办法
5743
查看次数

Python中的快速二维插值与SciPy常规网格进行分散/不规则评估

我有一个常规的训练值网格(向量x和y,各自的网格xmesh和ymesh以及zmesh的已知值),但是要插值的散乱/不规则/不规则值组(向量xI和yI,我们对zI感兴趣) [0] = f(xI [0],yI [0])... zI [N-1] = f(xI [N-1],yI [N-1]).这种插值将被称为数百万时间作为优化问题的一部分,因此性能太重要,不能简单地使用制作网格并获取跟踪的方法.

到目前为止,我已经能够找到一个接近我想要的scipy.interpolate函数,即Bpf函数.然而,因为它传达了一个分散的输入,我认为它没有良好的性能,我想测试它对样条线性,线性和最近邻插值方法,我理解得更好,我希望会更快.实现这些的所有方法,我可以找到将常规网格作为训练数据(如RectBivariateSpline)似乎也需要常规网格来插值的值.

这段代码有希望弄清楚我在问什么.

import numpy as np
import scipy as sp
import scipy.interpolate as interp

x = np.arange(0,2*np.pi,.1)
y = x
xmesh,ymesh = np.meshgrid(x,y)
zmesh = np.sin(xmesh)+np.cos(ymesh)
rbf = interp.Rbf(xmesh, ymesh, zmesh, epsilon=2)
xI = np.arange(0,np.pi,.05)
yI = xI
XI, YI = np.meshgrid(xI,yI)
# Notice how this is happy to take a vector or grid as input   
zI = rbf(xI, yI)
ZI = rbf(XI,YI) # equiv. to zImesh
myspline …
Run Code Online (Sandbox Code Playgroud)

python interpolation numpy mesh scipy

9
推荐指数
1
解决办法
7635
查看次数

使网格四面化

我正在寻找一种接收3d表面网格的算法(即由三维三角形组成,这些三角形是某些流形的离散化)并在网格体积内生成四面体.

也就是说,我希望3d相当于这个2d问题:给定一个闭合曲线,对它的内部进行三角测量.

如果不清楚,我很抱歉,这是我能想到解释它的最佳方式.

对于第二种情况,有三角形.对于3d情况,我找不到.

mesh triangulation tetrahedra

9
推荐指数
1
解决办法
293
查看次数

凹面六边形有两个口的标准网格?

我正在计划通过带两个嘴的凹形双对称六边形流动的可视化.

边d1的长度等于边d2的另一长度的示例:

在此输入图像描述

我在这里首先讨论的关于不规则六边形的命名.

有标准的网格工具,你可以绘制自己的网格,但我想有一些标准库,以便我可以与其他人更好地合作,以后的流程模拟.我没有找到任何网库在MathCentral文件交换六边形这里.

是否有任何标准的网格库用于不规则的六边形形状?我也对任何其他语言开放,因为我可以阅读代码并将这些标准转换为Matlab库.

geometry mesh convex-optimization finite-element-analysis non-convex

9
推荐指数
1
解决办法
312
查看次数

如何将n,y,z坐标数组转换为numpy中的3D路径

给定三个X,Y和Z坐标的1D阵列,如何使用numpy转换为3D网格路径?

我设法使用numpy(即没有for循环)为2D做这个:

import numpy

def path_2d_numpy(x, y):
    m1, m2 = numpy.meshgrid(x, y)
    m1[1::2] = m1[1::2,::-1]
    r = numpy.append(m1, m2)
    r.shape = 2,-1
    return r.T

from matplotlib import lines
from matplotlib import pyplot

def plot_path_2d(path):
    x, y = path.T
    pyplot.plot(x, y, '-ro', lw=3)
    pyplot.show()

x = numpy.linspace(4, 1, 4)
y = numpy.linspace(1, 5, 5)
path = path_2d_numpy(x, y)
plot_path_2d(path)
Run Code Online (Sandbox Code Playgroud)

哪个输出:

2D网格路径

...但是无法为3D做到这一点.显示纯python解决方案(即没有numpy):

import numpy

def path_3d(x, y, z):
    nb_points =len(x)*len(y)*len(z)
    path = numpy.empty((nb_points, 3))

    xord, yord, i = True, True, 0
    for …
Run Code Online (Sandbox Code Playgroud)

python 3d numpy mesh path

9
推荐指数
1
解决办法
1160
查看次数

C ++:如何从格式化的文本文件中读取大量数据到程序中?

我正在为特定的流体问题编写CFD解算器。到目前为止,每次运行模拟时都会生成网格,并且当更改几何形状和流体属性时,需要重新编译程序。

对于单元数较少的小型问题,它工作得很好。但是对于细胞数超过一百万的情况,需要非常频繁地更改流体性质,效率很低。

显然,我们需要将模拟设置数据存储在配置文件中,并将几何信息存储在格式化的网格文件中。

  1. Simulation.config文件
% Dimension: 2D or 3D
N_Dimension= 2
% Number of fluid phases
N_Phases=  1
% Fluid density (kg/m3)
Density_Phase1= 1000.0
Density_Phase2= 1.0
% Kinematic viscosity (m^2/s)
Viscosity_Phase1=  1e-6
Viscosity_Phase2=  1.48e-05
...
Run Code Online (Sandbox Code Playgroud)
  1. Geometry.mesh文件
% Dimension: 2D or 3D
N_Dimension= 2
% Points (index: x, y, z)
N_Points= 100
x0 y0
x1 y1
...
x99 y99
% Faces (Lines in 2D: P1->p2)
N_Faces= 55
0 2
3 4
...
% Cells (polygons in 2D: Cell-Type and Points clock-wise). …
Run Code Online (Sandbox Code Playgroud)

c++ parsing config mesh configuration-files

9
推荐指数
2
解决办法
398
查看次数

基于多边形的寻路

我在Java中实现了一个基于A*pathfindinder的基本网格.我想制作一个基于导航网格/多边形的探路者,但我遇到的问题是:

具有可能路线的基本多边形图

如果我找到橙色路线,那么我可以使用类似漏斗算法的东西来拉直它以获得所需的路线(蓝色).但是,如果程序计算每条路线的成本,红色和橙色,那么它会说红色路线的价格更便宜.如何编程我的A*算法和/或创建我的网格,以便不会发生这种情况.

java mesh polygon a-star path-finding

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

使用Meshlab进行纹理映射

使用Meshlab将纹理图像映射到裸3D网格顶部的最简单方法是什么?在哪里尚未指定UV纹理坐标?

graphics mesh meshlab

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

渲染后将几何体添加到three.js网格中

我正在创建一个带有THREE.Geometry实例的网格,然后动态填充几何体verticesfaces数组.迭代地细化几何体,在每次迭代时添加额外的顶点和面.如果在将网格物体添加到场景之前优化几何体,则会正确渲染.但是,如果我将网格物体添加到场景并渲染它,然后修改它,则只显示初始N面朝向第一个渲染所包含的几何体.对这些面使用的顶点位置的更改将受到尊重,但只会渲染那些N面.

几何实例被标记dynamic = true了,我设置verticesNeedUpdate,elementsNeedUpdatebuffersNeedUpdate修改几何后各一次.我也试过设置所有其他'脏'标志,虽然我只希望设置这三个(即便如此,我不确定我应该需要buffersNeedUpdate).

据我所知,几何体geometryGroupgeometryGroupList属性是从第一次渲染网格时存在的面构建和填充的,但是没有被重建以包含随后添加的面.

我究竟做错了什么?

geometry mesh dynamic three.js

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

如果网格大于120个三角形,则Matlab会正确停止在网格上插入颜色

我正在尝试使用trimesh函数在Matlab中绘制一个大网格,顶点的z坐标控制颜色.不幸的是,当网格的大小超过120个三角形时,Matlab会停止正确插值颜色.这是一张展示问题的图片,左边是120个三角形,右边是121个三角形.

一张图片展示了这个问题

如您所见,对于大网格,Matlab直接从一个顶点的颜色插值到另一个顶点的颜色.这可能是出于性能原因而做的,但我正在尝试为我的论文生成漂亮的图片,而我并不关心计算它们需要多长时间.有没有办法禁用这种近似值?

这是生成图片的代码:

function test(n)
    %%% Generate a mesh with n triangles.

    oneTriVerts = [0 0 0;
                   1 0 0;
                   1 0 1];

    offset = [0 (1/n) 0;
              0 (1/n) 0;
              0 (1/n) 0];

    verts = zeros(0,3);
    tris  = zeros(0,3);
    for i = 0:(n-1)
        verts = [verts; (oneTriVerts + i * offset)];
        tris = [tris; i*3+1, i*3+2, i*3+3];
    end

    %%% Draw the mesh, with color corresponding to the z coordinate.

    trimesh(tris, verts(:,1), verts(:,2), verts(:,3), verts(:,3));
    title(sprintf('n = %d', …
Run Code Online (Sandbox Code Playgroud)

3d matlab plot mesh

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