我需要编写一个程序来模拟一个显示速度矢量的山丘上的环。或者至少模拟用速度矢量旋转的圆。它不一定需要下山。这就是我到目前为止所拥有的。非常感谢能够提供帮助的任何人。
'''
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)
答案 0 :(得分:0)
为对象添加所需的变量(响铃)
你需要: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;
查看一些相关的 Q / A :