问题标签 [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 投票
1 回答
1149 浏览

c++ - 创建和使用 AABB 进行碰撞检测 3d (OpenGL)

假设我有一个按以下方式创建的正方形:

现在假设我想使用 AABB 结构来检测球体何时与该立方体的侧面(不是立方体的顶部或底部)碰撞,从而防止它穿过立方体?关于如何去做这件事的任何想法?

如果我使用 glutSolidCube 实现了多维数据集,我还能使用 AABB 结构吗?

还有没有更容易检测碰撞而不必使用AABB?也许像测试交叉路口或类似的东西?

0 投票
12 回答
48656 浏览

python - 旋转图像并裁剪黑色边框

我的应用程序:我正在尝试旋转图像(使用 OpenCV 和 Python)

旋转图像

目前,我开发了以下代码,它旋转输入图像,用黑色边框填充它,给我 A。我想要的是 B - 旋转图像中最大可能的区域裁剪窗口。我称其为轴对齐的边界框。

这与Rotate 和 crop基本相同,但是我无法得到该问题的答案。此外,该答案显然仅对方形图像有效。我的图像是矩形的。

代码给A:

0 投票
0 回答
41 浏览

performance - 严重滞后的边界框检测

我有一个基本游戏的边界框碰撞检测系统。每次我在一个实体中生成一个边界框时都会与之配对。它自己工作的碰撞系统;然而,即使只有两个实体,它也非常滞后。我的代码在下面列出,我知道这绝对不是最有效的方法,但我真的不知道如何以其他方式做到这一点。

bbXbbYbbZ是 AABB 在世界上的位置。

该函数大约每 15 毫秒在计时器上调用一次,但增加迭代次数也没有多大帮助。

用于比较现有边界框的函数: aabbPool是一个列表,用于存储当前加载的所有 AABB。

0 投票
1 回答
2906 浏览

c++ - 使用扫掠 AABB 相交算法解决碰撞法线

所以我有以下扫过的 AABB 碰撞检测算法工作得很好而且花花公子(基于这篇文章

我的问题是如何确定碰撞法线,或者换句话说,碰撞的盒子的aabb0一侧aabb1

我在谷歌上找了高低都无济于事。我需要碰撞的法线,以便确定碰撞后如何“滑动” aabb0。(aabb0是玩家的边界框,aabb1是世界某处的静态块)。

aabb0是玩家的边界框。 d0是 的位移aabb0aabb1是世界上的一个静态方块。 d1aabb1(始终为 0)的位移。 u0是第一次和u1最后一次碰撞时间。

0 投票
0 回答
148 浏览

c++ - 计算对象之间的新速度 (AABB)

最近我一直在尝试使用 Direct2D 在 C++ 中创建一个 2D 平台引擎。我目前遇到的问题是,在向它们施加重力等加速度后,让彼此靠在一起的物体正确交互。

现在我可以检测到碰撞并正确响应它们(我认为),当物体发生碰撞时,它们会记住它们靠在哪些其他物体上,因此物体可以被其他物体推动(请注意,在任何碰撞中都没有反弹,所以当物体发生碰撞时)碰撞他们保证会休息,直到发生其他事情)。每次模拟进行时,对象的加速度都会应用于它们的速度(例如 vx += ax * t,其中 t 是自上次进行以来经过的时间)。

在应用这些加速度之后,我想检查是否有任何相互靠着的物体以不同的速度移动(因为不同的物体可以有不同的加速度),并且根据这种差异,要么取消两个物体的链接,所以它们不是更长的休息时间,或者平衡它们的速度,以便它们再次以相同的速度移动。我无法创建一个可以跨许多静止对象执行此操作的算法。

这是帮助解释我的问题的图表

http://i.imgur.com/cYYsWdE.png

0 投票
1 回答
412 浏览

c++ - 传递AABB树:AABB树的序列化?

我正在尝试并行化我的代码,并且我正在使用 CGAL 的 AABB 树进行干扰检测(顺便说一句,效率非常好 :))。在单台机器上没问题(我不是说它是多线程的,但那是另一回事),但我现在想一次进行多项分析,我将使用 MPI 将我的软件生成到多台计算机上。障碍在不同的分析中没有变化,因此我的 AABB 树对于所有孩子都是相同的。为了最大限度地减少开销,我想避免重新读取和重新构建我的树,实际上,甚至不是写入文件/读取文件操作。

通过 MPI 函数的 SPAWN,我可以给孩子一个字符串数组,我想将 AABB 树与其他全局变量一起作为参数传递,以跳过读取文件部分的开销。

第一个问题:这意味着在 argv 中传递类似 1.5MB+ 的内容,这有什么问题吗?

