标签: physics

宇宙射线:它们对程序产生影响的概率是多少?

我再一次进行了设计评审,并且遇到了一个声称特定情景的概率"低于宇宙射线的风险"影响该程序的说法,并且我发现我没有最微弱的想法是什么概率是.

"因为2 -128是340282366920938463463374607431768211456中的1个,我认为我们在这里抓住机会是合理的,即使这些计算已经减少了几十亿......我们对宇宙射线的风险更大我相信,把我们搞砸了."

这个程序员是否正确?宇宙射线撞击计算机并影响程序执行的概率是多少?

statistics physics probability error-detection risk-analysis

529
推荐指数
14
解决办法
5万
查看次数

球与球的碰撞 - 检测和处理

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

替代文字

单击并拖动鼠标以启动球.它会反弹并最终停在"地板"上.

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

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

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

替代文字

处理"墙壁"的碰撞检测和由此产生的矢量变化很容易,但我发现球 - 球碰撞的并发症更多.对于墙壁,我只需要采取适当的x或y向量的负数,然后关闭它将朝正确的方向前进.有球我认为不是这样.

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


编辑:我发现有用的资源

带矢量的2d球物理:无三角碰撞的二维碰撞.pdf
2d球碰撞检测示例:添加碰撞检测


成功!

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

相关代码:

碰撞检测:

