目前我正在玩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?那是我测得的重力加速度.
这是一个漫长的假期周末,所以我再次得到了编码错误并开始玩游戏:
马里奥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) 我正在用C++编写一个物理模拟器,我担心的是健壮性.我已经读过,当计算两个几乎相等的数量的差值时,浮点运算会发生灾难性的消除.我想到,当计算两个几乎正交矢量的点积时,这可能发生在模拟器中.但是,我所看到的参考文献仅讨论通过重写相关方程来解决问题(例如,可以重写二次公式以消除问题) - 但这在计算点积时似乎不适用?我想我有兴趣知道这是否是物理引擎中的一个问题,以及它是如何解决的.
我正在开发一个Android应用程序,我想知道是否有可能检测到一个轴固定的运动方向.例如,我想把手机放在桌子上并在我移动它时检测方向(左,右,上和下).距离没有必要,我只想知道准确的方向.
所以我有一个物体有物理体,重力影响它.它也是动态的.
目前,当用户触摸屏幕时,我运行代码:
applyForce(0,400)
物体向上移动大约200,然后由于重力下降.这只会在某些时候发生.其他时候,它导致物体仅在Y方向上移动50个单位.
我找不到一个模式......我把我的项目放在Dropbox上,这样如果有人愿意看它就可以打开它.
https://www.dropbox.com/sh/z0nt79pd0l5psfg/bJTbaS2JpY
编辑:这似乎发生在玩家在撞击后稍微从地面反弹一段时间后.有没有办法让玩家不会反弹?
编辑2:我尝试使用摩擦参数解决这个问题,并且只允许玩家在摩擦力为0时"跳跃"(你会认为这将是玩家空降的所有情况)但是摩擦似乎大于0每时每刻.如果玩家正在触摸一个物体(除了使用y位置),我怎么能检测到?
谢谢
好的,我有一堆球:

我想弄清楚的是如何制作这些圈子:
根据他们接触的表面旋转
处理多个触摸物体时修复碰撞穿透.
编辑:这就是我所说的旋转

球0将旋转逆时针,因为它是扶着球3
球5将旋转顺时针方向,因为它是扶着球0
即使这个解决方案是通用的,只是为了记录我使用Javascript和SVG,并且更愿意自己实现这个而不是使用库.
非常感谢帮助.谢谢!:)
使用Bullet 2.76我试图冻结一个物体(刚体),使其立即停止移动,但仍然响应碰撞.
我尝试将它的激活状态设置为DISABLE_SIMULATION,但是它几乎不存在于其他对象中.此外,如果对象在禁用时与其"碰撞",则会发生奇怪的事情(对象通过静态物体落下等)
我想,暂时将它转换为静态刚体可能会起作用,但是在Bullet的方面是否存在一种现有的"原生"方式来实现这一点?
编辑:有没有办法关闭特定对象的重力?
我正在为游戏开发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) 我一直在用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
我有两个数据集列出了在时间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数组).
任何建议将不胜感激!
编辑:添加图
以下是两个数据集的外观图:

physics ×10
math ×3
game-physics ×2
numpy ×2
python ×2
2d ×1
algorithm ×1
android ×1
bullet ×1
c++ ×1
direction ×1
electronics ×1
gravity ×1
objective-c ×1
scipy ×1
sensor ×1
sprite-kit ×1
tile-engine ×1