15得票6回答
开源物理引擎

我最近几周一直在使用 Open Dynamics Engine (ODE) 并且非常成功。它有一个非常简单的 API,在模拟方面至少看起来是真实的。(我有时会对我的碰撞关节参数产生疑问,但是无论如何。) 我唯一的抱怨是,有时它很慢。如果我简单地模拟1000个以上的相互作用体系,那么我的性能就...

15得票2回答
2D轨道物理学

我正在为一款游戏开发2D物理引擎。目前,我已经成功实现了重力和质量的计算,使用一种简单的迭代方法(我知道我最终需要升级);我可以手动推动物体并观察它们移动,一切都按照我的期望工作。 现在,我想提前在游戏世界中设置一个卫星,在一个简单的圆形轨道上绕行行星。为了做到这一点,我需要计算出给定行星质...

15得票3回答
需要关于圆形碰撞和旋转的帮助吗?- 游戏物理学

好的,我有一堆球: 我正在尝试弄清楚如何使这些圆: 根据它们接触的表面旋转 在处理多个接触对象时,修复碰撞穿透。 编辑: 这就是我所说的旋转 Ball 0 倾斜在 Ball 3 上时会逆时针旋转 Ball 5 倾斜在Ball 0 上时会顺时针旋转 虽然解决...

15得票2回答
KD树分割

我目前正在为一个物理引擎(业余项目)编写KDTree。 KDTree不包含点。 相反,它包含用于环境中不同对象的轴对齐边界框。 我的问题是如何在节点满时决定如何拆分KDTree节点。 我正在尝试两种方法: 方法1:始终在最大轴上将节点完全平分。 这有一个优点,即树的分布相当均匀。 很...

15得票3回答
将一个凹多边形分解为凸多边形

我正在使用一个游戏物理库 (Box2D),它仅支持凸多边形形状。但是,我希望级别构建者能够轻松指定凹多边形而不必担心这个问题。 那么,如何自动将凹多边形分解为凸形或三角形呢?速度显然很重要,但易于实现更为关键。这个分解过程将仅在游戏初始化时进行。 (我的语言是 Flash/ActionSc...

14得票5回答
如何为游戏创建“拦截导弹”?

我正在开发一个游戏,其中包含追踪导弹。目前它们只会朝向目标,导致所有的导弹一起跟随目标移动的结果看起来有些愚蠢。 我想创建一种更致命的导弹,它将瞄准目标“将要到达”的位置,但我现在遇到了一些困惑,不知道该如何做。 我猜我需要在未来的某个时间点上计算出我的目标将在哪里(无论如何是一个猜测),...

14得票2回答
用C++进行N体模拟

我正在尝试实现一个二维的n体模拟的OpenMP版本。但是有一个问题:我假设每个粒子的初始速度和加速度都为零。当这些粒子第一次聚集在一起时,它们会以高速分散开来,而不会再次聚集在一起。这似乎与牛顿定律不一致,对吗?有人能解释一下为什么会发生这种情况并告诉我如何修复错误吗?以下是我的代码的一部分:...

13得票1回答
从弧度转换为角度

我正在建立一个小型的物理引擎,但是在使用 atan 时无法将弧度值转换为角度值,因为我需要输出角度。 首先,我有一个 x 和 y 的值,并且我需要使用 atan 来找到一个角度,所以我将 y 除以 x ,如下所示:angleDivide = yN / xN; 然后,在将此值放入tan之前,我...

13得票5回答
轨道力学

有没有人有实现轨道力学的例子(最好是在XNA中)? 我目前使用的代码如下,但执行时感觉不太对劲。对象只是稍微向行星弯曲一下,无论我如何调整变量,都不能让它进入轨道,甚至是部分轨道。shot.Position += shot.Velocity; foreach (Sprite planet...

13得票2回答
我能否在一行上编写多个Raku类型的智能匹配?

我知道这样做是不起作用的,因为我已经尝试过: if $r ~~ BearingTrue || CompassAdj || CourseAdj { nextsame }; 但是 - 是否有一种简洁明了、易读的方法来在同一行上执行多个类型智能匹配,而不必扩展到给定/when或if/else结构?