标签: physics

用网格模拟水

有一段时间,我一直试图用我从"游戏的实时流体动力学"中剔除的算法来模拟流动的水.问题是我似乎没有用这些算法得出类似水的行为.

我自己,我猜我做错了,那些算法并不适合水样流体.

这些算法我做错了什么?这些算法是否正确?

我在bitbucket存储库中有相关项目.(需要gletools和最新的pyglet才能运行)

simulation physics

7
推荐指数
1
解决办法
8212
查看次数

编程从当前速度矢量到目标矢量的推力的平滑变化

TL;博士:"我不知道如何计算一个矢量与另一个矢量之间的推力的平滑过渡."

我正在编写一个简单的游戏,敌人在开放空间(没有墙壁)追逐玩家.我正在独立计算敌人的x和y速度,如果他们将它们朝向玩家的方向加速它们,并且如果它们走错了路线就会迅速减速(例如EnemyVelocity.x> 0&player.x <enemy.x) ,然后是EnemyVelocity.x - 2.)

虽然游戏玩法试图躲避敌人是非常有趣的,但我希望让敌人使用适当的物理行为.我目前正在做的是让敌人根据他们和玩家之间的角度设置他们的推力(想象一艘宇宙飞船),让他们的推力加速到最大速度(计算EnemyVelocity三角形的c侧).一旦发生这种情况,我不确定推力调整的最佳方式.如果我没有留下最大速度,敌人加速很好,但很容易超过玩家,然后需要很长时间才能获得足够的动力回到玩家的方向.

我想要发生的是让敌人在前往玩家的路上不断调整他们的速度,无论他们身在何处(我不希望他们预测你将在哪里).然后,当他们错过了球员时,我想要相同的推力和加速度公式来重新调整他们的速度并将它们发送回玩家.

我认为这将涉及两个向量:一个是敌人目前正在旅行的地方,另一个是敌人想要旅行的地方(将他们直接带到玩家的向量).我不确定如何计算一个矢量与另一个矢量之间的推力的平滑过渡.

任何提示,公式或问题将不胜感激!谢谢Stack Overflow.

math physics vector angle linear-algebra

7
推荐指数
1
解决办法
3139
查看次数

Box2d中的摩擦力

我正在使用Box2d进行自上而下的比赛."地面"是一系列瓷砖,其中每个瓷砖是具有传感器形状的静态主体.即使物体与地面没有"碰撞",我能否对此产生摩擦效果?

如果Box2d不允许我这样做,我考虑通过检测当前正在移动物体的力,并施加与其相反的力来尝试实现我自己,但我不太确定如何检测该力.

physics box2d

7
推荐指数
2
解决办法
7729
查看次数

Python和Pygame:球与圆的内部碰撞

我正在制作一个游戏,其中球一个更大的圆圈内部反弹.较大的圆圈不会移动.

这是我目前用于这些冲突的代码:

def collideCircle(circle, ball):
    """Check for collision between a ball and a circle"""
    dx = circle.x - ball.x
    dy = circle.y - ball.y

    distance = math.hypot(dx, dy)

    if distance >= circle.size + ball.size:
        # We don't need to change anything about the circle, just the ball
        tangent = math.atan2(dy, dx)
        ball.angle = 2 * tangent - ball.angle
        ball.speed *= elasticity + 0.251

        angle = 0.5 * math.pi + tangent
        ball.x -= math.sin(angle)
        ball.y += math.cos(angle) …
Run Code Online (Sandbox Code Playgroud)

python pygame physics collision-detection

7
推荐指数
2
解决办法
7924
查看次数

圆圈之间的2d碰撞响应

我正在尝试计算2个碰撞球的新速度,但在解决另一个问题之前不能真正做到这一点.

由于在数字世界中几乎从未发生真正的碰撞,我们总是会遇到"碰撞"球重叠的情况.

想象一下,有100个球随机移动,所以,如果我理解正确的话,程序应该如下:

  • 移动球(x += vx; y+= vy)
  • 得到最重要的(或完全碰撞的)球
  • 将球"及时"移回到那一刻
  • 执行碰撞计算

如果以上是正确的,那么,我怎么能"及时"将球移动到第一次碰撞点?已知数据:

  • 球的所有坐标(b[i].x,b[i].y)
  • XY速度(b[i].vx,b[i].vy)
  • lest重叠球之间的距离(dist)

