56得票9回答
大量圆形的碰撞检测

什么是检测大量圆形碰撞的最佳方法?检测两个圆之间的碰撞很容易,但如果我们检查每种组合,则时间复杂度为O(n^2),这绝对不是最优解。 我们可以假设圆形对象具有以下属性: - 坐标 - 半径 - 速度 - 方向 速度恒定,但方向可能会改变。 我想出了两种解决方案,但可能还有更好的解决方案。...

52得票10回答
测试两条直线是否相交 - JavaScript 函数

我已经尝试搜索一个JavaScript函数,用于检测两条线是否相交。 该函数将获取每条线段的起点和终点的x,y值(我们称之为线A和线B)。 如果它们相交,则返回true,否则返回false。 如果答案使用向量对象,我也很满意。Function isIntersect (lineAp1x,...

47得票3回答
在Sprite Kit中进行碰撞的物理计算

我正在尝试使用Sprite Kit设置一些弹性碰撞。当多个对象靠近彼此休息时存在问题,就像我在Sprite Kit Physics Collision Issue中提出的问题。 我对碰撞发生的时间感到困惑。 我尝试在-didBeginContact:委托方法中将dynamic设置为NO,计...

47得票2回答
最佳算法用于对象之间的高效碰撞检测

我有些困惑,不是真正的困惑,只是不想做6个测试程序来看哪个算法最好。因此,我想向SO上的专家朋友们请教一下他们的经验。 场景是一个三维场景,与其中的对象相比可能有相当大的面积。场景中可能有成千上万个对象。对象的大小从十分之一单位到大约10个单位不等,但没有更大(或更小)的对象。对象往往会聚集...

39得票5回答
如何在Pygame中检测碰撞?

使用下面的类我已经创建了一份子弹列表和一个精灵列表。如何检测子弹是否与精灵相撞,然后删除该精灵及其相应的子弹?#Define the sprite class class Sprite: def __init__(self,x,y, name): self.x=x ...

35得票2回答
判断两个三角形是否相交

给定两组三维空间中的点((x1,y1,z1),(x2,y2,z2),(x3,y3,z3))和((p1,q1,r1),(p2,q2,r2),(p3,q3,r3)),它们各自形成一个三角形。你该如何判断这两个三角形是否相交? 其中一个明显的解决方法是找到每个三角形所在平面的方程。如果这些平面是平...

35得票13回答
如何优化我的基础物理模拟器?

我写了一个简单的物理模拟器,可以让我在屏幕上弹球。您可以点击和拖动来发射球,或者生成数百个球并观察它们彼此交互。 [链接到更大的版本] 这是一个有趣的小程序,如果可能的话,我想进一步发展它。我知道他们说过早的优化是万恶之源,但我开始遇到实际的性能障碍,我想知道是否有任何有经验的游戏/模拟...

35得票5回答
圆形与圆形的碰撞

我将开发一个2D球类游戏,在这个游戏中两个球(圆形)会发生碰撞。目前我遇到了如何确定碰撞点的问题(实际上是判断它们是否发生了x轴/ y轴上的碰撞)。我的想法是,当两个球的y坐标差大于x坐标差时,它们在y轴方向上相撞,否则它们在x轴方向上相撞。我的想法正确吗?我已经在我的游戏中实现了这个思路。通...

34得票4回答
当字典键发生哈希冲突时会发生什么?

我一生都在使用C++和Java编码,但在C#上,我感觉它完全是一种不同的动物。 在c#的Dictionary容器中发生哈希冲突的情况下,它会怎样处理?它甚至能够检测到冲突吗? 在SDL中类似容器发生冲突的情况下,有些会使键值部分链接数据到键值部分,例如链表,而有些则会尝试找到不同的哈希方法...

30得票5回答
寻找解决谜题的算法

我正在制作一个游戏,玩家必须在游戏板上从起点到终点找到路线。 正如您所看到的,这个游戏板包含了一堆红色圆形障碍物。为了赢得游戏,玩家必须移除最少数量的障碍物。所以我的问题是,如何通过程序找到需要移除的最小障碍物数量,以便打开路径?空闲路径指的是圆圈之间没有重叠和接触的空间。 所以我真正需要...