问题标签 [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 投票
7 回答
1455 浏览

.net - F# 适合物理应用吗?

我讨厌物理,但我喜欢软件开发。感恩节后我回到学校时,在完成这件可怕的事情之前,我还要再上两个季度的物理课。我目前正在阅读有关 F# 度量单位功能的帖子,但我从未使用过 F# 之类的语言。是否适合编写应用程序,以便我可以在做我喜欢的事情的同时学习一些物理知识?

我对运动学、平面运动、牛顿定律、万有引力、功、能量、动量和冲量、系统粒子、旋转运动学和动力学、角动量、静态平衡、振荡运动、波动、声音、物理光学、静电学、高斯定律、电场和电势、电容、电阻、直流电路、磁场、安培定律和电感.

我对 F# 感兴趣的原因是该语言提供的度量单位功能。

0 投票
2 回答
1237 浏览

flash - Sandy 3D:使用物理创建房间

我想知道是否有人可以帮助我开始在 Sandy 3D 中创建房间。我知道我可以生成平面,但我不确定如何实现简单的物理(即玩家不能穿过墙壁)。有没有一种简单的方法可以做到这一点,或者我应该研究一下 WOW(Flash 的 3D 物理引擎)之类的东西?

谢谢,卡梅伦

0 投票
5 回答
1608 浏览

language-agnostic - 角动量传递方程

对于如何计算两个刚体之间的角动量传递,是否有人对可以相对容易地实现的方程有任何好的参考?

我一直在寻找这种东西一段时间,我还没有找到任何特别容易理解的问题解释。

确切地说,问题是这样产生的;两个刚体在一个无摩擦(好,几乎)的表面上运动;把它想象成空气曲棍球。两个刚体接触,然后移开。现在,不考虑角动量,方程相对简单;问题变成了,物体之间的角动量转移会发生什么?

例如,假设这两个物体没有任何角动量;他们没有旋转。当它们以斜角相互作用时(行进矢量与它们的质心线不对齐),显然它们的一定量的动量被转换为角动量(即它们每个都得到一定量的自旋),但是如何很多,这样的方程式是什么?

这可能可以通过使用多体刚性系统进行计算来解决,但我想要进行更优化的计算,所以我可以实时计算这些东西。是否有人对方程式有任何想法,或指向这些计算的开源实现以包含在项目中?准确地说,我需要这是一个相当优化的计算,因为需要在模拟的单个“滴答”中模拟交互的数量。

编辑:好的,看起来关于这个主题的准确信息并不多。而且我发现“程序员物理学”类型的书有点太……愚蠢到真正得到;我不想要算法的代码实现;我想弄清楚(或至少为我勾勒出)算法。只有这样,我才能根据我的需要适当地优化它。有人对此类主题有任何数学参考吗?

0 投票
9 回答
12153 浏览

physics - 2d 平台物理

那是一个长长的假期周末,所以我又遇到了编码错误并开始玩弄:

马里奥 http://gfilter.net/junk/tileengine.jpg

我写了一个基本的瓦片引擎,但以前从未尝试过,我真的很努力处理精灵碰撞检测和实现重力的真实物理。

对于任何其他游戏爱好作家,您能否指出一些关于解决此问题的最佳方法的演练?

更新:

我想我会分享一份进度报告:

http://www.youtube.com/watch?v=-RKNQ2UiiLY <-- 游戏实战

它仍然非常有问题,但碰撞检测大部分都在工作,我已经开始研究其他一些功能(例如碰撞块(注意错误)和与敌人互动)。

马里奥仍然像在月球上一样走路,我正在使用这些常数,有什么建议可以调整它们以获得更真实的感觉吗?

0 投票
9 回答
15297 浏览

language-agnostic - 如何将重力应用到我的弹跳球应用程序?

我编写了一个相当简单的 Java 应用程序,它允许您拖动鼠标,并根据您所做的鼠标拖动长度,它会朝那个方向射一个球,并在它移动时从墙壁上反弹。

这是一个快速的屏幕截图:
alt text http://img222.imageshack.us/img222/3179/ballbouncemf9.png

屏幕上的每个圆圈都是一个 Ball 对象。球的运动被分解为一个 x 和 y 向量;

这很好用。所有的球都从一堵墙反弹到另一堵墙。

但是,我已经决定我希望能够包括重力的影响。我知道物体以 9.8m/s 的速度向地球加速,但我不直接知道这应该如何转化为代码。我意识到 yVector 会受到影响,但我对此的实验并没有达到我想要的效果。

理想情况下,我希望能够为这个程序添加一些重力效果,并让球在落到“地面”之前反弹几次。

我怎样才能创建这种弹跳有弹性的重力效果?我必须如何在每一步操纵球的速度矢量?当它撞到“地面”时必须做什么,以便我可以让它再次弹起,但比上次短一些?

任何帮助都可以为我指明正确的方向。


谢谢大家的评论!它已经很好用了!

在我的 step() 中,我向我的 yVector 添加了一个重力常数,就像人们建议的那样,这是我的 checkCollision():

但是,球将继续在地板上滑动/滚动。我认为这是因为我只是在每次反弹时仅取其向量的百分比(90%),而且它永远不会真正为零。我是否应该添加一个检查,如果 xVector 变为某个绝对值,我应该将其更改为零?

0 投票
15 回答
196559 浏览

graphics - 球对球碰撞 - 检测和处理

在 Stack Overflow 社区的帮助下,我编写了一个非常基本但有趣的物理模拟器。

替代文字

您单击并拖动鼠标来发射一个球。它会反弹并最终停在“地板”上。

我要添加的下一个重要功能是球对球碰撞。球的运动被分解为 ax 和 y 速度矢量。我有重力(每一步 y 向量的小减少),我有摩擦(每次与墙壁碰撞时两个向量的小减少)。球以令人惊讶的逼真方式诚实地移动。

我想我的问题有两个部分:

  1. 检测球对球碰撞的最佳方法是什么?
    我是否只有一个 O(n^2) 循环遍历每个球并检查每个其他球以查看其半径是否重叠?
  2. 我用什么方程来处理球对球的碰撞?物理 101
    它如何影响两个球的速度 x/y 向量?两个球朝哪个方向飞去?我如何将其应用于每个球?

替代文字

处理“墙壁”的碰撞检测和由此产生的矢量变化很容易,但我看到球碰撞更复杂。对于墙壁,我只需要取适当的 x 或 y 向量的负值,然后它就会朝着正确的方向前进。对于球,我不认为是那样的。

一些快速澄清:为简单起见,我现在可以完全弹性碰撞,而且我所有的球现在都具有相同的质量,但我将来可能会改变它。


编辑:我发现有用的资源

带有向量的 2d Ball 物理:2-Dimensional Collisions without Trigonometry.pdf
2d Ball 碰撞检测示例:添加碰撞检测


成功!

我的球碰撞检测和响应工作得很好!

相关代码:

碰撞检测:

这将检查每个球之间的碰撞但跳过冗余检查(如果您必须检查球 1 是否与球 2 碰撞,那么您不需要检查球 2 是否与球 1 碰撞。此外,它会跳过检查与自身的碰撞)。

然后,在我的球类中,我有我的 colliding() 和 resolveCollision() 方法:

源代码:球对球对撞机的完整源代码。

如果有人对如何改进这个基本的物理模拟器有一些建议,请告诉我!我还没有补充的一件事是角动量,所以球会更真实地滚动。还有其他建议吗?发表评论!

0 投票
4 回答
2285 浏览

vector - 使用 epsilon 值来确定游戏中的球是否不动?

我有球在四处弹跳,每次它们碰撞时,它们的速度矢量都会因恢复系数而减小。

现在我的球的 CoR 是 .80 。因此,在多次反弹后,我的球“停止”滚动,因为它们的速度变得非常小。

在哪个阶段检查速度值是否足够小以简单地将其称为零是合适的(所以我没有球对它们的微速度做出反应的疯狂抖动)。我之前在一些论坛上读过,人们有时会使用一个 epsilon 常数,一些很小的数字并检查它。

我是否应该定义一个 epsilon 常量并执行以下操作:

每次我更新球的速度和位置?这是一般的做法吗?将它放在我的 x 和 y 的 Vector 类设置器中是否合理?或者当我计算速度时我应该在我的矢量类之外做它。

另外,如果我使用浮点数作为速度向量,那么合理的 epsilon 值是多少?

0 投票
2 回答
1803 浏览

linker - 64 位 Ubuntu 上的 PhysX 链接器问题

我在让我的项目与 64 位机器上的 PhysX 库链接时遇到问题。它编译得很好。我使用了与我的 32 位机器上完全相同的设置(除了一些调试标志),它们的链接非常好。这是构建输出:

g++ -L/usr/lib/PhysX/v2.8.1 -L/usr/lib -o"PhysXTest" ./main.o -lPhysXLoader -lglut

/usr/bin/ld:在搜索 -lPhysXLoader 时跳过不兼容的 /usr/lib/libPhysXLoader.so

/usr/bin/ld:在搜索 -lPhysXLoader 时跳过不兼容的 /usr/lib/gcc/x86_64-linux-gnu/4.2.3/../../../../lib/libPhysXLoader.so

usr/bin/ld:在搜索 -lPhysXLoader 时跳过不兼容的 /usr/lib/../lib/libPhysXLoader.so

/usr/bin/ld:在搜索 -lPhysXLoader 时跳过不兼容的 /usr/lib/gcc/x86_64-linux-gnu/4.2.3/../../../libPhysXLoader.so

/usr/bin/ld:在搜索 -lPhysXLoader 时跳过不兼容的 /usr/bin/../lib/libPhysXLoader.so

/usr/bin/ld:在搜索 -lPhysXLoader 时跳过不兼容的 /usr/lib64/libPhysXLoader.so

/usr/bin/ld:在搜索 -lPhysXLoader 时跳过不兼容的 /usr/lib/libPhysXLoader.so

/usr/bin/ld: 找不到 -lPhysXLoader

另外,如果有任何后果,我已经设置了指向 usr/lib 的符号链接。有谁知道发生了什么?如果您需要更多详细信息,请告诉我。与往常一样,提前致谢。

0 投票
1 回答
548 浏览

oop - PhysX NxActor 问题

据我所知,使用 PhysX API 获取 NxActor 的唯一方法是使用 createActor 方法从 NxScene 实例中获取。这真的让我很烦。我想保持我的代码干净,但我觉得别无选择,只能将这个场景从构造函数传递到构造函数,以便类可以生成和引用演员。我想,或者,我可以使场景全局化(eek!),但我不认为全局变量是一个好主意。我的一个想法是让我的类简单地存储一个 NxActorDesc(并让他们将它提供给场景以通过消息传递创建演员),但他们确实需要对 NxActor 的引用,以便他们可以将他们的转换与演员同步。

无论如何,我想看看其他人可能有什么见解。你认为我正在以正确的方式处理这个问题(到处传递 NxScene)吗?感觉有点恶心,但也许我只是疯了。如果没有,我如何以更优雅的方式将 Model 类与 NxActor 同步?提前致谢!

0 投票
12 回答
864 浏览

memory - 编译器及其他

我想回过头来了解更多关于编译器、处理器和内存如何在我的程序上运行的信息。我也对所有这一切所依赖的物理学感兴趣。任何好的参考资料或书籍将不胜感激......