问题标签 [tetrahedra]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
600 浏览

mesh - 四面体网格

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

即,我想要与这个 2d 问题等效的 3d:给定一条闭合曲线,对其内部进行三角测量。

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

对于 2d 案例,有Triangle。对于 3d 案例,我找不到。

0 投票
2 回答
954 浏览

matlab - 四面体面的大型、大部分为空的数据结构

我正在尝试将四面体中每个面的节点 ID 与其对应的四面体 ID 链接起来。

对于 tetra 1,有四个面:

然后我想将这些存储在数据结构中:

这意味着我可以在O(1)中找到任何特定面的 tetra ID :

这种方法的问题是它需要连续的内存。随着我的网格变大,我的内存不足:

我也玩过使用嵌套单元格:

虽然这适用于小网格,并且不需要连续内存(AFAIK),但它有一个令人讨厌的习惯,即在 N=1000 时使 MATLAB 崩溃。

有任何想法吗?

0 投票
2 回答
541 浏览

compiler-errors - tetgen tetcall 编译错误

我想使用 Tetgen 通过四面体化计算给定点集的体积。我已经在代码中看到了这样做的一个片段,可能只需要一些调整。

我遇到的问题是让 tetcall(tetgen 的测试程序)开始运行。如果我想编译它(在 Linux 终端中使用 g++ -o test tetcall.cxx -L./ -ltet )。我得到:

test.cpp:183:24:警告:不推荐从字符串常量到“char*”的转换 [-Wwrite-strings] test.cpp:184:23:警告:不推荐从字符串常量到“char*”的转换 [-Wwrite-字符串] test.cpp:190:30: 错误:无法将参数 '1' 的 'tetgenio::polygon*' 转换为 'tetgenbehavior*' 到 'void tetrahedralize(tetgenbehavior*, tetgenio*, tetgenio*, tetgenio*, tetgenio* )' test.cpp:193:26: 警告:不推荐从字符串常量转换为 'char*' [-Wwrite-strings] test.cpp:194:29: 警告:不推荐从字符串常量转换为 'char*' [- Wwrite-strings] test.cpp:195:26: 警告:不推荐从字符串常量到 'char*' 的转换 [-Wwrite-strings]

在命令中是否包含 -L./ -ltet 似乎与错误无关。

我认为那些警告不是这样的问题。我不明白第 190 行 tetcall.cxx 调用函数 tetrahedralize 的错误:

