我需要帮助编写一个程序来模拟一个用速度向量下山的圆圈

时间:2014-11-25 17:21:21

标签: physics

我需要编写一个程序来模拟一个显示速度矢量的山丘上的环。或者至少模拟用速度矢量旋转的圆。它不一定需要下山。这就是我到目前为止所拥有的。非常感谢能够提供帮助的任何人。

'''
cylinderhill.py
'''
from visual import *
from math import *

inclinedPlane = box(pos = vector(1, 0, 0), size = (2, 0.2, 0.2), color = color.blue)
cir = ring(pos=(5,0,0), axis=(5,0,0), radius = (.05), thickness = (.01), color = color.red)
cir.vel = vector(1,1)

1 个答案:

答案 0 :(得分:0)

  1. 为对象添加所需的变量(响铃)

    你需要:position,velocity,acceleration,radiuses并将它们设置为开始位置/状态(速度为零......)。

  2. 创建引擎应用程序可以重绘场景

    所有对象(响铃,表面......)和更新/重绘某些计时器

  3. 添加物理模拟

    计算实际加速度acc(重力,表面/碰撞正常相互作用,摩擦力,执行器......)。然后根据 Newtonian / D' Alembert 等式更新速度vel,位置pos

    vel+=acc*dt;
    pos+=vel*dt;
    

    在重绘前的每个ontimer调用中执行此操作。 dt是计时器间隔...

  4. 一些提示

    if (|vel|<1e-6) vel={0,0,...,0};更新之前添加pos以避免浮动准确性问题。 acc,vel,pos是向量(用于2D模拟使用2D向量)。使用float或double变量。

  5. 轮换

    如果没有漂移(完全抓地力),则角速度为:

    omg=|vel|/R;
    

    其中R是环的外半径。如果你有漂移,那么你必须首先从外力和内力计算角加速度eps,然后计算:

    omg+=eps*dt;
    

    其余类似于位置计算...角位置:

    ang+=omg*dt;
    
  6. 查看一些相关的 Q / A