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

intersection - 从 AABB 树交点获取原语

此代码包含使用 Polyhedron_3 网格构建的 AABB 树。可以验证是否发生了交叉点,但不能验证交叉点命中的原语。如何检索原语?

编辑:

也不行。

编辑2:

给你一个迭代器和 I_Polyhedron_facet。

0 投票
1 回答
432 浏览

python - 如何找到重叠矩形的面积

我试图在没有交集的情况下获得重叠矩形的区域。矩形的可视化如下所示:

我正在关注此url的答案,目前以下代码对我有帮助:

获取矩形面积(具有3个或更多矩形)的最有效方法是什么,我如何在python中做到这一点?任何帮助,将不胜感激。

0 投票
2 回答
2296 浏览

unity3d - 立即从 3D 管道访问 2D 框的 Unity 功能?

在 Unity 中,假设您有一个 3D 对象,

在此处输入图像描述

当然,获得 AABB 是微不足道的,Unity 有直接的功能,

在此处输入图像描述

(您可能必须以通常的方式“添加渲染器的所有边界框”,没问题。)

所以 Unity 确实有一个直接的功能,可以立即为您提供 3D AABB 盒子,而不是每帧的内部网格/渲染管道。

现在,对于有问题的相机,按照定位,AABB 确实覆盖了某个 2D 边界框......

在此处输入图像描述

事实上......是否有某种内置的直接方法可以在 Unity 中找到橙色的 2D 框?

问题 - Unity 是否具有立即从管道中提供 2D 截锥体的功能?

(请注意,要手动执行此操作,您只需为 AABB 的 8 个点制作光线(或使用世界到屏幕空间,就像 Draco 提到的那样);将它们封装在 2D 中以制作橙色框。)

我不需要手动解决方案,我在问引擎是否每帧都从管道中以某种方式给出这个?

有电话吗?

(确实,如果有这个会更好......)

在此处输入图像描述

我的感觉是其中一个或所有

  • 特别是遮挡系统
  • 着色器
  • 渲染器

肯定会知道橙色框,甚至可能知道管道内的蓝色框,就在显卡旁边,就像它知道给定网格的 AABB 一样。

我们知道 Unity 可以让您在给定网格的每一帧立即点击 AABB 3D 框:事实上,Unity 是否给出了“2D 截锥体边界”,如此处所示?

0 投票
1 回答
195 浏览

c++ - AABB 碰撞使实际精灵的大小翻倍

所以,我让这段代码为 AABB 碰撞工作,直到我决定在 Y 轴上制作一个比在 X 轴上更大的精灵。我试图修复代码,但现在它只是将碰撞大小比实际精灵大小增加了一倍。前任。精灵 1 iVec2(50,100) 的大小,精灵 2 iVec2(30,30) 的大小。

0 投票
2 回答
509 浏览

c++ - 水平碰撞不工作AABB C++

更新

再次更改了碰撞代码并为 AABB 制作了一个组件,现在看来问题仅在于水平碰撞,它并没有将物体推到它认为的足够但与 Y 轴相同的代码,所以它不应该是一个问题.

(它确实检测到水平碰撞,分辨率是问题)

图片

0 投票
1 回答
132 浏览

c++ - (CGAL) 获取AABB树生成的bounding cube进行碰撞检测

我想知道两个多面体是否相交,为此我用生成边界立方体的 CGAL::AABB_tree 制作了它们的 AABB 树,我想用这个 AABB 树检查相交:

CGAL::box_intersection_d (RandomAccessIterator1 begin1, RandomAccessIterator1 end1, RandomAccessIterator2 begin2, RandomAccessIterator2 end2, 回调回调, ...)

但我不知道如何从树中获取 RandomAccessIterator1 begin1、RandomAccessIterator1 end1、RandomAccessIterator2 begin2、RandomAccessIterator2 end2,有人可以帮我吗?

0 投票
1 回答
125 浏览

c++ - 如何在不使用数组的情况下存储输入?

为一组输入几何计算最小尺寸 AABB 所需的问题。

几何类型如下:

  1. 矩形,center_x,center_y,宽度,高度:R xywh
  2. 圆,center_x,center_y,半径:C xyr
  3. 点集、点数、x_1、y_1、...、x_n、y_n:P n x_1 y_1 ... x_n y_n
  4. # : 表示输入结束

示例案例如下所示:

输入:

R 0 0 3 2
#

输出:

0 0 3 2

输入:

P 2 3 -2 -1 4

C -0.5 3.2 1.6

P 3 -1.5 3 3 3 5 3

0 0 3 2

#

输出:

1.45 1.4 7.1 6.8


我想知道示例案例二如何运行,因为有多个输入,我该如何构建我的 AABB?但是,如何避免变量被替换的情况呢?

例如,

0 0 3 2

1 2 4 5

我只是不知道如何避免更换 center_x、center_y、w 和 h。


以下是我的代码,

非常感谢 !!

0 投票
1 回答
116 浏览