我应该只计算dist与碰撞的完美距离的百分之几,然后简单地向后移动xy坐标相同的百分比vxvy?

math physics collision-detection

7
推荐指数
1
解决办法
5474
查看次数

HTML5 Canvas - 与球物理故障的碰撞

我正在使用牛顿方程来制作这个程序中的球,我正在解决它们彼此碰撞时"分开",但有时候它们会相互碰撞并导致很多麻烦.

.

这是我的代码:

<center>
<canvas id="canvas" style="border: 2px solid black; cursor: crosshair;" width="1000"                 height="500"></canvas>
</center>

<script>
var canvas = document.getElementById("canvas")
var ctx = canvas.getContext("2d")

var w = canvas.width
var h = canvas.height

var ball = []

var gravity = 0.3
var force = 0.2

var mouse = {
d: false,
x1: 0,
y1: 0,
x2: 0,
y2: 0,
}




window.onmousedown = function(e) {
mouse.d = true
mouse.x1 = mouse.x2 = e.pageX - canvas.getBoundingClientRect().left
mouse.y1 = mouse.y2 = e.pageY - canvas.getBoundingClientRect().top …
Run Code Online (Sandbox Code Playgroud)

javascript html5 physics canvas collision

7
推荐指数
1
解决办法
2544
查看次数

斯诺克比赛的物理学

任何人都可以向我指出有关斯诺克比赛物理的任何信息,如果可能的更多关于球碰撞?我想做一个游戏,我需要一些关于物理的帮助.

physics

6
推荐指数
1
解决办法
4699
查看次数

如何与量子谐振子波函数进行数值积分?

如何对无限范围内的一维积分进行数值积分(采用什么数值方法,以及使用什么技巧),其中被积函数中的一个或多个函数是1d量子谐振子波函数.其中我想在谐振子基础上计算某些函数的矩阵元素:

Ñ(X)= N ñ ħ Ñ(X)EXP(-x 2 /2)
其中H Ñ(x)是厄米多项式

V m,n =\int _ { - infinity} ^ {infinity} phi m(x)V(x)phi n(x)dx

同样在存在具有不同宽度的量子谐波波函数的情况下.

问题是波函数phi n(x)具有振荡行为,这对于大n是一个问题,并且来自GSL(GNU Scientific Library)的自适应Gauss-Kronrod积分算法花费很长时间来计算,并且具有大的误差.

numerical physics numerical-analysis numerical-methods numerical-integration

6
推荐指数
1
解决办法
3156
查看次数

iOS自由落体了解iphone的加速度计数据

原始加速度计数据包括重力处理的加速度计数据不包括重力为什么当我将手机从大约4英尺放到枕头上,然后绘制用户加速度的大小时,我得到的峰值为1.5g然后是1g然后是2.5g然后是1g然后是2.5g然后是1g时间范围内的0g自由落体,有10个样本.理想情况下,由于重力减去空气阻力,它应该以恒定速率向下加速,那么为什么加速度会在自由落体时上下波动?是什么导致了这种噪音?

iphone physics signal-processing accelerometer ios

6
推荐指数
1
解决办法
4149
查看次数

根据质量和弹跳系数计算球与球碰撞的速度和方向

我基于使用了以下代码

ballA.vx = (u1x * (m1 - m2) + 2 * m2 * u2x) / (m1 + m2);
ballA.vy = (u1y * (m1 - m2) + 2 * m2 * u2y) / (m1 + m2);

ballB.vx = (u2x * (m2 - m1) + 2 * m1 * u1x) / (m1 + m2);
ballB.vy = (u2y * (m2 - m1) + 2 * m1 * u1y) / (m1 + m2);
Run Code Online (Sandbox Code Playgroud)

但由于该公式是针对一维碰撞而设计的,因此显然效果不佳.

所以我尝试使用本节中的以下公式.

但问题是我不知道偏转角是什么以及如何计算它.另外,如何考虑这个公式中的弹跳系数?

编辑:我可能还不清楚.上面的代码确实有效,尽管它可能不是预期的行为,因为原始公式是针对一维碰撞而设计的.因此,我正在尝试的问题是: …

javascript html5 physics canvas

6
推荐指数
2
解决办法
7467
查看次数