相关疑难解决方法(0)

如何修复碰撞响应中的圆和矩形重叠?

由于在数字世界中几乎不会发生真正的碰撞,因此我们总会遇到"碰撞"圆与矩形重叠的情况.

如何在不与重叠的矩形完美碰撞的情况下放回圆圈?

假设矩形停止(零速度)并且轴对齐.

我会用后验方法(二维)解决这个问题.

总之,我必须解决t的这个等式:

在此输入图像描述

哪里:

  • Ť 是一个回答问题的数字:碰撞发生了多少帧之前?

  • [R 是圆的半径.

  • (x,y) 是圆的中心

  • (vx,vy) 是它的速度.

  • 在)B(t)的 是返回圆和矩形碰撞的点的x和y坐标的函数(当圆圈处于时 (x  -  t*vx,y  -  t*vy) 位置,即处于与矩形完美碰撞的位置).

最近我解决了圆圈之间碰撞的类似问题,但现在我不知道函数A和B的定律.

java physics collision-detection collision game-physics

10
推荐指数
1
解决办法
1万
查看次数

确定球体上的纬线矩形和圆形是否重叠

假设我有以下内容:

  • 由最小和最大纬度和经度定义的区域(通常是"纬度 - 长度",但除了某些投影外,它实际上不是矩形).
  • 一个圆,由中心纬度/长度和半径定义

我该如何确定:

  1. 两个形状是否重叠?
  2. 圆圈是否完全包含在矩形内?

我正在寻找一个完整的公式/算法,而不是数学课程本身.

language-agnostic gis math geometry trigonometry

8
推荐指数
1
解决办法
3313
查看次数

如何从Physics.OverlapBox()获取碰撞数据?

我正在尝试寻找其他注册冲突的方法(除了OnCollisionEnter()和之外OnCollisionExit()).我目前正在使用Physics.OverlapBox(),但我需要有关碰撞的更多信息; 即,正常,点.

我可以使用Physics.BoxCast(),但问题是它移动一个给定距离的盒子,使用maxDistance = 0f将无法工作.

我需要一种检查碰撞类似的方法,Physics.OverlapBox()除了它还会返回有关转换中所有碰撞的信息.

任何帮助表示赞赏.谢谢.

c# collision-detection unity-game-engine

8
推荐指数
2
解决办法
1354
查看次数

OBB与圆之间的二维碰撞检测数学

我正在创建一个2D游戏,并希望测试OBB(Oriented Bounding Box)和Circle之间的碰撞.我不确定这样做的数学和代码.我正在用c ++和opengl创建游戏.

c++ graphics geometry collision-detection

5
推荐指数
1
解决办法
5263
查看次数

解决圆环碰撞

我正在编写扩展圆形-矩形碰撞检测(相交)以包括对碰撞的响应的软件。Circle-edge 和 circle-rectangle 是相当直接的。但是圈圈让我难住了。

例如,在离散事件模拟中,让两个圆圈相撞,一个红色一个绿色。我们可能会遇到以下情况:

两个圆相撞

在它们发生碰撞后,我们可以立即得到:

放大的圆圈碰撞

这里 RIP 和 GIP 是前一个时钟滴答时圆圈的位置。在当前时钟滴答上,在 RDP 和 GDP 检测到冲突。但是,当两个圆圈位于 RCP 和 GCP 时,时钟滴答之间会发生冲突。在时钟滴答时,红色圆圈向下移动 RVy,向右移动 RVx;绿色圆圈向下移动 GVy,向左移动 GVx。RVy 不等于 GVy;RVx 也不等于 GVx。

圆圆计算

当圆心之间的距离小于或等于圆的半径之和时,即发生碰撞,即在上图中,d <= ( Rr + Gr )。在 d < ( Rr + Gr ) 的碰撞中,我们需要在调整圆的速度分量之前将 DP 定位回 CP。在 d == ( Rr + Gr ) 的情况下,不需要重新定位,因为 DP 位于 CP 处。

这就是问题所在:我如何回到 CP。一些作者建议应用下图中由 p 给出的渗透率的二分之一。

渗透

对我来说,这是完全错误的。它假设两个圆的速度矢量相等,但在本例中并非如此。我认为渗透与计算有关,但如何躲避我。我确实知道这个问题可以改写为直角相似三角形的问题,我们想在其中解决 Gcdy 和 GCdx。

右相似三角形

碰撞本身将被建模为弹性的,并且惯性交换的数学已经到位。唯一的问题是在碰撞时放置圆圈的位置。

math geometry collision-detection

5
推荐指数
1
解决办法
3793
查看次数

精确检测正方形和圆形重叠的算法?

我正在实现(在C++中)一种方法来检测在2d平面上两个静态的轴对齐形状之间何时发生重叠.形状是正方形或圆形,因此有三种情况我需要考虑重叠:方形,圆形和圆形方形.

方形和圆形也很简单,但我很难在网上找到关于计算方形圆重叠的正确算法的任何可靠信息.

我知道我可以将方块嵌入圆圈内(反之亦然)作为一种粗略的方法,但我对于更精确地做到这一点的最干净的方法感兴趣?

在线研究表明这个问题有一个"正确"的答案,但尚不清楚答案究竟是什么.

c++ algorithm geometry collision-detection

5
推荐指数
1
解决办法
139
查看次数

如何确定圆与矩形的碰撞?

我已经找到了关于如何让它工作的好主意(很好),到目前为止我提出的每个解决方案都是丑陋或无法工作.我所拥有的是一个圆形的精灵,敌人.然后我有一个箭头形状的精灵.

当检查敌人中箭头的碰撞时,我会使用CGRectIntersect(rect1, rect2) 但是......圆圈不是矩形!碰撞很恶心.

所以我的问题是,如何检查圆形物体内的碰撞?我应该制作许多作品,还是有为此目的制作的东西?

iphone xcode objective-c cocos2d-iphone

4
推荐指数
1
解决办法
2680
查看次数

圆形和矩形之间的碰撞

我想检测圆形和矩形之间的碰撞,但不知道如何.

我知道如何使用毕达哥拉斯定理检测圆与圆之间的碰撞,这是:

(x2 - x1)^ 2 +(y2 - y1)^ 2 - (r2 + r1),但检测碰撞的算法是什么

在C或C++编程语言中的圆形和矩形之间.

c c++ math

2
推荐指数
1
解决办法
8400
查看次数

XNA/Monogame 检测圆形和矩形之间的碰撞不起作用

所以我有一个Circle结构体,非常简单,如下所示:

public struct Circle
{
    public Circle(int x, int y, int radius) : this()
    {
        Center = new Point(x, y);
        Radius = radius;
    }

    public Point Center { get; private set; }
    public int Radius { get; private set; }

}
Run Code Online (Sandbox Code Playgroud)

我有一个PhysicsEnity看起来像这样的课程:

public class PhysicsEntity
{

    public int Width { get; protected set; }
    public int Height { get; protected set; }
    public Vector2 Position { get;  set; }
    public Vector2 Velocity { get; set; } …
Run Code Online (Sandbox Code Playgroud)

c# xna collision-detection game-physics monogame

2
推荐指数
1
解决办法
1393
查看次数

使用 p5.js 屏蔽或剪切蒙版

我想在 P5.js 中使用一种形状(例如矩形)作为另一种形状(例如圆形或线条)的蒙版或剪切路径

我可以看到使用图像作为蒙版的解决方案,但不能看到形状。似乎mask()不是形状的函数:https : //p5js.org/reference/#/p5.Image/mask

clipping mask masking p5.js

1
推荐指数
1
解决办法
4345
查看次数