aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorN.N. <nimon@users.sourceforge.net>2010-09-07 16:21:33 +0000
committerN.N. <nimon@users.sourceforge.net>2010-09-07 16:21:33 +0000
commit741b5147f2774523ec152f78f5b40095fb5beb61 (patch)
treef74de1287281a655e100113ab64626f438c5bcba
parent6cb09178caa3fdd8876432998b0a62a04ffd4872 (diff)
svn path=/trunk/externals/nusmuk/; revision=13980
-rw-r--r--msd.h8
1 files changed, 7 insertions, 1 deletions
diff --git a/msd.h b/msd.h
index f278b0d..1d4b46b 100644
--- a/msd.h
+++ b/msd.h
@@ -134,7 +134,13 @@ public:
{
for(int i = 0; i < N; ++i) {
t_float pold = pos[i];
- t_float pnew = force[i] * invM + 2*pold - pos2[i]; // x[n] =Fx[n]/M+2x[n]-x[n-1]
+ t_float pnew;
+ if(invM) // if mass is mobile
+ pnew = force[i] * invM + 2*pold - pos2[i]; // x[n] =Fx[n]/M+2x[n]-x[n-1]
+ else // if mass is fixed
+ pnew = pos[i];
+
+ // check limit
if(pnew < limit[i][0]) pnew = limit[i][0]; else if(pnew > limit[i][1]) pnew = limit[i][1];
speed[i] = (pos[i] = pnew) - (pos2[i] = pold); // x[n-2] = x[n-1], x[n-1] = x[n],vx[n] = x[n] - x[n-1]