gpt4 book ai didi

python - 球体上三角形的六边形 : constructing a hexagonal/geodesic grid from icosahedronal grid (North Pole only)

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:35:43 24 4
gpt4 key购买 nike

我正在尝试在球体上构建六边形/测地线网格。出于我的目的,我只关注北极。到目前为止,我已经成功地使用 stripy 包构建了一个基于二十面体的三角形网格。 stripy 包允许我通过二分法细化网格:每条边被分成两半,或者等效地,每个三角形被分成 4 个较小的三角形。

我想通过组合 6 个三角形(5 个在极点)来创建一个(几乎)六边形网格,如下所示:

我有以下可用信息:

  • 所有顶点的纬度/经度作为np.array
  • 三角形顶点索引的三元组

一个限制是指数相当“随机”,即它们不会通过螺旋式向外或类似的方式增加。

一个选项是找到每个六边形 (/pentagon) 的中点,并将所有以这个中点作为其三个顶点之一的三角形组合在一起,但我不确定如何通过算法来解决这个问题。找到标记每个六边形中点的顶点的有效方法是什么?它会以某种方式与网格的较粗糙版本相关(即在平分之前)吗?

最佳答案

我想我可能刚刚想到了一个答案,但如果有人可以验证这是否可行并建议最佳实现方式,那就太好了。

  1. 令 V0 为包含所有顶点的集合,E0 为包含所有边的集合。设 V1 为一个空集,我们将使用它来存储每次遍历的新六边形中点顶点。令 V2 为一个空集,它将保存六边形中点的最终集合。设 E1 是构成已识别六边形“前线”的边的集合,设 E2 是一个空集,它将保存六边形边的最终集合。
  2. 确定北极的顶点。将它从 V0 移动到 V1
  3. 找到与该顶点相对的所有边。将这些边移动到 E1。
  4. 从E0开始,删除连接到V1中的顶点(后面的顶点)的边。
  5. 从 V0 开始,删除由 E1 中的边连接的顶点。
  6. 将 V1 中的所有顶点移动到 V2。
  7. E1 中的每条边都是另一个三角形的一部分,它形成与六边形中心顶点相对的边。识别与 E1 中的边相对的顶点。将这些移动到 V1。
  8. 将边从 E1 移动到 E2。
  9. 在 E0 中与 V1 中的顶点相对的所有边。将这些移动到 E1。
  10. 从 E0 开始,删除连接到 V1 中的顶点的边。
  11. 从 V0 开始,删除由 E1 中的边连接的顶点。
  12. 将 V1 中的所有顶点移动到 V2。

等等等等等

关于python - 球体上三角形的六边形 : constructing a hexagonal/geodesic grid from icosahedronal grid (North Pole only),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58210049/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com