问题标签 [physics]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
9 回答
1572 浏览

physics - 弹跳球不符合能量守恒定律

我目前正忙于为我的 Win32 API 和 c++ 编程课程编写一个小球物理引擎。我已经完成了 GDI backbuffer 渲染器和整个 GUI(还有一些需要调整的东西),但我非常接近完成。最后唯一的大障碍是球对球的碰撞(但我可以自己解决这个问题),但其中最大的问题是球的弹跳。发生了什么是我扔了一个球,它真的掉了,但是一旦它弹起来,它会弹得比我释放它的点高???有趣的是,它只有在低于一定高度时才会发生。这部分是物理代码:(如果您需要更多代码或解释,请询问,但如果你们能看看我的代码,我将不胜感激。)

0 投票
6 回答
3299 浏览

c++ - 如何从一条线上反弹一个点?

我正在编写一个 Pong 游戏,但遇到了一个问题。

我试图弄清楚如何从一条线上反弹一个点。

我能想到的最好的方法是

  • 计算球的当前和未来位置。
    • 线段:{Ball.location, Ball.location + Ball.direction}(Ball.location 和 Ball.direction 使用自定义矢量/坐标类)
  • 计算生成的线段是否与任何墙壁或桨相交。
    • ???还不知道该怎么做(将在单独的问题中提问)
  • 在找到的第一个路口
    • 将球弹离底线
      • 创建一个三角形
        • a = 球的当前位置
        • b = 线的交点。
        • c = 最接近球在线上当前位置的点。
      • 找出球击中线的角度
        • 角度 = cos(距离(b,c)/距离(a,b))
      • 找到旋转球方向的角度
        • (90-角度)*2
      • 旋转球的方向并将其移动到新位置
        • 暂时忽略到达线的距离,不需要完全在线
  • 否则,如果没有交叉点
    • 将球移动到它的新位置。

这是一种可以接受的方法还是我错过了什么?

0 投票
4 回答
744 浏览

java - 3D相机缩放并在java中跟随物理?

我正在努力做到这一点,以便无论两个对象相距多远,它们都将保留在屏幕上。我正在使用 JOGL,但这并不重要,因为我只需要数学方面的帮助。这是我到目前为止所拥有的:

我需要什么数学才能正确放大和缩小 Z?

0 投票
3 回答
3511 浏览

objective-c - Ball to Ball Collision - 在碰撞时获得显着的速度

我在 Objective-C 中实现了问题“ Ball to Ball Collision - Detection and Handling ”中的代码。然而,每当球以一定角度碰撞时,它们的速度就会急剧增加。所有的向量数学都是使用cocos2d-iphone完成的,头文件为 CGPointExtension.h。这种不希望的加速的原因是什么?

下面是一个提高速度的例子:

输入:
质量 == 12.56637
速度.x == 1.73199439 速度.y
== -10.5695238

ball.mass == 12.56637
ball.velocity.x == 6.04341078
ball.velocity.y == 14.2686739

输出:
质量 == 12.56637
速度.x == 110.004326 速度.y
== -10.5695238

ball.mass == 12.56637
ball.velocity.x == -102.22892
ball.velocity.y == -72.4030228

0 投票
3 回答
390 浏览

database - 物理硬件的数据库设计

我必须为独特的环境开发一个数据库。我没有数据库设计经验,可以利用每个人的智慧。

我的小组正在为一块物理硬件和一个数据采集系统设计一个数据库。我们需要一个系统来存储所有硬件配置参数,并在用户更改这些参数时跟踪它们的变化。

设置:

  • 我们有近 200 个检测器和大约 40 个与每个检测器相关的参数。在这 40 个参数中,我们预计只有少数会在实验过程中发生变化。大多数与单个检测器相关的参数都是静态的。
  • 我们在定时运行中收集此实验的数据。在这些运行期间,加载到硬件中的参数不得更改,尽管我们应该能够随时编辑数据库以准备下一次运行。目前的计划:

    • 数据库将提供当前参数与上次运行期间使用的参数之间的差异。
    • 在新的运行开始时,最新的数据库更改被加载到硬件中。
    • 用于即将运行的设置必须标有运行编号和当前日期和时间。这是必不可少的。我需要实验设置的运行历史。
  • 将有几个不同的客户端读取和写入数据库。尽管对数据库的更改并不频繁,但我不能保证这些更改不会同时发生。

  • 必须是健壮且不可损坏的。实验系统的配置取决于硬件。数据库的任何故障都会阻止数据采集,而且我们的时间很昂贵。数据库备份?

我目前的计划是使用 sqlite 数据库来实现上述要求,尽管我不确定它是否可以支持我的所有要求。还有其他我应该研究的技术吗?有没有人做过类似的事情?我愿意学习任何技术,只要它成熟。

欢迎提示和建议。

谢谢,

肖恩


更新 1

数据库访问

三个轻量级应用程序可以写入和读取数据库,一个应用程序只能读取。

具有写访问权限的应用程序负责设置硬件参数的非重叠子集。具体来说,我们有一个应用程序(其中可能有多个副本)设置高电压,一个应用程序设置其余硬件参数,这些参数可能在实验期间发生变化,一个 GUI 设置其余参数它们几乎是静态的,仅对正确重建数据至关重要。

