如何测试两个移动的二维边界框的碰撞?

2023-12-28

OBB 具有位置(x,y)、速度(x,y)和方向(矩阵)。在定期更新的情况下,OBB 必须相互碰撞,返回被认为成功的移动部分。

我查看了 GPWiki 上的多边形测试 -http://gpwiki.org/index.php/Polygon_Collision http://gpwiki.org/index.php/Polygon_Collision- 但它不考虑移动对象或完全位于 OBB 内的对象。

《实时碰撞检测》一书在第 4 章:边界体积中介绍了 3D OBB,但 3 维测试方法明显比 2D 更复杂。


为了测试两个定向边界框之间的碰撞检测,我将使用分离轴定理(SAT http://www.metanetsoftware.com/technique/tutorialA.html)。事实上,SAT 可以用于任意 2 个凸形状之间的碰撞检测。该技术理解起来并不太复杂,并且具有合理的性能。 该定理可以很容易地扩展到 3D。

EDIT:

该算法尝试确定是否可以在两个对象之间拟合一个平面。如果存在这样的平面,则对象是分离的,并且不能相交。

要确定物体是否分离,只需将物体投影到normal http://en.wikipedia.org/wiki/Surface_normal平面,并比较间隔并查看它们是否重叠。

因此,显然有无数个平面可以容纳在两个分离的物体之间。但事实证明,你只需要测试少数几架飞机即可。

可以看出,对于盒子,要测试的分离平面是法线等于两个盒子的轴的平面。因此对于 2 个盒子,总共只需要测试 4 个分离平面。在 4 个平面中,一旦找到分隔盒子的分离平面,那么你就知道盒子不能相交,并且返回一个无碰撞标志。

如果 4 个平面无法将盒子分开,那么盒子一定是相交的,此时就会发生碰撞。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何测试两个移动的二维边界框的碰撞? 的相关文章

  • 与矩形以外的形状碰撞..?

    我已经习惯了仅使用矩形进行碰撞检测 所以现在有点困惑 我正在处理类似钻石的形状 在过去的几个小时里 一直在试图找出如何检查碰撞 我尝试检查第一个对象的四个点是否在第二个对象的点内 但这只是形成一个盒子 我认为 我觉得自己在这方面遇到困难的原
  • 直线与 AABB 矩形相交?

    最好不使用任何类型的循环 因为这将在游戏中使用 我希望将一条线与任意大小的矩形相交 但我也希望返回交点 有可能 我已经做了一些谷歌搜索 但仍然没有解决 该线使用 x1 y1 x2 y2 定义 矩形也有这两点 我建议简单地对构成矩形的每个线段
  • JavaScript 碰撞检测系统不会忽略被阻止的碰撞

    我在使用迷你游戏开发过程中遇到问题EaselJS我的碰撞检测系统 我需要有人的帮助 当英雄 圆形位图 碰撞一个对象并且第一个对象后面有其他对象时 英雄会与两个对象碰撞 即使第二次碰撞被阻止 也会出现此问题 这是一个图像解释 问题的原因非常简
  • IOS SpriteKit 碰撞检测:重置对象的位置

    我正在研究碰撞检测 希望当 Object1 向下移动屏幕并最终击中 Object2 时 它会触发 didBeginContact 方法 进而触发 Object1 上的 ResetPosition 这将使 Object1 返回屏幕顶部 我使用
  • 简单的拖动物理原理,向左或向右移动时表现不同[重复]

    这个问题在这里已经有答案了 我的代码对于负速度的表现与对于正速度的表现不同 我正在尝试实现平台物理 玩家在 X 方向上有速度 当用户分别按下 A 或 D 时速度会增加或减少 或者当玩家与墙壁碰撞时设置为 0 为了模拟与地面的摩擦力 玩家的
  • 边界椭圆

    我被分配了一个图形模块的作业 其中一部分是计算一组任意形状的最小外接椭圆 椭圆不必与轴对齐 这是使用 AWT 形状在 java euch 中工作的 因此我可以使用形状提供的所有工具来检查对象的包含 相交 您正在寻找椭圆体最小包围体积 htt
  • 检测 iPhone 中两个移动按钮的碰撞

    我正在使用下面的函数来移动屏幕上的两个按钮 void animateWithDuration NSTimeInterval duration delay NSTimeInterval delay options UIViewAnimatio
  • 检测pygame中文本框和圆圈之间的碰撞

    我正在尝试用 python 创建一个游戏 其中可以在屏幕上拖动文本框 但是每当它触及周围圆圈的边界时 我希望循环重新开始 但使用不同的文本 通过存储所有文本 列表中的字符串 但我还没有那么远 这就是我已经走了多远 import pygame
  • Java/libGDX - 如何检查多边形与矩形或圆形的碰撞

    我是 libGDX 的新手 据我所知 Intersector 类具有矩形 矩形 圆 圆 圆 矩形和多边形 多边形的重叠方法 但由于某种原因 它似乎没有任何方法检查多边形 矩形或多边形 圆形 是否有推荐的方法来检查多边形和矩形 圆形之间的碰撞
  • HTML5 画布中的碰撞检测。也优化了

    我正在制作一个平台游戏 但我的碰撞检测有问题 我创建了一个在屏幕 地图上绘制图块的函数 在该函数中是我的碰撞检测 当仅绘制一个图块时它工作正常 但是当我用三个图块创建 楼梯 时 第一个图块无法正常工作 玩家只是被 推 到图块上 侧面检测不起
  • JavaScript 游戏中的碰撞检测?

    我的地图数组 map 0 0 0 0 0 0 0 map 1 0 1 0 1 0 1 map 2 0 0 0 0 0 0 map 3 1 0 1 0 1 0 map 4 0 0 0 0 0 0 map 5 0 1 0 1 0 1 1 跨栏
  • XNA C# 2D 平台游戏

    我正在尝试在 XNA 中制作 弄清楚如何 一个 2d 平台游戏 我知道如何创建平铺网格以及如何执行碰撞检测 我对玩家的 9 个边界图块执行碰撞检测 但我想知道是否有更好的方法来执行碰撞检测 我读过 时空幻境 不使用图块 而是使用拼凑的图像或
  • 多次检测到碰撞。

    我正在制作一个飞扬的小鸟游戏 当我的鸟经过每堵墙 收集一枚硬币时 我似乎遇到了问题 有2个问题 1 收集后游戏会滞后一毫秒 2 我的鸟似乎每次都会发生 2 次甚至 3 次碰撞 得分为 2 或 3 我无法理解这一点 我的鸟是一个 5 纹理动画
  • 计算三角形内的格点

    我有一个大三角形的点 我们称之为 a b c a x y 等 现在我想统计这个三角形围成的区域内有多少个积分点 所以我首先看一下皮克定理 我考虑的第二种方法是生成一个以三角形的最大值 最小值为界的点列表 然后检查每个点是否位于三角形内部 我
  • 当两个图像碰撞时如何生成片尾画面?

    当两个图像碰撞时如何生成片尾画面 我正在制作一个带有火柴人的应用程序 你可以使用非常灵敏的加速度计来移动 因此 如果它达到这些峰值 UIImages 它将生成最终屏幕 如何让应用程序检测到这种碰撞 然后生成结束屏幕 我确信您知道这两个图像的
  • 继承SFML中的Transformable和Drawable

    我试图继承 SFML 中的 Transformable 和 Drawable 以使我的对象 嗯 可变形和可绘制 我正在制作一个简单的突破游戏 但也许我的做法是错误的 这是我的代码 include
  • Java 2D 碰撞?

    大家好 我正在制作一个 2D java 游戏 我正在尝试找出如何制作一个好的碰撞代码 我目前正在使用以下代码 public void checkCollision Rectangle player rectangle new Rectang
  • 使用 Pygame 检测碰撞点

    我正在用 Pygame 制作游戏 对于这个游戏 我不仅需要能够检测到两个矩形发生碰撞 还需要能够检测到它们之间的碰撞点 我查看了文档 但似乎找不到任何答案 这样的事情可能吗 您可以使用Rect clip https www pygame o
  • 检测两个图像之间的像素碰撞/重叠

    我有两个 UIImageView 其中包含具有某些透明区域的图像 有什么方法可以检查两个图像之间的非透明区域是否发生碰撞 Thanks 更新 这就是我到目前为止所拥有的 不幸的是它仍然不起作用 但我不明白为什么 if CGRectInter
  • 快速移动的球与鼠标控制的球拍的碰撞检测问题

    在统一中 我有一个应该击球的球拍 并且球拍直接由鼠标控制 即鼠标使用鼠标轴移动球棒并使用 translate 函数移动球拍 我预计 Unity3d 的物理特性不会直接通过鼠标正确地转换球拍的运动并相应地影响球 我必须编写一些自定义的内容 结

随机推荐

  • ReportViewer (SSRS) 与 VB.NET 出现错误

    我想嵌入一个带有 ReportViewer 对象的 net 网页 我创建了一个测试项目并具有
  • 如何在生产中的 Webpack 项目中使用 CDN 中的库

    我想用react min js来自生产中的 CDN 例如https unpkg com 电子邮件受保护 dist react min js https unpkg com react 15 3 1 dist react min js 让 W
  • 在当前控制台中运行进程

    我正在为 Windows 编写一个基本 shell 我想知道是否有任何方法可以运行子进程 Process process 以便它使用当前的控制台窗口 我的意思是我这样做not想要重定向输入 输出 我希望该进程从当前控制台获取输入并将输出直接
  • R 不接受 xpath 查询

    您好 我正在使用 R 中的 XML 包来抓取 html 页面 感兴趣的页面是http www ncbi nlm nih gov Protein 225903367 report fasta http www ncbi nlm nih gov
  • 如何使用FreeArc来高度压缩Inno Setup中的应用程序数据? [复制]

    这个问题在这里已经有答案了 需要使我的应用程序尽可能小 至少是原始大小的一半 FreeArc 提供了很好的压缩功能 但我如何在 Inno Setup 中使用它 该答案已被取代Inno Setup 如何在解压页面添加取消按钮 https st
  • 如何查询 Cloud Firestore 中不存在的文档键

    假设我有一个带有一些可选属性的数据模型 例如 这可以是具有 名字 姓氏 和可选的 网站 属性的用户对象 在 Cloud Firestore 中 只有具有已知网站的用户文档才会设置 网站 属性 对于所有其他用户文档 此属性将不存在 我现在的问
  • 如何测试变量是否已设置?

    在PHP中 有一个isset功能 那么Java呢 我想我可以用 null对于对象 但是像这样的值类型呢 int Java 的编译器不允许您定义变量并在为其赋值之前使用它们 因此该问题不会以与 php 中相同的形式存在 EDIT 如果在您的情
  • 重新导入具有相同名称的不同Python模块

    我有一个 python 项目 需要能够运行外部脚本 这些脚本动态导入到具有多个模块的目录结构中 现在 由于这些脚本是独立编写的并且彼此不知道 因此它们通常使用相同的模块名称 这使得我在逐个导入它们时遇到问题 例如 这是我的目录结构 main
  • F# 惰性求值与非惰性求值

    我刚刚开始学习 F 所以如果这是基础的 请友善 我读过标记为惰性的函数仅计算一次 然后缓存 例如 let lazyFunc lazy 1 1 let theValue Lazy force lazyFunc 与每次调用时实际运行的此版本相比
  • 区分 ASP.NET MVC4 中的空参数和缺失参数

    我正在写一个API 我想允许 PUT 方法来更新资源 下面是代表资源的示例模型对象 var resourceToUpdate new TestResourceModel Id 5 Name testName Description desc
  • 根据当前时间戳生成 MySQL 每小时细分

    恐怕这可能是一个非常令人尴尬的简单问题 但此时我的思绪完全陷入了困境 我有一个表 存储不同人进行的活动的数量以及活动发生的时间 我想创建一个接受人员姓名作为参数的报告 并显示从当前时间戳开始的过去 24 小时内该人员每小时的活动数 now
  • 在 prolog 中表示线性函数

    我想编写复合项来表示 Y a b X 形式的总体中不同变量之间的线性关系 例如 对于由汽车组成的总体 燃料消耗 2 3 距离 我在声明该关系与人口 群体 有关时遇到问题 同时声明每个变量的值在对象内链接 即汽车 A 的燃油消耗是 2 3 汽
  • PySimpleGui:如何在文本框中输入文本?

    我正在通过参考教程来学习 PySimpleGui Link 1 https pysimplegui readthedocs io en latest tutorial and Link 2 https pysimplegui readthe
  • collectionView cellForItemAt 未被调用

    我有一个UITableView其中每个原型电池都有一个UICollectionView在里面 该集合视图应该是图像网格 我对 Swift 很陌生 已经在 google 上搜索了几个小时 并阅读了大量 StackOverflow 文章 但似乎
  • 枚举拳击和平等

    为什么这会返回 False public enum Directions Up Down Left Right static void Main string args bool matches IsOneOf Directions Rig
  • 如何使用 jQuery 解开所有父项?

    p span a href link a span p 我该如何打开一切 只留下 a href link a edit 抱歉 我应该提供更多信息 基本上 我试图瞄准所有a那是唯一的孩子span的周围是p标签 我希望以下内容能够解决问题 但它
  • BaseX REST API:设置自定义 HTTP 响应标头

    我想将以下 HTTP 标头包含到所有响应中BaseX REST API http docs basex org wiki REST Access Control Allow Origin 这可能吗 BaseX 在底层使用 Jetty 您可以
  • 如何向 java.sql.date 添加天数?

    这是我的程序 我尝试过 java sql Date logicalDate Calendar c Calendar getInstance c setTime logicalDate c add Calendar DATE 1 下面的行显示
  • Cakephp - 使用身份验证时在控制器中获取用户 ID

    这似乎是一个两步的过程 u this gt Auth gt user uid u User id 用户登录后是否会在某处设置变量 您可以使用 uid this gt Auth gt user id 查看api文档 https api cak
  • 如何测试两个移动的二维边界框的碰撞?

    OBB 具有位置 x y 速度 x y 和方向 矩阵 在定期更新的情况下 OBB 必须相互碰撞 返回被认为成功的移动部分 我查看了 GPWiki 上的多边形测试 http gpwiki org index php Polygon Colli