for (int i = 0; i < ballCount; i++)  
{  
    for (int j = i + 1; j < ballCount; j++)  
    {  
        if (balls[i].colliding(balls[j]))  
        {
            balls[i].resolveCollision(balls[j]);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

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

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

public boolean colliding(Ball ball)
{
    float xd = position.getX() - ball.position.getX();
    float yd = position.getY() - ball.position.getY();

    float sumRadius = getRadius() + ball.getRadius();
    float sqrRadius …
Run Code Online (Sandbox Code Playgroud)

language-agnostic graphics physics collision-detection

262
推荐指数
7
解决办法
18万
查看次数

为什么我的球消失了?

请原谅这个有趣的头衔.我已经创建了一个200个球弹跳和碰撞的小图形演示,两个都在墙壁和彼此之间.您可以在此处查看我目前所拥有的内容:http://www.exeneva.com/html5/multipleBallsBouncingAndColliding/

问题是,每当它们相互碰撞时,它们就会消失.我不知道为什么.有人可以看看并帮助我吗?

更新:显然球阵列有坐标为NaN的球.下面是我将球推到阵列的代码.我不完全确定坐标是如何获得NaN的.

// Variables
var numBalls = 200;  // number of balls
var maxSize = 15;
var minSize = 5;
var maxSpeed = maxSize + 5;
var balls = new Array();
var tempBall;
var tempX;
var tempY;
var tempSpeed;
var tempAngle;
var tempRadius;
var tempRadians;
var tempVelocityX;
var tempVelocityY;

// Find spots to place each ball so none start on top of each other
for (var i = 0; i < numBalls; i += 1) { …
Run Code Online (Sandbox Code Playgroud)

javascript geometry physics canvas collision

203
推荐指数
2
解决办法
6574
查看次数

Android加速度计精度(惯性导航)

我正在考虑为Android手机实施一个惯性导航系统,我意识到加速度计的准确性和读数的不断波动很难实现.

首先,我将手机放在一个平面上,并在X和Y方向上取样1000个加速度计读数(平行于工作台,因此没有重力作用于这些方向).然后我平均这些读数并使用该值来校准手机(从每个后续读数中减去该值).

然后我再次将它放在桌面上并在X和Y方向上采样5000个加速度计读数来测试系统.考虑到校准,我预计这些加速度应该在每个方向上加起来为0(大致).然而,情况并非如此,并且超过5000次迭代的总加速度远不及0(每个轴上平均大约10).

我意识到没有看到我的代码,这可能很难回答,但在更一般的意义上......

这只是移动电话(HTC Desire S)上加速度计读数不准确的一个例子,还是我在编码中出错的可能性更大?

android physics calibration accelerometer acceleration

108
推荐指数
5
解决办法
9万
查看次数

在科学环境中编程的实践?

背景

去年,我在一所大学的物理研究小组实习.在这一组中,我们主要使用LabVIEW编写程序来控制我们的设置,进行数据采集和分析数据.对于前两个目的,这非常正常,但对于数据分析,这是一个真正的痛苦.最重要的是,每个人都大多是自学成才,因此编写的代码通常非常混乱(难怪每个博士都迅速决定从头开始重写所有内容).由于IT部门严格的软件和网络规定,版本控制未知,无法设置.

现在,实际上事情确实令人惊讶,但是自然科学中的人们如何进行软件开发呢?

问题

一些具体问题:

  • 您使用哪些语言/环境来开发科学软件,尤其是数据分析?什么图书馆?(例如,你用什么来绘图?)
  • 对于没有任何重要编程背景的人进行过培训吗?
  • 你有没有像版本控制和错误跟踪的东西?
  • 您将如何尝试为编程创造一个体面的环境,而不会对个别科学家造成太大影响(特别是物理学家是顽固的人!)

到目前为止的答案摘要

到目前为止的答案(或我对它们的解释):( 2008-10-11)

  • 似乎使用最广泛的语言/包:
  • 几乎所有受访者都使用版本控制; 错误跟踪和其他过程不太常见.
  • 软件木工课程是向科学家传授编程和开发技术的好方法.
  • 如何改善事物?
    • 不要强迫人们遵守严格的协议.
    • 自己设置一个环境,并向他人展示好处.帮助他们自己开始使用版本控制,错误跟踪等.
    • 查看其他人的代码可能会有所帮助,但要注意并非每个人都可以理解这一点.

collaboration physics scientific-computing

92
推荐指数
8
解决办法
7247
查看次数

如何计算弹跳角度?

我玩了一会儿,但我简直无法理解.

我制造了一个发射导弹的坦克,当导弹击中墙壁时,我希望它们反弹,但我希望它们能够以正确的角度反弹.

现在我没有任何障碍,当导弹越过viewportRectangle我制造的时候导弹就会反弹.

我正在寻找的解决方案是否相当先进?

有相对简单的方法吗?

c# xna physics

62
推荐指数
5
解决办法
7万
查看次数

在进行信号的频谱分析时的傅里叶变换(FFT)的单位

我的问题与对信号进行频谱分析的结果的物理意义有关,或者将信号抛入FFT并使用合适的数字包解释出来的结果,

特别:

  • 发信号,说时变电压v(t)
  • 把它扔进FFT(你得到一系列复数)
  • 现在取模数(abs)并将结果平方,即| fft(v)| ^ 2.

所以你现在在y轴上有实数 - 我应该称这些频谱系数?

  • 使用采样分辨率,您可以遵循食谱配方并将频谱系数与频率相关联.
  • 在这一点上,你有一个频率g(w),频率在x轴上,但y轴上的物理单位是多少?

我的理解是这个频谱显示了电压信号中存在多少不同的频率 - 它们是频谱系数,它们是重构原始信号所需的各种频率的正弦和余弦的系数.

所以第一个问题是,这些频谱系数的单位是多少?

这很重要的原因是频谱系数可能很小而且很大,所以我想用dB标度来表示它们.

但要做到这一点,我必须做出选择:

  • 要么我使用20log10 dB转换,对应于现场测量,如电压.
  • 或者我使用10log10 dB转换,对应于能量测量,如电源.

我使用哪种缩放取决于单位是什么.

任何关于此的光线都将非常感激!

math physics fft measurement spectrum

59
推荐指数
3
解决办法
9万
查看次数

游戏网络物理碰撞

如何在网络游戏的典型客户端/服务器设置中模拟两个客户端控制的车辆(明智地)发生冲突?我确实读过这篇关于如何进行分布式网络物理的博客文章(没有传统的客户端预测),但这个问题具体是关于如何处理自有对象的冲突.

假设客户端A比服务器提前20毫秒,客户端B提前300毫秒服务器(计算延迟和最大抖动).这意味着当两辆车相撞时,两个客户都会看到另一辆车落后320毫秒 - 与另一辆车的速度方向相反.在瑞典高速公路上的对决意味着相差16米/17.5码!

什么不试试

实际上不可能推断出位置,因为我也有非常复杂的车辆,车身上有关节和车身,而车身又有线性和角度位置,速度和加速度,更不用说用户输入的状态了.

network-programming physics

50
推荐指数
3
解决办法
5716
查看次数

Runge-Kutta(RK4)集成了游戏物理

Gaffer on Games有一篇很棒的文章,关于使用RK4集成来改进游戏物理.实现很简单,但背后的数学让我感到困惑.我从概念层面理解衍生物和积分,但很长一段时间没有操纵方程式.

这是Gaffer实施的主要内容:

void integrate(State &state, float t, float dt)
{
     Derivative a = evaluate(state, t, 0.0f, Derivative());
     Derivative b = evaluate(state, t+dt*0.5f, dt*0.5f, a);
     Derivative c = evaluate(state, t+dt*0.5f, dt*0.5f, b);
     Derivative d = evaluate(state, t+dt, dt, c);

     const float dxdt = 1.0f/6.0f * (a.dx + 2.0f*(b.dx + c.dx) + d.dx);
     const float dvdt = 1.0f/6.0f * (a.dv + 2.0f*(b.dv + c.dv) + d.dv)

     state.x = state.x + dxdt * dt;
     state.v = state.v …
Run Code Online (Sandbox Code Playgroud)

math integration physics

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

Java堆空间内存不足

我的应用程序目前消耗相当多的内存,因为它正在运行物理模拟.问题是始终如一,在第51次模拟时,java会抛出一个错误,通常是因为堆空间内存不足(我的程序最终运行了数千次模拟).

无论如何我不能只增加堆空间但是修改我的程序,以便在每次运行后清除堆空间,以便我可以运行任意数量的模拟?

谢谢

-编辑-

多谢你们.事实证明,模拟器软件在每次运行后都没有清除信息,我将这些运行全部存储在arraylist中.

java memory physics heap-memory

47
推荐指数
5
解决办法
23万
查看次数