diff options
author | Lukas Tönne <lukas.toenne@gmail.com> | 2014-09-19 13:51:35 +0400 |
---|---|---|
committer | Lukas Tönne <lukas.toenne@gmail.com> | 2015-01-20 11:30:02 +0300 |
commit | 14bd99b0f3f89312004520f644b663b584b081bd (patch) | |
tree | 18521b49e731894c8368fe73a2afdbdc8e4f3f00 /source/blender/physics | |
parent | 7a7778d003d1a31fb4eb3411e1b0512981cc4614 (diff) |
Added a damping term for angular bending springs.
Diffstat (limited to 'source/blender/physics')
-rw-r--r-- | source/blender/physics/intern/implicit_blender.c | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/source/blender/physics/intern/implicit_blender.c b/source/blender/physics/intern/implicit_blender.c index dd8cab6556f..3994f0b340e 100644 --- a/source/blender/physics/intern/implicit_blender.c +++ b/source/blender/physics/intern/implicit_blender.c @@ -1616,7 +1616,9 @@ bool BPH_mass_spring_force_spring_bending_angular(Implicit_Data *data, int i, in float stiffness, float damping, float r_f[3], float r_dfdx[3][3], float r_dfdv[3][3]) { - float target[3], dist[3], extent[3], length, dir[3], vel[3]; + float target[3], targetdir[3]; + float extent[3], dir[3], length; + float dist[3], vel[3]; float f[3], dfdx[3][3], dfdv[3][3]; target[0] = 0.0f; @@ -1627,11 +1629,14 @@ bool BPH_mass_spring_force_spring_bending_angular(Implicit_Data *data, int i, in // spring_length(data, i, j, extent, dir, &length, vel); sub_v3_v3v3(extent, data->X[j], data->X[i]); sub_v3_v3v3(vel, data->V[j], data->V[i]); - length = len_v3(extent); + length = normalize_v3_v3(dir, extent); + normalize_v3_v3(targetdir, target); sub_v3_v3v3(dist, target, extent); mul_v3_v3fl(f, dist, stiffness); -// mul_v3_v3fl(f, dir, fbstar(length, restlen, kb, cb)); + + madd_v3_v3fl(vel, dir, -dot_v3v3(vel, dir)); + madd_v3_v3fl(f, vel, damping); zero_m3(dfdx); zero_m3(dfdv); |