我需要编写一个程序来模拟一个显示速度矢量的山丘上的环。或者至少模拟用速度矢量旋转的圆。它不一定需要下山。这就是我到目前为止所拥有的。非常感谢能够提供帮助的任何人。
'''
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)
position,velocity,acceleration,radiuses
并在开始时将它们设置为开始位置/状态(速度为零......)。acc
(重力,表面/碰撞正常相互作用,摩擦,致动器......)。然后根据Newtonian / D'Alembert方程更新速度vel
,位置pos
vel+=acc*dt;
pos+=vel*dt;
在重绘之前在每个ontimer调用中执行此操作。 dt
是计时器间隔...if (|vel|<1e-6) vel={0,0,...,0};
更新之前添加pos
以避免浮动准确性问题。 acc,vel,pos
是矢量(用于2D模拟使用2D矢量)。使用float或double变量。omg=|vel|/R;
其中R
是环的外半径。如果你有漂移然后你必须首先从外力和内力计算角加速度eps
然后计算:
omg+=eps*dt;
其余类似于位置计算...角位置:
ang+=omg*dt;
查看一些相关的问答: