1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | //"This can replace most of your basic linear interpolations - it's not extreme, but adds some nice smoothness to otherwise plain animation." //>>> "This is your go-to interpolation function" //From here: http://sol.gfxile.net/interpolation/ inline float SmoothStep(float position) { return (position * position * (3.0f - (2.0f * position))); } //"One rather handy algorithm, especially when you don't necessarily know how the target will behave in the future //(such as a camera tracking the player's character), is to apply weighted average to the value." //From here: http://sol.gfxile.net/interpolation/ // //The movement starts off fast, and rapidly decelerates as you approach the goal. //Technically, you never actually reach 1.0f. The higher 'slowdown' is, the slower you approach the goal. inline float WeightedAverage(float position, float slowdown = 15.0f) { return ((position * (slowdown - 1.0f)) + 1.0f) / slowdown; } //This doesn't actually effect the value at all. inline float LinearEase(float position) { return position; } |
Ly8iVGhpcyBjYW4gcmVwbGFjZSBtb3N0IG9mIHlvdXIgYmFzaWMgbGluZWFyIGludGVycG9sYXRpb25zIC0gaXQncyBub3QgZXh0cmVtZSwgYnV0IGFkZHMgc29tZSBuaWNlIHNtb290aG5lc3MgdG8gb3RoZXJ3aXNlIHBsYWluIGFuaW1hdGlvbi4iCi8vPj4+ICJUaGlzIGlzIHlvdXIgZ28tdG8gaW50ZXJwb2xhdGlvbiBmdW5jdGlvbiIKLy9Gcm9tIGhlcmU6IGh0dHA6Ly9zb2wuZ2Z4aWxlLm5ldC9pbnRlcnBvbGF0aW9uLwppbmxpbmUgZmxvYXQgU21vb3RoU3RlcChmbG9hdCBwb3NpdGlvbikKewogICAgcmV0dXJuIChwb3NpdGlvbiAqIHBvc2l0aW9uICogKDMuMGYgLSAoMi4wZiAqIHBvc2l0aW9uKSkpOwp9CgoKLy8iT25lIHJhdGhlciBoYW5keSBhbGdvcml0aG0sIGVzcGVjaWFsbHkgd2hlbiB5b3UgZG9uJ3QgbmVjZXNzYXJpbHkga25vdyBob3cgdGhlIHRhcmdldCB3aWxsIGJlaGF2ZSBpbiB0aGUgZnV0dXJlCi8vKHN1Y2ggYXMgYSBjYW1lcmEgdHJhY2tpbmcgdGhlIHBsYXllcidzIGNoYXJhY3RlciksIGlzIHRvIGFwcGx5IHdlaWdodGVkIGF2ZXJhZ2UgdG8gdGhlIHZhbHVlLiIKLy9Gcm9tIGhlcmU6IGh0dHA6Ly9zb2wuZ2Z4aWxlLm5ldC9pbnRlcnBvbGF0aW9uLwovLwovL1RoZSBtb3ZlbWVudCBzdGFydHMgb2ZmIGZhc3QsIGFuZCByYXBpZGx5IGRlY2VsZXJhdGVzIGFzIHlvdSBhcHByb2FjaCB0aGUgZ29hbC4KLy9UZWNobmljYWxseSwgeW91IG5ldmVyIGFjdHVhbGx5IHJlYWNoIDEuMGYuIFRoZSBoaWdoZXIgJ3Nsb3dkb3duJyBpcywgdGhlIHNsb3dlciB5b3UgYXBwcm9hY2ggdGhlIGdvYWwuCmlubGluZSBmbG9hdCBXZWlnaHRlZEF2ZXJhZ2UoZmxvYXQgcG9zaXRpb24sIGZsb2F0IHNsb3dkb3duID0gMTUuMGYpCnsKICAgIHJldHVybiAoKHBvc2l0aW9uICogKHNsb3dkb3duIC0gMS4wZikpICsgMS4wZikgLyBzbG93ZG93bjsgCn0KCi8vVGhpcyBkb2Vzbid0IGFjdHVhbGx5IGVmZmVjdCB0aGUgdmFsdWUgYXQgYWxsLgppbmxpbmUgZmxvYXQgTGluZWFyRWFzZShmbG9hdCBwb3NpdGlvbikKewogICAgcmV0dXJuIHBvc2l0aW9uOwp9


