Articles of 圈

如何解决碰撞的两个圆的重叠

我有两个圈子,其中一个圈子是静态的,另一个圈子是移动的。 我有一个方法来检查两个圆圈是否碰撞。 如何使两个圆圈在碰撞时不重叠? public void UpdateGame() { //keyboard input and moving the circle here if(CollisionDetection(dynamicCircle,staticCircle) { ResolveOverlap(dynamicCircle,staticCircle); } } public class CircleBody { public Vector2 position {get;set;} // top left corner public float CenterX; public float CenterY; public int Width { get; set; } public int Height { get; set; } } public bool CollisionDetection(CircleBody […]

构建HTML5游戏书时,如何在开发游戏时计算碰撞

计算两个圆圈(气泡)之间的碰撞时,我不明白作者login。 这是计算碰撞部分。 作者写道: 被击发的气泡遵循由等式定义的一组坐标: px = ex + tdx py = ey + tdy 其中px和py是气泡中心点轨迹上的点。 px和py的计算发生在jQuery的animation方法中,并且是沿线移动点的标准方程。 接下来,我们将在这条线的最近点处计算t到我们正在检查的泡泡的中心: var t = dx * distToBubble.x + dy * distToBubble.y; 我不明白这是什么,为什么它按以下公式计算: var t = dx * distToBubble.x + dy * distToBubble.y; ?

对象轨道2D圈java

我正在使用这个代码来创建一个围绕着一个圆圈的正方形。 当我使用它但是,矩形(); 离圆周很远,我想把它靠近一点。 所有的variables都是浮动的。 YPos和XPos是圆圈起点的x和y。 charx = XPos[0] + cos(angle)*Sizes[0]; chary = YPos[0] + sin(angle)*Sizes[0]; angle += 0.1; fill(255,255,255); rect(charx, chary, 10,10);} 任何想法我应该改变? 这可能是非常简单的东西,但是我对java很陌生。 对不起,如果这是一个重复的问题。

多边形圆碰撞algorithm不起作用

编辑:更新的代码和video 我一直在研究我的碰撞检测系统的最后一个部分 – 多边形 – 圆形碰撞方法。 我几乎在那里,但有一些小问题,似乎popup与它。 我将解释我所看到的一些事情,但是看下面这个简短的video可能更容易: https://1drv.ms/v/s!AjUDP95TjAMqje8AVA0LpPfeszVYoA 有三件事我看到: 当坡度下降的时候有一点颠簸(我猜我只需要平滑一点运动调整 在绕过某些角落时,调整距离得到错误计算,结果是: 一点多余的距离 大量的多余的距离 下面是我的代码的主要组成部分,很高兴更新post,并添加任何其他相关的代码块,使需要。 任何援助与此将不胜感激。 谢谢! 物理世界更新方法: IEnumerable<PhysicsFixtureBase> results = this.physicsTree.Query(fixture); foreach (PhysicsFixtureBase otherFixture in results) { Vector3 adjustment = Vector3.Zero; if (fixture.Body != otherFixture.Body && fixture.Intersects(otherFixture, out adjustment)) { this.OnContact(fixture, otherFixture); body.SetVelocity(Vector3.Zero); body.MovePosition3D(adjustment); } } 主要交叉点方法: public static bool Intersects(PhysicsCircleFixture circle, PhysicsPolygonFixture otherPolygon, […]

确定矩形圆碰撞点

目前我正在开发2D游戏引擎。 当我们把速度加到它的位置上时,我坚持确定一个与圆相碰的矩形的位置。 矩形只有x轴速度。 在图片矩形是相同的。 左边矩形x,y,宽度和高度值是已知的。 第二个矩形应该是下一个位置。 圆半径,x和y值也是已知的。 (x和y值是对象的左上角位置)。 我需要find矩形的第二个位置。 编辑:我可以完美地检测到碰撞。 但是我需要新的位置。

找出一个给定中心,半径和方向vector的椭圆上的点?

我有一个vector(白线),一个椭圆(绿线)的半长轴和半短轴的中心和半径。 我需要find白线与绿色相交的地方。 我试图用Atan2 , Sin和Cos来解决这个问题,但是这并不奏效(蓝线)。 它在平行于一个轴的情况下工作,但没有其他方式,我有一种感觉,这是因为我正在尝试在水平和垂直半径不同的椭圆上进行计算。 Vector2 delta = (screenPos – canvasCentre).normalized; float angle = Mathf.Atan2(delta.y, delta.x); Vector2 position = canvasCentre + new Vector2( Mathf.Cos(angle) * radius.x, Mathf.Sin(angle) * radius.y);

恢复到最近的不相交位置

首先,让我开始说: 请原谅,如果这个问题已经被问到。 我试图search,但没有find任何解决scheme。 (这可能是由于我缺乏条款)。 我有两个r半径, p(x,y)位置和v(x,y)速度的圆。 如果第一个圆形(蓝色)与第二个圆形(红色)相交,则需要一个计算位置p3的公式,从而使其尽可能靠近红色圆圈而不相交。 有任何想法吗? Vector2 c1 = new Vector2((p1.X + r1), (p1.Y + r1)); Vector2 c2 = new Vector2((p2.X + r2), (p2.Y + r2)); bool intersects = ((Vector2.Distance(c1, c2)) < (r1 + r2));

在Pygame中循环太慢

我使用Pygame for Python 2,我有以下代码: self.radius = 100 self.light = pygame.Surface((2*self.radius, 2*self.radius), pygame.SRCALPHA) self.light.fill((0, 0, 0, 0)) pygame.draw.circle(self.light, (255, 255, 255), (self.radius, self.radius), self.radius) alphas = pygame.surfarray.pixels_alpha(self.light) for x, col in enumerate(alphas): for y, pixel in enumerate(col): pixel = 255 – f.distance(pygame.Rect(x, y, 1, 1), pygame.Rect(self.radius, self.radius, 1, 1)) 基本上这个代码创建一个新的表面,使其不透明,以便它不干扰背景,在其上绘制一个圆,然后使两个嵌套循环遍历所有像素。 问题是,这些太慢了。 我怎样才能改善他们的performance?

GJKalgorithm在圆形和多边形的情况下?

我想知道是否可以修改GJK,这样我就可以用它来检测圆与n点多边形之间的碰撞。 我之前实现了多边形和多边形,而且我尝试修改支持函数(以获得圆的最远点),但显然这导致了无限循环。 这可能吗? 我需要改变支持function以外的其他东西吗? (因为我没有看到)

2d圈出不同的ARC碰撞检测

检测2个圆或圆与线之间的碰撞的方法。 使用三角 但是现在我能够检测到圆弧的哪一部分正在击中,例如我把我的圆圈分成了四个不同大小的圆弧。 我想知道这个圈子的哪个弧是bean命中的。 1,2,3或4查看图片: 什么是最好的碰撞检测algorithm呢? 或者它怎么叫?