- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在寻找一种简单的算法来检测 aabb 的区域是否与圆弧(由绳索闭合)或饼图(通过圆心闭合)的区域重叠。
我已经找到了这个答案:Intersection of rectangle and circle (or arc)
但这并不是我要找的东西,因为我对形状轮廓的交点不感兴趣,只是想知道这些区域是否重叠。
例如,非常小的 AABB 仅包含馅饼的中心但 AABB 的边缘不与馅饼的圆相交的情况不会包含在链接的答案中。同样,弧完全包含 AABB 且 AABB 的边甚至不与绳索相交的情况也不会被覆盖。
现在,在我开始重新发明轮子之前,我想问一下是否有用于这种重叠检查的已知算法。
AABB 扇区示例:
最佳答案
考虑到配置的多样性,这不是一个简单的问题。
您可以通过以十字为中心分割扇形来简化问题,这样水平线或垂直线就不会与圆弧相交两次,并分别处理这些部分。
然后考虑其中一个部分并在“收缩”矩形的同时“膨胀”它。更准确地说,扇区的每个点都变成了从它开始的矩形(左上角),而矩形缩小到它的右下角。
您获得的形状(绿色区域)是所谓的 Minkowski 和(又名膨胀)。
如您所见,它有 5 条直边和一条曲线。您可以轻松预测所有扇形方向的形状。
如果缩小到一个点的矩形位于这个曲线六边形内,则存在交点。您检查该点是否属于使用极坐标(r < R
和 Θ' < Θ < Θ"
)的扇区,并通过标准多边形点测试检查(直)六边形的内部。
类似的推理适用于圆段(弦)。
这种几何变换允许使用“轨迹”方法,即将解集可视化为几何形状,以支持推理。鉴于域的性质(凸六边形),我们可以得出结论,在最坏的情况下,4 次比较(涉及线性或二次项)足以通过二分法得到答案!
关于algorithm - 重叠 AABB-Arc 和 AABB-Pie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32744344/
哪个交叉路口测试通常更快?一个与另一个轴对齐的边界框?或者带有三角形的轴对齐边界框。 我假设 AABB-AABB 但我听到了不同的意见。 最佳答案 可以在任何标准 CPU 上使用(最多)六个比较和六个
我有许多对象需要渲染到 HTML5 Canvas 上。我的输入是轴对齐边界框的有序列表。这些盒子经常重叠,但也经常在它们之间留下大面积的空白空间。 我想尽量减少我必须创建的 Canvas 表面区域的数
我有一组动态的 AABB 框,它们的位置和大小不断更新。我可以使用什么结构来获取其中哪些 AABB 框与任意 AABB 框发生碰撞? 最佳答案 使用动态 AABB 树。 Here's some sou
我正在寻找一种简单的算法来检测 aabb 的区域是否与圆弧(由绳索闭合)或饼图(通过圆心闭合)的区域重叠。 我已经找到了这个答案:Intersection of rectangle and circl
我有一个在对象空间中由中心点和半径表示的球体。球体通过变换矩阵变换到世界空间,变换矩阵可能包括缩放、旋转和平移。我需要为世界空间中的球体构建一个轴对齐的边界框,但我不知道该怎么做。 这是我目前的方法,
我希望计算应用了变换矩阵(旋转、缩放、平移等)的 2D 椭圆的轴对齐边界框 (AABB) 类似于此解决方案的内容:Calculating an AABB for a transformed spher
您好,我是 C++ SFML 的新手。我应该绘制一些矩形并在旋转时渲染它们的 AABB,我想检测为它们设置的尺寸是否与另一个旋转的 AABB 矩形相交。这是我用来检测它们的方法。如果它们在旋转,以这种
我需要一个由轴对齐边界框 (AABB) 填充的世界组成的引擎。将执行连续循环,执行以下操作: for box_a in world box_a = do_something(box_a)
我有一个问题,我需要将一个 AABB 分成许多小的 AABB。我需要在每个较小的 AABB 中找到最小值和最大值。 如果我们以这个长方体为例,我们可以看到它被分成了64个更小的长方体。我需要计算所有这
当我的 AABB 物理引擎解析交叉点时,它会找到穿透较小的轴,然后“推出”该轴上的实体。 考虑“向左跳跃”的例子: 如果 velocityX 大于 velocityY,AABB 会将实体推出 Y 轴,
因此,我目前正在通过尝试为我的游戏引擎制作一个简单的物理引擎来重新发明轮子(并学到很多东西)。我一直在网上搜索,试图(但未能)解决我当前的问题。关于这个主题有很多资源,但我发现的资源似乎都不适用于我的
我正在制作一个游戏,其中玩家是一个直立的圆柱体,世界是轴对齐的边界框。鉴于此,我如何检查圆柱体是否与盒子相交? 谢谢 最佳答案 这主要是一个二维问题。 对于每个 AABB,测试圆柱体的垂直尺寸是否与
旋转物体时,围绕腿的 AABB 不会随腿移动。相反,它们相对于物体停留在同一位置,只是简单地增加尺寸以将腿保持在 AABB 中,而不是随腿移动。这是由于这些 AABB 中的每一个都具有相同的位置,即主
更新 再次更改了碰撞代码并为AABB制作了一个组件,现在看来问题仅在于水平碰撞,它没有将物体推到它认为足够的位置但是与Y轴的代码相同所以它不应该成为一个问题。 (它确实检测到水平碰撞分辨率是问题) v
我正在学习PhysicsJS ,我尝试使用 union像这样: // Window bounds var rect1 = Physics.aabb(0, 100, 300, 200); var rec
我正在编写用于在 3D 空间中进行鼠标拾取的代码。到目前为止,我已经开设了 Ray 和 AABB 类(class)。我需要的是 Ray-AABB 相交的函数。我知道如何编写并使其工作,我的问题是哪个类
我在这里看到过这个话题,但它并没有真正帮助我解决问题:(使用 glLoadIdentity() 因为我正在使用 libqglviewer 并且由于一些奇怪的原因如果我使用 glLoadIdentity
我目前正在努力编写一个基于空间分割的系统(用于游戏),我需要能够测试一个圆是否完全包含一个正方形。 为了加分,我应该指出我的系统在 N 维中工作,所以如果你的算法通过循环遍历每个维度并做某事来工作,请
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 5 年前。 Improve this qu
我认为扫过意味着确定物体是否会在某个时刻发生碰撞,而不仅仅是它们当前是否正在碰撞,但如果我错了请告诉我。 我有带边界框的对象,它们在轴上对齐。物体的盒子可以有不同的大小,但它们总是矩形的。 我已经尝试
我是一名优秀的程序员,十分优秀!