我再一次进行了设计评审,并且遇到了一个声称特定情景的概率"低于宇宙射线的风险"影响该程序的说法,并且我发现我没有最微弱的想法是什么概率是.
"因为2 -128是340282366920938463463374607431768211456中的1个,我认为我们在这里抓住机会是合理的,即使这些计算已经减少了几十亿......我们对宇宙射线的风险更大我相信,把我们搞砸了."
这个程序员是否正确?宇宙射线撞击计算机并影响程序执行的概率是多少?
statistics physics probability error-detection risk-analysis
在Stack Overflow社区的帮助下,我写了一个非常基本但有趣的物理模拟器.
单击并拖动鼠标以启动球.它会反弹并最终停在"地板"上.
我想要添加的下一个重要特征是球与球的碰撞.球的运动被分解为ax和y速度矢量.我有重力(每一步的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) 请原谅这个有趣的头衔.我已经创建了一个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) 我正在考虑为Android手机实施一个惯性导航系统,我意识到加速度计的准确性和读数的不断波动很难实现.
首先,我将手机放在一个平面上,并在X和Y方向上取样1000个加速度计读数(平行于工作台,因此没有重力作用于这些方向).然后我平均这些读数并使用该值来校准手机(从每个后续读数中减去该值).
然后我再次将它放在桌面上并在X和Y方向上采样5000个加速度计读数来测试系统.考虑到校准,我预计这些加速度应该在每个方向上加起来为0(大致).然而,情况并非如此,并且超过5000次迭代的总加速度远不及0(每个轴上平均大约10).
我意识到没有看到我的代码,这可能很难回答,但在更一般的意义上......
这只是移动电话(HTC Desire S)上加速度计读数不准确的一个例子,还是我在编码中出错的可能性更大?
去年,我在一所大学的物理研究小组实习.在这一组中,我们主要使用LabVIEW编写程序来控制我们的设置,进行数据采集和分析数据.对于前两个目的,这非常正常,但对于数据分析,这是一个真正的痛苦.最重要的是,每个人都大多是自学成才,因此编写的代码通常非常混乱(难怪每个博士都迅速决定从头开始重写所有内容).由于IT部门严格的软件和网络规定,版本控制未知,无法设置.
现在,实际上事情确实令人惊讶,但是自然科学中的人们如何进行软件开发呢?
一些具体问题:
到目前为止的答案(或我对它们的解释):( 2008-10-11)
我玩了一会儿,但我简直无法理解.
我制造了一个发射导弹的坦克,当导弹击中墙壁时,我希望它们反弹,但我希望它们能够以正确的角度反弹.
现在我没有任何障碍,当导弹越过viewportRectangle
我制造的时候导弹就会反弹.
我正在寻找的解决方案是否相当先进?
有相对简单的方法吗?
我的问题与对信号进行频谱分析的结果的物理意义有关,或者将信号抛入FFT并使用合适的数字包解释出来的结果,
特别:
所以你现在在y轴上有实数 - 我应该称这些频谱系数?
我的理解是这个频谱显示了电压信号中存在多少不同的频率 - 它们是频谱系数,它们是重构原始信号所需的各种频率的正弦和余弦的系数.
所以第一个问题是,这些频谱系数的单位是多少?
这很重要的原因是频谱系数可能很小而且很大,所以我想用dB标度来表示它们.
但要做到这一点,我必须做出选择:
我使用哪种缩放取决于单位是什么.
任何关于此的光线都将非常感激!
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) 我的应用程序目前消耗相当多的内存,因为它正在运行物理模拟.问题是始终如一,在第51次模拟时,java会抛出一个错误,通常是因为堆空间内存不足(我的程序最终运行了数千次模拟).
无论如何我不能只增加堆空间但是修改我的程序,以便在每次运行后清除堆空间,以便我可以运行任意数量的模拟?
谢谢
-编辑-
多谢你们.事实证明,模拟器软件在每次运行后都没有清除信息,我将这些运行全部存储在arraylist中.
physics ×10
math ×2
acceleration ×1
android ×1
c# ×1
calibration ×1
canvas ×1
collision ×1
fft ×1
geometry ×1
graphics ×1
heap-memory ×1
integration ×1
java ×1
javascript ×1
measurement ×1
memory ×1
probability ×1
spectrum ×1
statistics ×1
xna ×1