|
5金钱
static real v_prev=0.0;
DEFINE_CG_MOTION(piston,dt,vel,omega,time,dtime)
{
Thread *t;
face_t f;
real NV_VEC(A);
real force,dv;
/*重置刚体速度*/
NV_S(vel,=,0.0);
nv_s(omega,=,0.0);
if(!Data_Valid_p())
return;
/*获得这个运动所定义的线程指针*/
t=DT_THREAD(dt);
/*通过循环刚体表面上的所有面来计算整个刚体上的压力和*/
force=0.0;
begin_f_loop(f,t)
{
F_AREA(A,f,t);
force+=F_P(f,t)*NV_MAG(A);
}
end_f_loop(f,t)
/*计算速度的改变量,例如:dv=F*dt/mass 速度场用显示的欧拉方程来更新*/
dv=dtime*force/50.0;
v_prev+=dv;
Message("time=%f,x_vel=%f,force %f\n",time,v_prev,force);
/*设置x分量速度*、
vel[0]=v_prev;
}
我在两个面上分别用CG_MOTION求得两个force,怎么样才能实现dv=dtime*(force1-force2)/50.0; 呢?
|
|