作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在阅读 Delaunay (scipy)并遇到了代码:
import numpy as np
points = np.array([[0, 0], [0, 1.1], [1, 0], [1, 1]])
from scipy.spatial import Delaunay
tri = Delaunay(points)
import matplotlib.pyplot as plt
plt.triplot(points[:,0], points[:,1], tri.simplices.copy())
plt.plot(points[:,0], points[:,1], 'o')
plt.show()
据我所知,单纯形是将三角形推广到更高维度。
# Point indices and coordinates for the two triangles forming the triangulation:
tri.simplices
array([[3, 2, 0],
[3, 1, 0]], dtype=int32)
points[tri.simplices]
array([[[ 1. , 1. ],
[ 1. , 0. ],
[ 0. , 0. ]],
[[ 1. , 1. ],
[ 0. , 1.1],
[ 0. , 0. ]]])
Triangle 0 is the only neighbor of triangle 1, and it’s opposite to vertex 1 of triangle 1:
tri.neighbors[1]
# array([-1, 0, -1], dtype=int32)
points[tri.simplices[1,1]]
array([ 0. , 1.1])
谢谢!
最佳答案
此代码正在从包含两个三角形的四个顶点创建 Delaunay 三角剖分。三角剖分如下所示:
代码首先定义数组中的四个顶点:
points = np.array([[0, 0], [0, 1.1], [1, 0], [1, 1]])
接下来,scipy 为这些点构建 Delaunay 三角剖分:
from scipy.spatial import Delaunay
tri = Delaunay(points)
现在,tri.simplices 包含 Delaunay 三角剖分中的三角形列表(在此 2D 情况下)。每个三角形表示为三个整数:每个值表示原始点数组中的一个索引。
tri.simplices
array([[3, 2, 0],
[3, 1, 0]], dtype=int32)
所以 [3,2,0] 是顶点 3 (1,1)、顶点 2 (1,0) 和顶点 0 (0,0) 之间的三角形。下一个代码连接点和tri数据结构来计算每个三角形的顶点坐标,消除间接:
points[tri.simplices]
array([[[ 1. , 1. ],
[ 1. , 0. ],
[ 0. , 0. ]],
[[ 1. , 1. ],
[ 0. , 1.1],
[ 0. , 0. ]]])
tri.neighbors 数组包含有关哪些三角形彼此相邻的信息。
tri.neighbors[1]
# array([-1, 0, -1], dtype=int32)
回想一下三角形 1(位置 1 中的 tri.simplices)具有顶点 [3,1,0]。三角形 0 是与顶点 1 相对的相邻三角形 1,这就是结果在第二个元素中的值为 0(对应于 [3,1,0] 中的 1)的原因。没有与顶点 3 相对的三角形(即,沿顶点 0 和 1 之间的边连接)或与顶点 0 相对的三角形,因此邻居数组在这些位置包含 -1。
points[tri.simplices[1,1]]
array([ 0. , 1.1])
回想一下上面的tri.simplices数据结构,在simplex 1(即[3,1,0])的位置1中有一个值1,这行只是查找顶点1的坐标。
关于python-3.x - Delaunay 三角剖分简化 - scipy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62608710/
我有一个绕其 3 轴旋转的立方体,当 key[a] == true 时,它会向左旋转,就好像它正在滚动一样。将立方体向任何方向旋转 45 度,将其向后旋转 90 度,以获得继续的错觉。这将保持 3
我是一名优秀的程序员,十分优秀!