只读访问的程序是我们的数据分析软件。它需要访问数据库中几乎所有的参数,才能将传入的数据正确格式化为我们可以正确分析的内容。与数据库的连接数应大于 10。

备份

我们实验室的另一个设置每次运行都会转储一个 xml 文件。尽管我认为 xml 不合适,但我计划每次运行都备份系统,以防万一。

0 投票
4 回答
15213 浏览

java - 2D 游戏中的跳跃数学

我在 J2ME 中工作,我的游戏循环执行以下操作:

所以它只是一个基本的游戏循环,该doLogic()函数调用场景中角色的所有逻辑函数并render(g, diff)调用场景animateChar中每个角色的animChar函数,然后,Character类中的函数将屏幕中的所有内容设置为:

这确保了我必须根据机器从一个周期到另一个周期所花费的时间来移动所有东西(记住它是一部手机,而不是游戏装备)。我确信这不是实现这种行为的最有效方法,所以我完全愿意在评论中批评我的编程技巧,但我的问题是:当我让我的角色跳跃时,我所做的就是把他的dy为负值,例如 -200,我将布尔跳转设置为 true,这使角色上升,然后我调用了这个函数checkGravity(),以确保上升的所有内容都必须下降,checkGravity同时检查角色是否在平台上,所以为了您的时间,我将把它删掉一点:

所以,问题是,这个函数会更新dy而不管diff,使角色在慢速机器中像超人一样飞行,我不知道如何实现diff因子,这样当一个角色跳跃时,他的速度减慢与游戏速度成正比的方式。谁能帮我解决这个问题?或者给我指点如何在 J2ME 中以正确的方式进行 2D 跳转

0 投票
7 回答
1362 浏览

comparison - PhysX 通过 GPU 获得巨大性能?

我最近比较了一些用于模拟和游戏开发的物理引擎。有些是免费的,有些是开源的,有些是商业的(1 甚至是非常商业的 $$$$)。Havok、Ode、Newton(又名 oxNewton)、Bullet、PhysX 和一些 3D 引擎中的“原始”内置物理。

在某个阶段,我得出了结论或问题:如果我可以利用 GPU 处理带来的惊人性能(如果我需要),我为什么要使用除 NVidia PhysX 之外的任何东西?使用未来的 NVidia 卡,我可以期待独立于常规 CPU 生成步骤的进一步改进。SDK 是免费的,它也可用于 Linux。当然,这有点锁定供应商,而且它不是开源的。

你的观点或经验是什么?如果您现在就开始开发,您是否同意上述观点?

干杯

0 投票
7 回答
2392 浏览

performance - 改变圆周运动的速度

我正在寻找一种方法来平滑地增加或减少圆周运动的速度。

使用圆的参数方程,我可以随时间沿圆移动对象:

这种方法的问题是我不能简单speed = speed + 1地加速物体,因为它会导致不平稳的运动。这是有道理的,因为每帧都会根据绝对值而不是相对于对象的先前位置重新计算 x 和 y 值。

另一种方法可能是使用表示对象速度的向量,然后对向量应用圆周运动:

这种方法的问题是,如果我改变速度,那么半径会增大或缩小。这是有道理的,因为运动是相对于当前位置的,所以如果我改变速度,时间基本上会被跳过。

我能想到的一种可能可行的实现是使用从对象指向圆心的向量。然后我可以通过使用垂直向量计算圆在对象位置的切线,对其进行归一化并按速度缩放。我还没有实现这个,因为这样的问题似乎有点矫枉过正,所以如果存在更简单的解决方案,请告诉我。谢谢!

0 投票
3 回答
492 浏览

physics - 3d 图形引擎的这个属性的名称和最常见的实现是什么?

我想说“不受限制的参考框架”或“空间相关的独立子环境”,但我认为这些都不对。

想象一下,两艘长长的圆柱形宇宙飞船在同一方向的水平面上并排漂浮。每艘船都有自己的房间和走廊,玩家可以在第一人称环境中自由移动。透过窗户看,每艘船的船员都可以微笑着向另一艘船的船员挥手。

第一艘船发射推进器并在第二艘船下方移动。两艘船靠岸,气闸打开。第一艘船的船员现在需要爬上第二艘船。气闸关闭,船只分离。

第一艘船再次移动,只是这次它停靠在第二艘船的顶部。气闸打开,这一次第一艘船的船员需要向下移动到第二艘船。

每艘船都是一个独立的 3d 环境,它与更大的全球环境中的其他独立环境交互。

我看到了两种可能的实现。

1)“推动者”。每艘船都对其内部的每个物体施加力。当第一艘船相对于第二艘船移动时,该运动被转化为船员以改变他们的全球空间位置。这似乎在计算上很昂贵......

2)“骗子”。每艘飞船的窗口都显示来自虚拟全局空间的模拟输出,但飞船及其内容并没有真正相对于彼此移动。船之间的连接是一个动态的门户,它以正确的方向连接两个船“房间”。

该属性的名称是什么?我在哪里可以找到真实 3d 引擎中的示例?

0 投票
5 回答
5867 浏览

math - 轨迹-数学,c#

我正在尝试在两点之间绘制轨迹路径。我只知道有问题的两点以及它们之间的距离。我希望能够计算的是到达终点所需的速度和角度。

我还希望能够考虑一些重力和风,以便路径/轨迹不那么“完美”。它用于电脑游戏。

谢谢 F。