unity中模拟弹簧的力-受力分析

水平放置一个弹簧,压缩,后面有一个球,放开球之后,求球的位移 速度 时间的关系

解: 假设弹簧的任意位置在x处,弹簧为压缩状态为x0,弹簧的初始化位置为0

则根据牛顿第二定律,列出微分方程:

    F = k(x0 - x)

    F = m*dv/dt => F = m*x''

    k(x0 - x) = m*x''

   规范化该方程可得

 m*x'' + 0*x' + kx - kx0 = 0

发现为二阶常系数微分方程,可在walfram alpha中求解:

 带入初始化条件 X|t=0 = 0和X'|t=0 = 0 可以得到

 X(t) = X0 - X0*cos((k/m)^0.5*t)......................................(1)

 V(t) = X' = X0*(k/m)^0.5*sin((k/m)^0.5*t).......................(2)

可通过能量守恒定律验证上述结果: 即

k*x0*x - 0.5*k*x^2 = 0.5*m*v^2

=> 带入(1)和(2) 会发现方程左右两边相等

将上述结果带入Unity的c#中....

原文地址:https://www.cnblogs.com/tony-stark/p/15241552.html