标签: physics

"LSB/Unit"和"Unit/LSB"的含义

目前我正在玩LSM303DLHC加速度计/磁力计/温度计.

这是它的数据表:http://www.st.com/st-web-ui/static/active/en/resource/technical/document/datasheet/DM00027543.pdf

一切都运作良好,但我不知道如何解释输出值.数据表(第9页)说的是关于我配置中的线性加速度灵敏度的"1 mg/LSB"(不,不是毫克:D).这到底应该是什么意思?与温度传感器输出变化(8 LSB /°C)和磁增益设置(1100 LSB /高斯)相同,只是相反.

例如,如何处理此加速度计输出:16384?那是我测得的重力加速度.

math physics electronics sensor

17
推荐指数
2
解决办法
4万
查看次数

2d Platformer物理

这是一个漫长的假期周末,所以我再次得到了编码错误并开始玩游戏:

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

我写了一个基本的瓦片引擎,但之前从未尝试过这个,我真的很难处理精灵碰撞检测并实现重力的真实物理.

对于任何其他游戏爱好作家,你能指出一些关于最佳方法的演练吗?

更新:

我以为我会分享进度报告:

http://www.youtube.com/watch?v=-RKNQ2UiiLY < - 游戏在行动中

它仍然是真正的马车,但碰撞检测主要是工作,我已经开始研究其他一些功能(如碰撞块(注意错误)和与敌人交互).

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

    const float AirDrag = 1.00f;
    const float GroundFriction = .97f;
    const float Gravity = 0.8f;
Run Code Online (Sandbox Code Playgroud)

physics tile-engine

16
推荐指数
2
解决办法
1万
查看次数

在计算浮点向量的点积时,灾难性的取消是一个问题吗?如果是这样,它通常如何解决?

我正在用C++编写一个物理模拟器,我担心的是健壮性.我已经读过,当计算两个几乎相等的数量的差值时,浮点运算会发生灾难性的消除.我想到,当计算两个几乎正交矢量的点积时,这可能发生在模拟器中.但是,我所看到的参考文献仅讨论通过重写相关方程来解决问题(例如,可以重写二次公式以消除问题) - 但这在计算点积时似乎不适用?我想我有兴趣知道这是否是物理引擎中的一个问题,以及它是如何解决的.

c++ math floating-point physics

16
推荐指数
2
解决办法
1661
查看次数

如何使用加速度计获得运动方向?

我正在开发一个Android应用程序,我想知道是否有可能检测到一个轴固定的运动方向.例如,我想把手机放在桌子上并在我移动它时检测方向(左,右,上和下).距离没有必要,我只想知道准确的方向.

android physics accelerometer direction

16
推荐指数
1
解决办法
3万
查看次数

applyForce(0,400) - SpriteKit不一致

所以我有一个物体有物理体,重力影响它.它也是动态的.

目前,当用户触摸屏幕时,我运行代码:

applyForce(0,400)

物体向上移动大约200,然后由于重力下降.这只会在某些时候发生.其他时候,它导致物体仅在Y方向上移动50个单位.

我找不到一个模式......我把我的项目放在Dropbox上,这样如果有人愿意看它就可以打开它.

https://www.dropbox.com/sh/z0nt79pd0l5psfg/bJTbaS2JpY

编辑:这似乎发生在玩家在撞击后稍微从地面反弹一段时间后.有没有办法让玩家不会反弹?

编辑2:我尝试使用摩擦参数解决这个问题,并且只允许玩家在摩擦力为0时"跳跃"(你会认为这将是玩家空降的所有情况)但是摩擦似乎大于0每时每刻.如果玩家正在触摸一个物体(除了使用y位置),我怎么能检测到?

谢谢

physics objective-c sprite-kit skphysicsbody

16
推荐指数
2
解决办法
8895
查看次数

需要有关圆形碰撞和旋转的帮助? - 游戏物理

好的,我有一堆球:

Ignight Balls


我想弄清楚的是如何制作这些圈子:

  • 根据他们接触的表面旋转

  • 处理多个触摸物体时修复碰撞穿透.


编辑:这就是我所说的旋转

替代文字

  • 球0将旋转逆时针,因为它是扶着球3

  • 球5将旋转顺时针方向,因为它是扶着球0


即使这个解决方案是通用的,只是为了记录我使用Javascript和SVG,并且更愿意自己实现这个而不是使用库.

非常感谢帮助.谢谢!:)

algorithm math physics

15
推荐指数
2
解决办法
3453
查看次数

Bullet物理引擎,如何冻结对象?

使用Bullet 2.76我试图冻结一个物体(刚体),使其立即停止移动,但仍然响应碰撞.

我尝试将它的激活状态设置为DISABLE_SIMULATION,但是它几乎不存在于其他对象中.此外,如果对象在禁用时与其"碰撞",则会发生奇怪的事情(对象通过静态物体落下等)

我想,暂时将它转换为静态刚体可能会起作用,但是在Bullet的方面是否存在一种现有的"原生"方式来实现这一点?

编辑:有没有办法关闭特定对象的重力?

physics bullet game-physics

