问题标签 [aabb]

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 投票
0 回答
459 浏览

c++11 - CGAL4.10 中的编译错误 - CGAL AABB_traits.h 中的 DBL_MAX

我正在为我的项目使用 CGAL 的 AABB。我对 CGAL3.9 没有任何问题。但是,现在我使用的是具有 CGAL4.10 的集群。当我编译我的代码时,我收到以下错误。

我知道 DBL_MAX 是在<cfloat>(或 float.h)中定义的,但我无法编辑集群中的 CGAL 源,因为我没有 root 权限。

我怎么解决这个问题?

0 投票
1 回答
172 浏览

cgal - CGAL AABB 树的问题

我正在使用 CGAL 的 AABB 树为我的项目执行点位置查询。我有一个 3D 笛卡尔网格和一个浸入网格内的表面。我需要找出网格的哪些元素在外部/内部/被表面切割。为此,我投射了一条射线并找到单元格每个角落的交叉点数量,并检查它们是在内部还是外部。

只要网格的角与表面上的节点不重合,这就会很好地工作。但是,当单元格的角点与表面上的节点重合时,我会得到垃圾结果。CGAL的错误结果中显示了一种这样的情况。

我尝试使用Simple_cartesian<double>Exact_predicates_inexact_constructions_kernel但情况并没有改善。

CGAL 似乎对浮点运算如此敏感。

如何解决这个问题?

0 投票
0 回答
606 浏览

java - 3D 三角形与 AABB 的相交面积

我正在寻找三角形和 AABB 之间相交的实际表面积。目前,我正在使用 Tomas Akenine-Möller 的 AABB-Triangle 相交测试,效果很好 - 但我还需要更多信息来提高我正在开发的实时三角形到体素引擎的渲染质量。

它的基本应用将使我能够找出原始模型中的哪个三角形在给定体素中占用的空间最多。这使我可以将模型创建的最终体素与原始三角形 ID 关联起来,不仅是为了颜色准确性,而且是为了持久性。

到目前为止,我想到的方法是取三角形和 AABB 的所有交点,将它们成对分组。获得所有对后,您可以很容易地找到与实际位于 AABB 之外的对相关联的第三点。然后简单地取 3 个向量的集合并用它们构造三角形。取整个原始三角形的面积,减去构造三角形的面积。在三角形不“主要位于 AABB 内”的情况下,您构建位于 AABB 内的三角形并将它们加在一起,忽略整个区域。如果三角形在与 AABB 相交时形成非三角形,我不确定该怎么做。以下是我提出的一些案例(可能还有更多)作为 2D 表示: 图片

我真的怀疑我的想法在这里的可行性,所以我愿意接受任何建议。鉴于我不需要实际区域的特定问题,如果有人可能有更好的解决方案,请告诉我。

谢谢。

0 投票
1 回答
142 浏览

c++ - 如何在旋转时渲染 AABB

您好,我是 C++ SFML 的新手。我应该在旋转时绘制一些矩形并渲染它们的 AABB,我想检测为它们设置的尺寸是否与另一个旋转的 AABB 矩形相交。这是我用来检测它们的方法。如果他们在旋转,这样检查就足够了吗?我需要使用分离轴定理之类的东西吗?或者有没有办法不需要使用它,如果它只是一个 AABB 而不是一个 OBB

0 投票
1 回答
83 浏览

c++ - AABB 相交 BoundingSphere 仅在一侧工作

所以我试图让它正确地与 AABB 相撞。但由于某种原因,它只会发生在 AABB 的一侧。所有其他方面都表现得好像没有碰撞一样。

0 投票
2 回答
14871 浏览

c++ - Simple Oriented Bounding Box OBB 碰撞检测解释

我可以实现 AABB 方法来检测碰撞,它既简单又便宜,但我想实现 OBB 以获得更高的准确性,所以我使用模型初始化创建了边界框,它由 8 个边界顶点和中心组成,每一帧我都会转换所有顶点使用变换矩阵来适应定向边界框,但我无法理解检测两个 OBB 之间碰撞的方法,而且我找不到一个简化且清晰的教程,它用代码观点而不是数学来解释算法,因为我我不是数学家。

如果我有

在模型初始化时,我创建了盒子

并且每一帧我用模型的变换矩阵重新计算盒子

0 投票
1 回答
68 浏览

compiler-errors - CGAL surface_mesh 覆盖示例

在 CGAL 网页上,您会看到这个简短的示例:

在所有 surface_mesh 和 AABBTree 文档示例中,未使用此行,所以我想知道如何配置 AABB 特征以使该示例成为可能。我自己的方法无法编译:

编译器错误是:

0 投票
0 回答
77 浏览

algorithm - 检查光线是否存在于 AABB 空间中。

我有一个带有 3d 轴对齐边界框列表的 3d 空间。让我们将这些边界框之一称为target. 除了所有这些边界框,我还有一个位置向量,称之为start

我想确定是否存在一条射线:

  • 开始于start
  • 相交target
  • 在与其他边界框相交之前不与任何其他边界框相交target

以下是我已经尝试过的方法:

  1. start测试从到 的所有顶点的光线target。这不起作用,因为其他边界框可能会阻挡所有顶点,但中间有一个空间。
  2. 测试来自附近边界框顶点的光线start,并查看它们是否相交target。这也不适用于目标被 AABB 阻挡的情况,其中所有角落都会导致光线从目标发散。

有没有一种算法可以找到像上面这样的光线?我实际上并不需要找到实际的射线,只需确定它是否存在。

0 投票
0 回答
213 浏览

java - OpenGL GLUT茶壶与相机碰撞

我正在制作一个简单的 3D 游戏,其中我在迷宫中移动。现在我想实现收集该地区随机干扰的茶壶。茶壶的随机绘图工作得很好。现在我需要进行碰撞。为此,我想使用 AABB 算法。

这是我初始化茶壶坐标的方法,以便它们在没有墙壁的迷宫中受到干扰:

这是我渲染茶壶的方式:

我的问题是,如何简单地实现 AABB 算法。我知道我应该在那些茶壶周围画一个立方体,但是我不知道如何编码。

我已经checkCollision(double X, double Z);准备好了我的方法,所以我真的只需要在茶壶周围画一个盒子并得到它的坐标。

0 投票
1 回答
56 浏览

2d - 物理学 - AABB 碰撞后如何调整?

当玩家与块碰撞时,我会根据最小的轴变化来移动它们,这是有道理的。

但是,当许多块相互交互时,这会变得令人困惑。

盒子碰撞

  • 黑色方块 - 玩家,移动
  • 红/蓝方块 - 块,静态

从这个例子中,玩家显然应该向上移动,但盒子各自有不同的视点

  • 蓝色框在 Y 轴上碰撞更多,所以黑框应该向左移动。如果您假装红色框不存在,您会更容易看到这一点
  • 红框在 X 轴上碰撞较多,所以黑框应该向上移动

我怎么知道哪个框是“正确的”?