collision-detection - 3D continuous moving AABB against static convex polyhedron collision detection

I am currently trying to implement a simple continuous collision detection system. I wondered whether it was possible, for a moving AABB, to compute the distance it can translate in an arbitrary direction d before it intersects a convex polyhedron. Here is a simple explanation in 2D: enter image description here

What I want here is the length of the green lines (the orange AABB is the initial position, and the red AABB is the position where both colliders intersect).

This is also equivalent to trying to raycast the minkowski difference A⊕-B from the origin in the direction d, where A is my static convex polyhedron and B my moving AABB: enter image description here

But computing a minkowski difference seems to be really performance-consuming, so I would like to know if a fast algorithm for doing that exists.

When Googling, I saw an algorithm to do that called GJK, but it only seems to return the overall minimum distance, and not the directional distance.

Thanks in advance for your answers!

PS: Please excuse my poor english and my total lack of artistic talent using paint.

0 投票
1 回答
2670 浏览

unity3d - 在 Unity3D 中,“设置”网格的边界会做什么或实现什么?

在 Unity 代码库中,我看到了这个:

函数“MakeASmallQuadMesh”具有用于制作网格的通常完全正常的代码,所以

那里不用担心。它形成一个 10 厘米宽的四边形。

但是那行代码呢

  1. 得知您可以设置mesh.bounds,我很惊讶,我认为它是只读的。

  2. “设定”界限有什么可能的“意义”?这就像:医生办公室里有一份书面测量结果,上面写着简是 6 英尺。您将记录更改为 5'10"。当然,简的身高根本没有变化。您只是奇怪地把记录弄错了。

  3. 可能是这样:因此,网格的边界被各种,实际上是许多 Unity 系统使用。(剔除等)模式是否可以通过“强制”这样的边界(边界现在对于对象“完全错误” - 它们只是你在其中强制的一些值)程序员想要的(对于一些原因)Unity 的系统(例如,剔除)使用那些强制的、荒谬的(对实际对象而言)值?

  4. 疯狂的猜测,也许有一种模式(我从未听说过)你“强制”对象 A 的边界与对象 B 相同 - 由于某种原因我无法猜测?

这里的模式/原因可能是什么?

我只是假设这是一个基本错误,但假设会杀死。

0 投票
1 回答
828 浏览

c - 在 2D 中,如何查找三角形和 AABB 是否相交

我正在为自定义厄运引擎编写物理引擎。

我的目标不是复制原始厄运的确切行为。

在厄运中,每个“事物”(玩家、怪物等)都是一个轴对齐的边界框。我想保留它。

我已经有一个适用于这些扇区的细分算法。

我已经有一个工作四叉树,使用 AABB 扇形三角形框。

四叉树将返回与给定 AABB(例如玩家)相交的候选列表。

我想要的是:一种算法来测试三角形是否与二维的 AABB 相交。

我能做的:将AABB分成两个三角形,然后进行三角形-三角形相交检查。我能做什么:使用 3D 的“三角形 vs aabb”算法并将“z”设置为 0。我能做什么:

1/ 检查三角形的一个点是否在 AABB 内。

2/ 检查 AABB 的中心是否在三角形内(中心是避免舍入问题的更好候选者)。

3/ 检查三角形的线段是否与 AABB 的线段相交。

我不想这样做,因为:我认为鉴于这种精确的情况,应该有一种更优化的方式来做到这一点。这正是 GPU 必须经常面对的事情:查找三角形是否在视口内。我认为这个问题比任何其他问题都更能解决。

请注意,情况可能更简单:我可以翻译所有内容,因此 AABB 从 (0,O) 开始。我可以调整所有内容的大小,因此问题变成:“如何确定三角形是否与 [0,1][0,1] 相交”。

我已经做了一些研究,但是:

1/ 大多数结果都是针对 3D 的。

2/ 奇怪的是,这是一个不常被报道的案例。即使在“游戏物理食谱”一书中也没有提到这个问题。

3/ 我发现的答案是 SAT(分离轴定理)或等效的东西。

对于四叉树给出的每个候选三角形,我必须在每一帧中对很多“事物”(玩家、怪物)进行此测试。

我有最后一个选择,但我真的不知道从哪里开始,即使这是一个好主意。这是我脑海中的快速总结。

1/ 因为 gpu 已经拥有所有这些三角形。

2/ 因为它是大规模可并行化的。

3/ 因为,通过了固定成本,不会有额外的成本。

=>问gpu。

但我不知道该怎么做。通信 cpu/gpu 会有成本,但成本是固定的(1 或 100.000 件东西的成本大致相同)。我宁愿避免这种解决方案(但当网站要求我说出我的想法时,我正在谈论它)。

请注意,这是我在该网站上的第一条消息。请注意,英语不是我的母语。请注意,现在是凌晨 3 点 32 分(深夜)。请注意,我将无法在明天之前大致相同的时间回答(实际上每天都是如此)。

感谢阅读,提前感谢您的回答。