我想通过动画来模拟以下内容:
一个球从一个垂直圆形循环的最底部以一定的速度开始,
并一直在其中滚动,直到它的速度允许。
为此,我想找到速度/x/y 与时间方程。
例如,如果球的质量:5Kg,圆环的半径 = 10m,
球的初速度为 200 m/s,
5 秒后它的速度和 (x,y) 位置是多少?
谢谢。
我想通过动画来模拟以下内容:
一个球从一个垂直圆形循环的最底部以一定的速度开始,
并一直在其中滚动,直到它的速度允许。
为此,我想找到速度/x/y 与时间方程。
例如,如果球的质量:5Kg,圆环的半径 = 10m,
球的初速度为 200 m/s,
5 秒后它的速度和 (x,y) 位置是多少?
谢谢。
带有点粒子球的滑动无摩擦表壳
在这种情况下,我们不担心旋转能量,而是假设球实际上是一个点粒子。然后,为了让球保持在顶部,必须满足向心力条件:
m * v_top^2 / r = m * g
所以
v_top = sqrt(r * g)
所以最小初速度由下式确定:
1 / 2 * m * v0^2 >= 1 / 2 * m * v_top^2 + m * g * 2 * r
v0 >= sqrt(5 * r * g)
这和Pete说的差不多,只是他忘记了留在顶部的向心力条件。
接下来,与轨道相切的加速度由下式给出:
a = - g * sin(theta)
但a = r * alpha = r * d^2(theta)/dt^2
其中 alpha 是旋转加速度。因此,我们得到
r * d^2(theta)/dt^2 = g * sin(theta)
但是,我不知道这个微分方程的解析解,而且 Mathematica 也遇到了麻烦。您不能只是将dt
s 移到另一侧并进行积分,因为 theta 是 t 的函数。我建议通过数值方法解决它,例如Runga-Kutte或Verlet 方法。我使用 Mathematica 为您提供的参数解决了它,但是球移动得如此之快,它并没有真正放慢速度。但是,当我降低初始速度时,我可以通过将 theta 绘制为时间的函数来查看加速和减速。
添加其他东西,比如有限的球半径、旋转能量和摩擦力当然是可行的,但我会担心在继续之前能够解决第一种情况,因为它只会从这里变得更加复杂。顺便说一句,通过摩擦,您必须为给定的材料选择一些动摩擦系数,这当然与轨道施加在球上的法向力成正比,这可以通过将沿轨道的力分量求和来解决。圆的半径,不要忘记包括向心力条件。
如果你以前没有学过这种物理学,我绝对建议你买一本关于物理学的入门好书(含微积分)并完成它。你只需要关心适用于力学的部分,尽管这可能是本书的一个很大的部分。尽管像这个问题中的一些资源一样,可能有更好的途径可以追求。
如果没有加速度(x,y) =(xstart+ vx*time ,ystart + vy*time)
,速度保持不变,与半径无关
由于速度是恒定的,你将有一个角速度omega = vel / radius
。您将获得球在其圆形路径上每秒移动的弧度数。
要获得当时的位置,t
您只需要利用极坐标:
x = x_center + sin( 3/2*PI + omega*t)*radius
y = y_center + cos( 3/2*PI + omega*t)*radius
这是因为你从圆的底部开始(所以它3/2*PI
)加上你每秒移动多少个辐射点(我们从切向速度获得它)。全部乘以半径,否则您将考虑一个统一圆。
编辑:既然您想知道如何找到受许多不同力影响的物体的位置,我可以告诉您,通常物理引擎并不关心找到移动物体的方程。它只是将力应用于考虑其预期运动(如圆形运动)或环境因素(如重力或摩擦)的对象,并通过施加力并使用积分器来逐步计算坐标以查看结果。
忽略摩擦,球上的力是重力和轨道。
首先,有两种主要情况——速度是否足以让球绕圈:
initial energy = 1/2 m v² = 0.5 * 5 * 200 * 200
potential energy = m g h = 5 * 9.8 * 20
所以它会绕整个循环。
最初球在循环的底部,theta = 0
球上的加速度是 g 沿轨道的分量
a = g⋅sin theta
行进的距离是 theta * 半径。它也是加速度对时间的二重积分。
theta ⋅ radius = double integral of acceleration against time
对加速度积分一次给出速度,积分速度给出距离。
所以解决这个问题:
theta ⋅ r = ∫(∫ g⋅sin theta.dt).dt
那么你的 x 和 y 是 theta 的微不足道的函数。
您是通过分析还是数字方式解决它取决于您。
对于动态摩擦,摩擦力通常与物体上的法向力成正比。所以这将等于向心力 - 与角速度的平方成正比,以及垂直于轨道的重力分量(g sin theta)
你没有告诉任何关于你希望你的速度如何改变的事情。有摩擦模型吗?如果没有摩擦,那么公式很简单:
length = velocity*t
x = sin(length)*radius
y = -cos(length)*radius
如果速度正在变化,那么您必须将长度更改为类似
length = integral over dt[0..t] (velocity dt)
我唯一想补充的是,如果这是质量为 5 公斤的真实球(球体),那么它的直径必须dia=(6*m/(PI*rho))^(1/3)
是rho
材料的密度。对于钢 ( rho
=7680),直径为dia
=0.1075 米。因此,球场半径(球的重心所在的半径)等于R=10-(dia/2)
或R
=9.9466米。
当包括摩擦时,问题会变得更加复杂。一方面,您必须考虑摩擦的方向(假设干摩擦理论)。这取决于球在其轴上的旋转量,这取决于球的惯性矩。
当您进行模拟时,您可能希望监控总动能+
和总势能,并确保您没有向系统添加能量(或带走能量)。[不要忘记包括动能的旋转分量]
拿一本关于动力学的标准书,我相信书中已经描述了类似的问题。我会推荐“工程师的矢量力学 - 动力学”。