不起作用,我没有更改任何内容,并从站点 [http://tetgen.berlios.de/][1] 获得了$ make tetlib所有内容a) 在同一张地图中。我认为编译器想要连接的函数,以及它可能向南的地方,在 tetgen.cxx 第 34498 行

我查看了标题中的 tetgenbehavior 类,但我无法真正弄清楚变量 tetgenbehavior *b 是什么或如何找出它的类型。我看到一些我认为是开关的 char 成员。我做错了什么,错误的原因是什么?

0 投票
1 回答
1219 浏览

graphics - 将四面体网格文件转换为基于面的文件(*.obj、*.ply 等)以进行可视化

在计算机图形学中,通常使用*.node*.ele文件来存储四面体网格,前者存储(x,y,z)所有顶点的 3D 坐标,后者存储每个四面体的索引,例如

这意味着索引为 1 的四面体由索引为 1、2、3、4 的顶点组成,并且具有属性 1。

但是,很难将此类文件可视化。那么是否有任何库可以将此类文件转换为MeshLab 中的可视化文件*.node*.ele*.obj*.ply

非常感谢!

0 投票
2 回答
216 浏览

algorithm - 将实体盒的点映射到四面体网格盒

给定一个带有点的 3d 实体框。给定一个用四面体网格划分的盒子。两个盒子的尺寸是一样的。

我需要找到一种算法,将实体的点映射到网格中的相应四面体。

我使用了下一个算法:

  1. 用八叉树优化实体
  2. 遍历网格中的四面体并检查它是否与八叉树的分支或叶子相交。(Ratschek & Rockne 算法)
  3. 如果相交,则将八叉树的点映射到四面体。

但是算法很慢,而且我在检查盒子和四面体之间的交集时遇到了很大的问题。

我仍然可以坚持使用八叉树,但我肯定需要一些合理的东西来检查交叉点。任何评论将不胜感激。

更新:我有 200 万个实心点和 200k 四面体

更新 2:我正在尝试在三角测量中实现步行

0 投票
0 回答
583 浏览

boolean - CGAL中两个相交四面体的体积

我正在寻找一种使用 CGAL计算两个四面体相交体积的快速方法。如果我正确阅读并理解了 CGAL 手册,我可以将两个四面体创建为 3D Nef 多面体,然后将它们的交集计算为 3D Nef 多面体并计算其体积。

这是正确的还是有更好/更简单的方法来实现这一点?

这样做的最终目标是创建一个在两个四面体网格之间创建映射的算法。(网格 a 中的元素 i 有多少包含在网格 b 中的元素 j 中)。

0 投票
2 回答
2391 浏览

c++ - 构建一组随机点的四面体 - 四面体化

我在 3D 空间中有一组点(其中 100 万,未来可能更多,比如 10 或 1 亿)形成一个球体(它们填充球体 - 它们不只是在表面上),我想构建连接每个球体与其第一个邻居的四面体......寻找四面体化,到目前为止,我发现的是:

  • 网格划分算法,但据我所知,它们填充空白,而我的观点是固定的。
  • 表面观察的算法,这是完全无关的
  • 用于查看 3D 图像的算法(主要是在医学领域):这更接近但并不完全奏效。

我怎样才能做到这一点?

2014-08-09 首先感谢大家的建议!我曾经 - 现在仍然 - 在假期里,只是路过看看是否有人回答......我并不失望!!!!:-) 我想我会先尝试 CGAL,然后再看看。我对 O(n2) 中的同一组点进行了其他数据计算,我预计这些点将持续大约 1 周,所以几个小时不会那么糟糕。分分钟梦想成真!

0 投票
6 回答
9917 浏览

c# - 如何检查点是否在四面体中?

我知道四面体的所有坐标和我想确定的点。那么有人知道该怎么做吗?我试图确定该点属于四面体的每个三角形,如果它对所有三角形都是正确的,那么该点就在四面体中。但这绝对是错误的。

0 投票
2 回答
414 浏览

c - 如何在给定边长的情况下找到不等边四面体面的角度

我正在用 C 编写一个程序来确定给定四面体所有边的长度的顶点。四面体有一个等边的底边和斜角边。为了完成公式,我需要一种方法来获取面和等边底之间的角度。我知道其中一个面的高度,一旦我能得到一个面和底座之间的角度,我就可以将高度旋转那个角度并得到顶点的位置。

知道从哪里开始计算角度公式(见下面的 theta),以及如何将其转换为 C。

我知道黄色段的长度,并试图找到蓝色的角度 B 我知道黄色段的长度,并试图找到蓝色的角度 B

到目前为止,这是我的代码:

0 投票
1 回答
657 浏览

matlab - 四面体的外圆心(4D)

我正在尝试计算 4 维空间中四面体的外心。基本上我正在寻找的是穿过四面体所有4个顶点的最小球体的中心。我在网上搜索过,但似乎找不到任何具体的公式。我的总体目标是找到外心并检查给定数据集中的任何其他点是否位于围绕四面体顶点构建的球体内。类似于 Delaunay 三角测量的工作原理。请注意,四面体可以是正四面体,也可以是不规则四面体。

目前我正在使用一个自定义优化函数,它使用 GA 来定位一个与所有 4 个顶点等距的点。然而,这并不总能找到最小的封闭球体。我希望有一些具体的数学公式可以使这个计算更准确。