15#ifndef OSGANIMATION_EASE_MOTION
16#define OSGANIMATION_EASE_MOTION 1
32 result = 7.5625 * t * t;
34 else if (t < (2/2.75))
37 result = 7.5625* t * t + .75;
39 else if (t < (2.5/2.75))
42 result = 7.5625 * t * t + .9375;
47 result = 7.5625* t * t + .984375;
73 result = result * 0.5 + 0.5;
81 inline static void getValueAt(
float t,
float& result) { result = t;}
87 inline static void getValueAt(
float t,
float& result) { result = - (t * (t -2.0));}
92 inline static void getValueAt(
float t,
float& result) { result = t*t;}
101 result = 0.5 * t * t;
105 result = - 0.5 * (t * ( t - 2) - 1);
113 inline static void getValueAt(
float t,
float& result) { t = t-1.0; result = t*t*t + 1;}
118 inline static void getValueAt(
float t,
float& result) { result = t*t*t;}
127 result = 0.5f * t * t * t;
130 result = 0.5 * (t * t * t + 2.0f);
138 inline static void getValueAt(
float t,
float& result) { result = t*t*t*t*t;}
143 inline static void getValueAt(
float t,
float& result) { t = t - 1; result = - (t*t*t*t -1); }
152 result = 0.5*t*t*t*t;
156 result = -0.5 * (t*t*t*t -2);
166 result = pow(2.0f, -10.0f * t) * sinf((t - 0.3f / 4.0f) * (2.0f *
osg::PI) / 0.3f) + 1.0f;
175 result = 1.0f - result;
187 result = -0.5 * (1.0f * pow(2.0f, 10.0f * t) * sinf((t - 0.45f / 4.0f) * (2.0f *
osg::PI) / 0.45f));
192 result = pow(2.0f, -10.0f * t) * sinf((t - 0.45f / 4.0f) * (2.0f *
osg::PI) / 0.45f) * 0.5f + 1.0f;
202 result = sinf(t * (
osg::PI / 2.0f));
210 result = -cosf(t * (
osg::PI / 2.0f)) + 1.0f;
218 result = -0.5f * (cosf((
osg::PI * t)) - 1.0f);
228 result = t * t * ((1.70158 + 1.0f) * t + 1.70158) + 1.0f;
236 result = t * t * ((1.70158 + 1.0f) * t - 1.70158);
244 float s = 1.70158 * 1.525f;
248 result = 0.5f * (t * t * ((s + 1.0f) * t - s));
253 result = 0.5f * ((p) * t * ((s + 1.0f) * t + s) + 2.0f);
264 result = sqrt(1.0f - t * t);
272 result = -(sqrt(1.0f - (t * t)) - 1.0f);
283 result = -0.5f * (sqrt(1.0f - t * t) - 1.0f);
288 result = 0.5f * (sqrt(1 - t * t) + 1.0f);
304 result = -powf(2.0f, -10.0f * t) + 1.0f;
319 result = powf(2.0f, 10.0f * (t - 1.0f));
328 if(t == 0.0f || t == 1.0f)
337 result = 0.5f * powf(2.0f, 10.0f * (t - 1.0f));
341 result = 0.5f * (-powf(2.0f, -10.0f * (t - 1.0f)) + 2.0f);
419 template <
typename T>
435 if (!
_sampler.getKeyframeContainer())
441 t = t * size +
_sampler.getStartTime();
460 osg::notify(
osg::WARN) <<
"CompositeMotion::getValueInNormalizedRange no Motion in the CompositeMotion, add motion to have result" << std::endl;
463 for (MotionList::const_iterator it =
_motions.begin(); it !=
_motions.end(); ++it)
465 const Motion* motion =
static_cast<const Motion*
>(it->get());
467 if (t < durationInRange)
469 float tInRange = t/durationInRange * motion->
getDuration();
473 t = t - durationInRange;
475 osg::notify(
osg::WARN) <<
"CompositeMotion::getValueInNormalizedRange did find the value in range, something wrong" << std::endl;
@ WARN
Definition Notify:33
const double PI
Definition Math:30
std::ostream & notify(void)
Definition Notify:80
The osgAnimation library provides general purpose utility classes for animation.
Definition Action:34
MathMotionTemplate< OutQuartFunction > OutQuartMotion
Definition EaseMotion:495
MathMotionTemplate< InQuadFunction > InQuadMotion
Definition EaseMotion:486
MathMotionTemplate< InOutQuadFunction > InOutQuadMotion
Definition EaseMotion:487
MathMotionTemplate< OutExpoFunction > OutExpoMotion
Definition EaseMotion:525
MathMotionTemplate< OutQuadFunction > OutQuadMotion
Definition EaseMotion:485
MathMotionTemplate< InQuartFunction > InQuartMotion
Definition EaseMotion:496
MathMotionTemplate< InCircFunction > InCircMotion
Definition EaseMotion:521
MathMotionTemplate< InExpoFunction > InExpoMotion
Definition EaseMotion:526
MathMotionTemplate< OutCubicFunction > OutCubicMotion
Definition EaseMotion:490
MathMotionTemplate< InOutBounceFunction > InOutBounceMotion
Definition EaseMotion:502
MathMotionTemplate< LinearFunction > LinearMotion
Definition EaseMotion:482
MathMotionTemplate< InCubicFunction > InCubicMotion
Definition EaseMotion:491
MathMotionTemplate< InBounceFunction > InBounceMotion
Definition EaseMotion:501
MathMotionTemplate< InOutCubicFunction > InOutCubicMotion
Definition EaseMotion:492
MathMotionTemplate< InOutCircFunction > InOutCircMotion
Definition EaseMotion:522
MathMotionTemplate< InSineFunction > InSineMotion
Definition EaseMotion:511
MathMotionTemplate< OutBounceFunction > OutBounceMotion
Definition EaseMotion:500
MathMotionTemplate< InOutElasticFunction > InOutElasticMotion
Definition EaseMotion:507
MathMotionTemplate< InOutSineFunction > InOutSineMotion
Definition EaseMotion:512
MathMotionTemplate< InOutExpoFunction > InOutExpoMotion
Definition EaseMotion:527
MathMotionTemplate< OutBackFunction > OutBackMotion
Definition EaseMotion:515
MathMotionTemplate< InOutBackFunction > InOutBackMotion
Definition EaseMotion:517
MathMotionTemplate< OutSineFunction > OutSineMotion
Definition EaseMotion:510
MathMotionTemplate< OutElasticFunction > OutElasticMotion
Definition EaseMotion:505
MathMotionTemplate< InElasticFunction > InElasticMotion
Definition EaseMotion:506
MathMotionTemplate< InOutQuartFunction > InOutQuartMotion
Definition EaseMotion:497
MathMotionTemplate< OutCircFunction > OutCircMotion
Definition EaseMotion:520
MathMotionTemplate< InBackFunction > InBackMotion
Definition EaseMotion:516
Base class for providing reference counted objects.
Definition Referenced:44
static void getValueAt(float t, float &result)
Definition EaseMotion:28
static void getValueAt(float t, float &result)
Definition EaseMotion:54
static void getValueAt(float t, float &result)
Definition EaseMotion:63
Linear function.
Definition EaseMotion:80
static void getValueAt(float t, float &result)
Definition EaseMotion:81
Quad function.
Definition EaseMotion:86
static void getValueAt(float t, float &result)
Definition EaseMotion:87
static void getValueAt(float t, float &result)
Definition EaseMotion:92
static void getValueAt(float t, float &result)
Definition EaseMotion:97
Cubic function.
Definition EaseMotion:112
static void getValueAt(float t, float &result)
Definition EaseMotion:113
Definition EaseMotion:117
static void getValueAt(float t, float &result)
Definition EaseMotion:118
Definition EaseMotion:122
static void getValueAt(float t, float &result)
Definition EaseMotion:123
Quart function.
Definition EaseMotion:137
static void getValueAt(float t, float &result)
Definition EaseMotion:138
Definition EaseMotion:142
static void getValueAt(float t, float &result)
Definition EaseMotion:143
Definition EaseMotion:147
static void getValueAt(float t, float &result)
Definition EaseMotion:148
Elastic function.
Definition EaseMotion:163
static void getValueAt(float t, float &result)
Definition EaseMotion:164
Definition EaseMotion:171
static void getValueAt(float t, float &result)
Definition EaseMotion:172
Definition EaseMotion:180
static void getValueAt(float t, float &result)
Definition EaseMotion:181
Definition EaseMotion:199
static void getValueAt(float t, float &result)
Definition EaseMotion:200
Definition EaseMotion:207
static void getValueAt(float t, float &result)
Definition EaseMotion:208
Definition EaseMotion:215
static void getValueAt(float t, float &result)
Definition EaseMotion:216
Definition EaseMotion:224
static void getValueAt(float t, float &result)
Definition EaseMotion:225
Definition EaseMotion:233
static void getValueAt(float t, float &result)
Definition EaseMotion:234
Definition EaseMotion:241
static void getValueAt(float t, float &result)
Definition EaseMotion:242
Definition EaseMotion:260
static void getValueAt(float t, float &result)
Definition EaseMotion:261
Definition EaseMotion:269
static void getValueAt(float t, float &result)
Definition EaseMotion:270
Definition EaseMotion:277
static void getValueAt(float t, float &result)
Definition EaseMotion:278
Definition EaseMotion:295
static void getValueAt(float t, float &result)
Definition EaseMotion:296
Definition EaseMotion:310
static void getValueAt(float t, float &result)
Definition EaseMotion:311
Definition EaseMotion:325
static void getValueAt(float t, float &result)
Definition EaseMotion:326
value_type getValue() const
Definition EaseMotion:387
float _changeValue
Definition EaseMotion:412
float getDuration() const
Definition EaseMotion:408
void getValueAt(float time, value_type &result) const
Definition EaseMotion:394
float evaluateTime(float time) const
Definition EaseMotion:360
value_type getValueAt(float time) const
Definition EaseMotion:399
void reset()
Definition EaseMotion:358
TimeBehaviour _behaviour
Definition EaseMotion:414
float _duration
Definition EaseMotion:413
void update(float dt)
Definition EaseMotion:380
float _time
Definition EaseMotion:410
virtual ~Motion()
Definition EaseMotion:357
float value_type
Definition EaseMotion:350
void getValue(value_type &result) const
Definition EaseMotion:386
virtual void getValueInNormalizedRange(float t, value_type &result) const =0
float getTime() const
Definition EaseMotion:359
Motion(float startValue=0, float duration=1, float changeValue=1, TimeBehaviour tb=CLAMP)
Definition EaseMotion:356
TimeBehaviour
Definition EaseMotion:352
@ LOOP
Definition EaseMotion:354
@ CLAMP
Definition EaseMotion:353
void setTime(float time)
Definition EaseMotion:385
float _startValue
Definition EaseMotion:411
Definition EaseMotion:421
MathMotionTemplate(float startValue=0, float duration=1, float changeValue=1, TimeBehaviour tb=CLAMP)
Definition EaseMotion:422
virtual void getValueInNormalizedRange(float t, value_type &result) const
Definition EaseMotion:423
T & getSampler()
Definition EaseMotion:431
const T & getSampler() const
Definition EaseMotion:432
virtual void getValueInNormalizedRange(float t, value_type &result) const
Definition EaseMotion:433
SamplerMotionTemplate(float startValue=0, float duration=1, float changeValue=1, TimeBehaviour tb=CLAMP)
Definition EaseMotion:430
T _sampler
Definition EaseMotion:429
std::vector< osg::ref_ptr< Motion > > MotionList
Definition EaseMotion:448
MotionList & getMotionList()
Definition EaseMotion:451
CompositeMotion(float startValue=0, float duration=1, float changeValue=1, TimeBehaviour tb=CLAMP)
Definition EaseMotion:453
virtual void getValueInNormalizedRange(float t, value_type &result) const
Definition EaseMotion:455
MotionList _motions
Definition EaseMotion:449
const MotionList & getMotionList() const
Definition EaseMotion:452