15
推荐指数
4
解决办法
1万
查看次数

二维轨道物理学

我正在为游戏开发2D物理引擎.我有引力和群众工作,使用一种简单的迭代方法(我知道我最终必须升级); 我可以手动推动群众,看着他们移动,这一切都按照我的预期运作.

现在,我正试图通过围绕行星的简单圆形轨道中的卫星提前建立游戏世界.为此,我需要根据行星的质量和所需的距离计算卫星的初始速度矢量; 这应该是微不足道的,但我不能为我的生活让它正常工作.

标准物理教科书告诉我,围绕质量M的圆形轨道中物体的轨道速度为:

v = sqrt( G * M / r )
Run Code Online (Sandbox Code Playgroud)

然而,在应用了适当的矢量后,卫星的速度不够快,并且处于一个尖锐的椭圆轨道上.随机修补显示,在一种情况下,它的关闭时间约为3倍.

我的重力模拟代码使用传统的:

F = G M m / r^2
Run Code Online (Sandbox Code Playgroud)

我的宇宙中G被设置为1.

有人可以向我确认这些方程式仍然存在于2D空间吗?我看不出任何原因,但在这一点上我真的想知道问题是在我的代码还是我的假设......


更新:我的物理引擎的工作原理如下:

for each time step of length t:
  reset cumulative forces on each object to 0.
  for each unique pair of objects:
    calculate force between them due to gravity.
    accumulate force to the two objects.
  for each object:
    calculate velocity change dV for this timestep using Ft / m.
    v = v + dV. …
Run Code Online (Sandbox Code Playgroud)

physics 2d gravity game-physics

15
推荐指数
1
解决办法
7824
查看次数

编写更快的Python物理模拟器

我一直在用Python编写我自己的物理引擎作为物理和编程的练习.我开始按照这里的教程开始.这很顺利,但后来我找到了thomas jakobsen撰写的文章"高级角色物理",其中介绍了使用Verlet集成进行模拟,我觉得这很有趣.

我一直在尝试使用verlet集成编写自己的基本物理模拟器,但事实证明它比我最初预期的要困难一些.我正在浏览示例程序以阅读,并且在这个用Python编写的程序中偶然发现,我也发现本教程使用了Processing.

Processing版本给我留下深刻印象的是它的运行速度.单独的布有2400个不同的点被模拟,这不包括身体.

python示例仅使用256个粒子作为布料,并以每秒约30帧的速度运行.我尝试将粒子数量增加到2401(该程序必须是正方形),它以大约3 fps的速度运行.


这两个工作都是通过将粒子对象的实例存储在列表中,然后遍历列表,调用每个粒子"更新位置"方法.例如,这是Processing sketch中代码的一部分,用于计算每个粒子的新位置:

for (int i = 0; i < pointmasses.size(); i++) {
    PointMass pointmass = (PointMass) pointmasses.get(i);
    pointmass.updateInteractions();
    pointmass.updatePhysics(fixedDeltaTimeSeconds);
}
Run Code Online (Sandbox Code Playgroud)

编辑:这是我之前链接的python版本的代码:

"""
verletCloth01.py
Eric Pavey - 2010-07-03 - www.akeric.com

Riding on the shoulders of giants.
I wanted to learn now to do 'verlet cloth' in Python\Pygame.  I first ran across
this post \ source:
http://forums.overclockers.com.au/showthread.php?t=870396
http://dl.dropbox.com/u/3240460/cloth5.py

Which pointed to some good reference, that was a …
Run Code Online (Sandbox Code Playgroud)

python physics numpy scientific-computing verlet-integration

15
推荐指数
3
解决办法
9929
查看次数

找出两个(非谐波)波之间的相位差

我有两个数据集列出了在时间t两个神经网络组件的平均电压输出,看起来像这样:

A = [-80.0, -80.0, -80.0, -80.0, -80.0, -80.0, -79.58, -79.55, -79.08, -78.95, -78.77, -78.45,-77.75, -77.18, -77.08, -77.18, -77.16, -76.6, -76.34, -76.35]

B = [-80.0, -80.0, -80.0, -80.0, -80.0, -80.0, -78.74, -78.65, -78.08, -77.75, -77.31, -76.55, -75.55, -75.18, -75.34, -75.32, -75.43, -74.94, -74.7, -74.68]
Run Code Online (Sandbox Code Playgroud)

当两个神经组件在一定程度上"同相"时,这意味着它们是相互关联的.我想要做的是计算A和B之间的相位差,最好是在模拟的整个时间.由于两个组件不太可能完全同相,我想将该相位差与某个阈值进行比较.

这些是非谐振荡器,我不知道它们的功能,只知道这些值,所以我不知道如何确定相位或相应的相位差.

我在Python中使用numpy和scipy来做这个项目(两个程序集都是numpy数组).

任何建议将不胜感激!

编辑:添加图

程序集1的示例数据文件

程序集2的示例数据文件

以下是两个数据集的外观图: 两个神经组件重叠的情节 两个神经组件的情节分开

python physics numpy scipy neural-network

14
推荐指数
1
解决办法
2万
查看次数