第二个问题:我如何通过树?我在这个线程中读到了一些有趣的东西,但它很旧,并且没有后续行动。有没有人在此期间进行了连载?有什么新的指令可以做到吗?否则我会尝试做这样的功能,至少在我的情况下(即,Simple_cartesian 内核,Triangle_3 原语)。欢迎任何帮助:)

0 投票
0 回答
483 浏览

algorithm - AABB 轮廓到 AABB 轮廓交点算法?

我环顾四周,但没有完全找到我要找的东西。起初,我认为这将是一个简单的问题。直到我尝试实现它并意识到有很多情况,我找不到通用的解决方案。

比如说,我有两个 AABB。如果他们的轮廓相交,我想得到他们所有的交点。最大点数为4 ,最小非零点数1

我的 AABB 由始终自动排序的 aminmax点组成,因此min始终具有最低的xy 值并max始终具有最高的xy 值。

下图显示了一些 AABB。蓝线表示它们的交点。请注意,如果 AABB 的一侧与另一侧重叠,则有点像沿着重叠的线段有无限数量的交点;在这些情况下,我想忽略它们并说,“那里没有交点”。

有人对算法有想法吗?我意识到我没有发布任何代码,我很确定这是不受欢迎的,但我已经考虑过这个问题了。至于我为什么要这样做……我不知道,我只是好奇是否可以干净地做到这一点。

哦,是的,我的 AABB 有这样的方法应该很有用:

我可以做一个丑陋的黑客,只做线段<->线段检查,但是,我不知道'..感觉有点',嗯,丑陋和不雅。我很确定一定有一些技巧可以用minmax点来快速做到这一点。

例子

0 投票
1 回答
485 浏览

indexing - Box2D:通过报表夹具获取子索引

使用 Box2D 2.2.0,我正在使用 Box2D 开发游戏。玩家射击 AABB。在每个 step() 中,我通过 b2World->QueryAABB( &queryCallback, aabb ) 移动 AABB 并处理冲突。然而,我的游戏世界是由链形组成的。所以 b2World->QueryAABB 只检测倾斜链形状的 AABB。所以我目前的目标是从 ReportFixture() 获取子索引,以便我可以针对链形的指定边缘测试 AABB。

我发现了这个:http ://www.box2d.org/forum/viewtopic.php?f=3&t=8902

在那篇文章之后,我将子索引添加到 Report Fixture,如下面的代码所示。

我的问题是,当我取回 childIndex 时,它总是类似于 -1082069312、-1053558930、-1073540884。

这是我的 b2QueryCallback:

在测试台中:

0 投票
2 回答
1687 浏览

algorithm - 为什么我应该使用 AABB 进行圆-圆碰撞

在我的 wip 游戏中,我必须实现 Circle-Circle 碰撞。为了实现这一点,我只需计算它们之间的平方距离 Centers (x1-x2)² + (y1-y2)²。如果这更小,那么它们的平方半径就会(r1+r2)²发生碰撞。但是今天我看到了这个链接: Circle-Circle collision

在这里,他们首先使用 AABB 碰撞来注意圆圈是否靠近。但我为什么要这样做?圆-圆碰撞是一种简单且并不昂贵的计算。当我首先使用 AABB 时,我至少会进行相同数量的计算,并且如果圆圈更接近。

让我解释:

我对每个圆圈进行 AABB 碰撞检测。所以我必须做n! / (n-2)!计算。n = 要测试的圈数。对于每个 AABB 碰撞圆对,如果它们真的发生碰撞,我必须进行另一次计算。

如果没有 AABB 碰撞检测,我只进行n! / (n-2)!计算,我认为这种计算不会那么昂贵。你怎么看?

0 投票
2 回答
223 浏览

algorithm - 将框拆分为内接实体周围的凸实体(即“雕刻”)

我得到了一个直角棱镜(即一个盒子)和一个任意的凸面实体,使得该盒子与上述实体的 AABB(轴对齐边界框)相匹配。

我想从盒子中“雕刻出”实体,并在这样做时将盒子分成几个围绕实体面的凸段(希望,如果实体有n 个面,则有n 个段)。基本上,在盒子上打一个实心形状的孔。这是我的意思的图片:

在此处输入图像描述

但是,这也必须适用于这样的形状:

在此处输入图像描述

我认为,问题在于,轴对称形状(如直棱柱和金字塔)比中心对称形状(如球体)要容易得多(如您所见,球体不是正确的球体;它们具有有限数量的平面)。我正在寻找一种适用于任何实体的通用算法,无论它多么复杂、旋转或倾斜。