Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukas Tönne <lukas.toenne@gmail.com>2014-10-14 13:03:13 +0400
committerLukas Tönne <lukas.toenne@gmail.com>2014-10-14 13:03:13 +0400
commit0297763afafae7392348728580f3ae38e1208354 (patch)
treee24132f597b4abb8bae570b8ea8048999a9c227c /source/blender/blenkernel/intern/constraint.c
parentc08e7e1dc0366c485dbea5ef1209f2cdb616fbb3 (diff)
Tweak for smoothing limits in stretch-constraint volume preservation.
Uses a arctan instead of sine function now, which has the advantage of not overestimating the bulging.
Diffstat (limited to 'source/blender/blenkernel/intern/constraint.c')
-rw-r--r--source/blender/blenkernel/intern/constraint.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/source/blender/blenkernel/intern/constraint.c b/source/blender/blenkernel/intern/constraint.c
index e4b60c12d64..3a9eb31f061 100644
--- a/source/blender/blenkernel/intern/constraint.c
+++ b/source/blender/blenkernel/intern/constraint.c
@@ -2693,11 +2693,9 @@ static void stretchto_evaluate(bConstraint *con, bConstraintOb *cob, ListBase *t
const float bulge_median = ((data->flag & STRETCHTOCON_USE_BULGE_MIN) ?
0.5f * (data->bulge_min + data->bulge_max) : 0.0f);
const float bulge_range = data->bulge_max - bulge_median;
- float x, bulge_smoothed;
+ float bulge_smoothed;
- x = bulge_range != 0.0f ? (bulge - bulge_median) / bulge_range : 0.0f;
- CLAMP(x, -1.0f, 1.0f);
- bulge_smoothed = bulge_median + bulge_range * sinf(0.5f*M_PI * x);
+ bulge_smoothed = bulge_median + bulge_range * atanf(bulge - bulge_median) / (0.5f * M_PI);
if (data->flag & STRETCHTOCON_USE_BULGE_MIN) {
CLAMP_MIN(bulge, data->bulge_min);