Browse Source

Animation: added a collection of easing functions.

This was tremendous fun to make.
pull/297/head
Vladimír Vondruš 8 years ago
parent
commit
c98a936b41
  1. 9
      doc/changelog.dox
  2. 4
      doc/generated/CMakeLists.txt
  3. 390
      doc/generated/easings.cpp
  4. 99
      doc/snippets/MagnumAnimation.cpp
  5. 6
      doc/snippets/easings-backin-thumb.svg
  6. 8
      doc/snippets/easings-backin.svg
  7. 6
      doc/snippets/easings-backinout-thumb.svg
  8. 8
      doc/snippets/easings-backinout.svg
  9. 6
      doc/snippets/easings-backout-thumb.svg
  10. 8
      doc/snippets/easings-backout.svg
  11. 6
      doc/snippets/easings-bouncein-thumb.svg
  12. 8
      doc/snippets/easings-bouncein.svg
  13. 6
      doc/snippets/easings-bounceinout-thumb.svg
  14. 8
      doc/snippets/easings-bounceinout.svg
  15. 6
      doc/snippets/easings-bounceout-thumb.svg
  16. 8
      doc/snippets/easings-bounceout.svg
  17. 6
      doc/snippets/easings-circularin-thumb.svg
  18. 9
      doc/snippets/easings-circularin.svg
  19. 6
      doc/snippets/easings-circularinout-thumb.svg
  20. 9
      doc/snippets/easings-circularinout.svg
  21. 6
      doc/snippets/easings-circularout-thumb.svg
  22. 9
      doc/snippets/easings-circularout.svg
  23. 6
      doc/snippets/easings-cubicin-thumb.svg
  24. 14
      doc/snippets/easings-cubicin.svg
  25. 6
      doc/snippets/easings-cubicinout-thumb.svg
  26. 14
      doc/snippets/easings-cubicinout.svg
  27. 6
      doc/snippets/easings-cubicout-thumb.svg
  28. 14
      doc/snippets/easings-cubicout.svg
  29. 6
      doc/snippets/easings-elasticin-thumb.svg
  30. 8
      doc/snippets/easings-elasticin.svg
  31. 6
      doc/snippets/easings-elasticinout-thumb.svg
  32. 8
      doc/snippets/easings-elasticinout.svg
  33. 6
      doc/snippets/easings-elasticout-thumb.svg
  34. 8
      doc/snippets/easings-elasticout.svg
  35. 6
      doc/snippets/easings-exponentialin-thumb.svg
  36. 8
      doc/snippets/easings-exponentialin.svg
  37. 6
      doc/snippets/easings-exponentialinout-thumb.svg
  38. 8
      doc/snippets/easings-exponentialinout.svg
  39. 6
      doc/snippets/easings-exponentialout-thumb.svg
  40. 8
      doc/snippets/easings-exponentialout.svg
  41. 6
      doc/snippets/easings-linear-thumb.svg
  42. 11
      doc/snippets/easings-linear.svg
  43. 6
      doc/snippets/easings-quadraticin-thumb.svg
  44. 14
      doc/snippets/easings-quadraticin.svg
  45. 6
      doc/snippets/easings-quadraticinout-thumb.svg
  46. 14
      doc/snippets/easings-quadraticinout.svg
  47. 6
      doc/snippets/easings-quadraticout-thumb.svg
  48. 14
      doc/snippets/easings-quadraticout.svg
  49. 6
      doc/snippets/easings-quarticin-thumb.svg
  50. 11
      doc/snippets/easings-quarticin.svg
  51. 6
      doc/snippets/easings-quarticinout-thumb.svg
  52. 11
      doc/snippets/easings-quarticinout.svg
  53. 6
      doc/snippets/easings-quarticout-thumb.svg
  54. 11
      doc/snippets/easings-quarticout.svg
  55. 6
      doc/snippets/easings-quinticin-thumb.svg
  56. 11
      doc/snippets/easings-quinticin.svg
  57. 6
      doc/snippets/easings-quinticinout-thumb.svg
  58. 11
      doc/snippets/easings-quinticinout.svg
  59. 6
      doc/snippets/easings-quinticout-thumb.svg
  60. 11
      doc/snippets/easings-quinticout.svg
  61. 6
      doc/snippets/easings-sinein-thumb.svg
  62. 9
      doc/snippets/easings-sinein.svg
  63. 6
      doc/snippets/easings-sineinout-thumb.svg
  64. 9
      doc/snippets/easings-sineinout.svg
  65. 6
      doc/snippets/easings-sineout-thumb.svg
  66. 9
      doc/snippets/easings-sineout.svg
  67. 6
      doc/snippets/easings-smootherstep-thumb.svg
  68. 9
      doc/snippets/easings-smootherstep.svg
  69. 6
      doc/snippets/easings-smoothstep-thumb.svg
  70. 12
      doc/snippets/easings-smoothstep.svg
  71. 6
      doc/snippets/easings-step-thumb.svg
  72. 8
      doc/snippets/easings-step.svg
  73. 1
      src/Magnum/Animation/CMakeLists.txt
  74. 947
      src/Magnum/Animation/Easing.h
  75. 68
      src/Magnum/Animation/Interpolation.h
  76. 1
      src/Magnum/Animation/Test/CMakeLists.txt
  77. 289
      src/Magnum/Animation/Test/EasingTest.cpp
  78. 61
      src/Magnum/Animation/Test/InterpolationTest.cpp
  79. 4
      src/Magnum/Math/Packing.h

9
doc/changelog.dox

@ -40,6 +40,15 @@ See also:
@subsection changelog-latest-new New features @subsection changelog-latest-new New features
@subsubsection changelog-latest-new-animation Animation library
- New @ref Animation::Easing namespace with a collection of well-documented
easing functions
- New @ref Animation::ease(), @ref Animation::easeClamped(),
@ref Animation::unpack(), @ref Animation::unpackEase() and
@ref Animation::unpackEaseClamped() utilities for combining interpolators
with easing functions and/or unpackers
@subsubsection changelog-latest-new-math Math library @subsubsection changelog-latest-new-math Math library
- Support for using the @ref Math::Deg, @ref Math::Rad, @ref Math::Half, - Support for using the @ref Math::Deg, @ref Math::Rad, @ref Math::Half,

4
doc/generated/CMakeLists.txt

@ -46,6 +46,10 @@ else()
message(FATAL_ERROR "No windowless application available on this platform") message(FATAL_ERROR "No windowless application available on this platform")
endif() endif()
add_executable(easings easings.cpp)
target_link_libraries(easings
Magnum::Magnum)
add_executable(shaders shaders.cpp) add_executable(shaders shaders.cpp)
target_link_libraries(shaders target_link_libraries(shaders
Magnum::Magnum Magnum::Magnum

390
doc/generated/easings.cpp

@ -0,0 +1,390 @@
/*
This file is part of Magnum.
Copyright © 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018
Vladimír Vondruš <mosra@centrum.cz>
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
*/
/*
Generator for plots in the Easing namespace. Run the executable and it'll
generate a shitload of files in CWD. Copy these to doc/snippets/, replacing
the previous, and regenerate the docs using dox2html5.py.
Note that the SVGs are crafted for inline HTML, so they won't get
recognized by vector editors. Add the XML preamble
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
and the
xmlns="http://www.w3.org/2000/svg"
attribute to the <svg> element if you'd ever need that.
*/
#include <Corrade/Utility/Directory.h>
#include <Corrade/Utility/Format.h>
#include <Corrade/Utility/String.h>
#include "Magnum/Magnum.h"
#include "Magnum/Math/Bezier.h"
#include "Magnum/Math/Color.h"
#include "Magnum/Math/Range.h"
#include "Magnum/Animation/Easing.h"
using namespace Magnum;
using namespace Magnum::Math::Literals;
namespace {
constexpr Int Points = 96;
constexpr Int PointsOutside = 8;
constexpr Int EndMarkerSize = 12;
constexpr Int ExtraMargin = 32;
constexpr Vector2 Size{224, 128};
constexpr Vector2 Border{16, 16};
constexpr Int CircleRadius = 2;
constexpr Int ThumbPoints = 64;
constexpr Int ThumbEndMarkerSize = 8;
constexpr Vector2 ThumbSize{128, 128};
constexpr Vector2 ThumbBorder{0, 32};
void generateThumb(const std::string& file, Float(*function)(Float)) {
std::string out;
Range2D viewBox{{}, ThumbSize};
Range2D contentBox{ThumbBorder, ThumbSize - ThumbBorder};
Utility::formatInto(out, out.size(), R"(<svg class="m-image m-nopadb" style="width: {2}px; height: {3}px; margin-top: -16px; margin-bottom: -16px;" viewBox="{0} {1} {2} {3}">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M{4} {} L{} {} M{} {} L{} {}
M{} {} l{} {} M{} {} l{} {}"/>
<path fill="none" stroke="#dcdcdc" stroke-width="1.5" d=")",
viewBox.left(), viewBox.bottom(), viewBox.sizeX(), viewBox.sizeY(),
contentBox.left(), contentBox.bottom(), contentBox.right(), contentBox.bottom(),
contentBox.left(), contentBox.top(), contentBox.right(), contentBox.top(),
contentBox.left(), contentBox.top() - ThumbEndMarkerSize/2, 0, ThumbEndMarkerSize,
contentBox.right(), contentBox.bottom() - ThumbEndMarkerSize/2, 0, ThumbEndMarkerSize);
for(Int i = 0; i != ThumbPoints; ++i) {
const Vector2 point = Math::lerp(ThumbBorder, ThumbSize - ThumbBorder, Vector2{i/Float(ThumbPoints - 1), function(i/Float(ThumbPoints - 1))});
Utility::formatInto(out, out.size(), i ? " L{} {}" : "M{} {}", point.x(), ThumbSize.y() - point.y());
}
Utility::formatInto(out, out.size(), R"("/>
</svg>
)");
Utility::Directory::writeString("easings-" + file + "-thumb.svg", out);
}
void generate(const std::string& file, Float(*function)(Float), std::initializer_list<Float(*)(Float)> related = {}, const CubicBezier2D& bezier = {}, const Color3& colorBefore = 0xcd3431_srgbf, const Color3 colorAfter = 0xcd3431_srgbf, bool extraMargin = false) {
std::string out;
Vector2 size = Size;
Vector2 border = Border;
std::string extraStyle;
if(extraMargin) {
size.y() += 2*ExtraMargin;
border.y() += ExtraMargin;
extraStyle = " margin-top: -24px; margin-bottom: -8px;";
}
Range2D viewBox{{}, size};
Range2D contentBox{border, size - border};
/* Background, extrapolated points */
Utility::formatInto(out, out.size(), R"(<svg class="m-image" style="width: {2}px; height: {3}px;{4}" viewBox="{0} {1} {2} {3}">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M{5} {} L{} {} M{} {} L{} {}
M{} {} l{} {} M{} {} l{} {}"/>
<path fill="none" stroke="#{:.6x}" stroke-width="1.5" d=")",
viewBox.left(), viewBox.bottom(), viewBox.sizeX(), viewBox.sizeY(),
extraStyle,
contentBox.left(), contentBox.bottom(), contentBox.right(), contentBox.bottom(),
contentBox.left(), contentBox.top(), contentBox.right(), contentBox.top(),
contentBox.left(), contentBox.top() - EndMarkerSize/2, 0, EndMarkerSize,
contentBox.right(), contentBox.bottom() - EndMarkerSize/2, 0, EndMarkerSize,
colorBefore.toSrgbInt());
for(Int i = 1 - PointsOutside; i <= 0; ++i) {
const Vector2 point = Math::lerp(border, size - border, Vector2{i/Float(Points - 1), function(i/Float(Points - 1))});
Utility::formatInto(out, out.size(), i != 1 - PointsOutside ? " L{} {}" : "M{} {}", point.x(), size.y() - point.y());
}
Utility::formatInto(out, out.size(), R"("/>
<path fill="none" stroke="#{:.6x}" stroke-width="1.5" d=")",
colorAfter.toSrgbInt());
for(Int i = Points - 1; i < Points + PointsOutside - 1; ++i) {
const Vector2 point = Math::lerp(border, size - border, Vector2{i/Float(Points - 1), function(i/Float(Points - 1))});
Utility::formatInto(out, out.size(), i != Points - 1 ? " L{} {}" : "M{} {}", point.x(), size.y() - point.y());
}
Utility::formatInto(out, out.size(), R"("/>
)");
/* Related functions */
auto print = [&](const Color3& color, Float strokeWidth, Float(*function)(Float)) {
Utility::formatInto(out, out.size(), R"(<path fill="none" stroke="#{:.6x}" stroke-width="{}" d=")", color.toSrgbInt(), strokeWidth);
for(Int i = 0; i != Points; ++i) {
const Vector2 point = Math::lerp(border, size - border, Vector2{i/Float(Points - 1), function(i/Float(Points - 1))});
Utility::formatInto(out, out.size(), i ? " L{} {}" : "M{} {}", point.x(), size.y() - point.y());
}
Utility::formatInto(out, out.size(), R"("/>
)");
};
for(auto fn: related) print(0x747474_srgbf, 1.0f, fn);
/* Bezier representation, if any */
if(!bezier[3].isZero()) {
CubicBezier2D transformed{bezier[0]*contentBox.size() + border,
bezier[1]*contentBox.size() + border,
bezier[2]*contentBox.size() + border,
bezier[3]*contentBox.size() + border};
/* Handle end is slightly cut to make the circle nice */
const Vector2 end1 = transformed[1] - (transformed[1] - transformed[0]).resized(CircleRadius);
const Vector2 end2 = transformed[2] - (transformed[2] - transformed[3]).resized(CircleRadius);
/* Handles, handle points and the curve, all smashed togetherrrr so
we can reuse the data*/
Utility::formatInto(out, out.size(), R"(<path fill="none" stroke="#2f83cc" stroke-width="1.0" d="M{8} {9} L{0} {1} C{2} {3}, {4} {5}, {6} {7} L{10} {11}"/>
<circle cx="{2}" cy="{3}" r="2" stroke="#2f83cc" stroke-width="1.0" fill="none" />
<circle cx="{4}" cy="{5}" r="2" stroke="#2f83cc" stroke-width="1.0" fill="none" />
)",
transformed[0][0], size.y() - transformed[0][1],
transformed[1][0], size.y() - transformed[1][1],
transformed[2][0], size.y() - transformed[2][1],
transformed[3][0], size.y() - transformed[3][1],
end1.x(), size.y() - end1.y(),
end2.x(), size.y() - end2.y());
}
print(0xdcdcdc_srgbf, 1.75f, function);
Utility::formatInto(out, out.size(), R"(</svg>
)");
Utility::Directory::writeString("easings-" + file + ".svg", out);
generateThumb(file, function);
}
const Color3 danger = 0xcd3431_srgbf;
const Color3 success = 0x3bd267_srgbf;
}
/** @todo better bezier approximations for more complex curves, easings.net has it awful */
int main() {
using namespace Animation::Easing;
#define _c(name) Utility::String::lowercase(#name), name
generate(_c(linear), {},
/* [linear] */
CubicBezier2D{Vector2{0.0f}, Vector2{1.0f/3.0f},
Vector2{2.0f/3.0f}, Vector2{1.0f}}
/* [linear] */
, success, success);
generate(_c(step), {}, {}, success, success);
generate(_c(smoothstep), {smootherstep},
/* [smoothstep] */
CubicBezier2D{Vector2{0.0f}, Vector2{1.0f/3.0f, 0.0f},
Vector2{2.0f/3.0f, 1.0f}, Vector2{1.0f}}
/* [smoothstep] */
, success, success);
generate(_c(smootherstep), {smoothstep}, {}, success, success);
generate(_c(quadraticIn), {cubicIn, quarticIn, quinticIn},
/* [quadraticIn] */
CubicBezier2D{Vector2{0.0f}, Vector2{1.0f/3.0f, 0.0f},
Vector2{2.0f/3.0f, 1.0f/3.0f}, Vector2{1.0f}}
/* [quadraticIn] */
, danger, success);
generate(_c(quadraticOut), {cubicOut, quarticOut, quinticOut},
/* [quadraticOut] */
CubicBezier2D{Vector2{0.0f}, Vector2{1.0f/3.0f, 2.0f/3.0f},
Vector2{2.0f/3.0f, 1.0f}, Vector2{1.0f}}
/* [quadraticOut] */
, success, danger);
generate(_c(quadraticInOut), {cubicInOut, quarticInOut, quinticInOut},
/* [quadraticInOut] */
CubicBezier2D{Vector2{0.0f}, Vector2{0.455f, 0.0f},
Vector2{0.545f, 1.0f}, Vector2{1.0f}}
/* [quadraticInOut] */
);
generate(_c(cubicIn), {quadraticIn, quarticIn, quinticIn},
/* [cubicIn] */
CubicBezier2D{Vector2{0.0f}, Vector2{1.0f/3.0f, 0.0f},
Vector2{2.0f/3.0f, 0.0f}, Vector2{1.0f}}
/* [cubicIn] */
, danger, success);
generate(_c(cubicOut), {quadraticOut, quarticOut, quinticOut},
/* [cubicOut] */
CubicBezier2D{Vector2{0.0f}, Vector2{1.0f/3.0f, 1.0f},
Vector2{2.0f/3.0f, 1.0f}, Vector2{1.0f}}
/* [cubicOut] */
, success, danger);
generate(_c(cubicInOut), {quadraticInOut, quarticInOut, quinticInOut},
/* [cubicInOut] */
CubicBezier2D{Vector2{0.0f}, Vector2{0.645f, 0.0f},
Vector2{0.355f, 1.0f}, Vector2{1.0f}}
/* [cubicInOut] */
);
generate(_c(quarticIn), {quadraticIn, cubicIn, quinticIn}, {}
// ,
// /* [quarticIn] */
// CubicBezier2D{Vector2{0.0f}, Vector2{0.895f, 0.03f},
// Vector2{0.685f, 0.22f}, Vector2{1.0f}}
// /* [quarticIn] */
, danger, success);
generate(_c(quarticOut), {quadraticOut, cubicOut, quinticOut}, {}
// ,
// /* [quarticOut] */
// CubicBezier2D{Vector2{0.0f}, Vector2{0.165f, 0.84f},
// Vector2{0.44f, 1.0f}, Vector2{1.0f}}
// /* [quarticOut] */
, success, danger);
generate(_c(quarticInOut), {quadraticInOut, cubicInOut, quinticInOut}
// ,
// /* [quarticInOut] */
// CubicBezier2D{Vector2{0.0f}, Vector2{0.77f, 0.0f},
// Vector2{0.175f, 1.0f}, Vector2{1.0f}}
// /* [quarticInOut] */
);
generate(_c(quinticIn), {quadraticIn, cubicIn, quarticIn}, {}
// ,
// /* [quinticIn] */
// CubicBezier2D{Vector2{0.0f}, Vector2{0.755f, 0.05f},
// Vector2{0.855f, 0.06f}, Vector2{1.0f}}
// /* [quinticIn] */
, danger, success);
generate(_c(quinticOut), {quadraticOut, cubicOut, quarticOut}, {}
// ,
// /* [quinticOut] */
// CubicBezier2D{Vector2{0.0f}, Vector2{0.23f, 1.0f},
// Vector2{0.32f, 1.0f}, Vector2{1.0f}}
// /* [quinticOut] */
, success, danger);
generate(_c(quinticInOut), {quadraticInOut, cubicInOut, quarticInOut}
// ,
// /* [quinticInOut] */
// CubicBezier2D{Vector2{0.0f}, Vector2{0.86f, 0.0f},
// Vector2{0.07f, 1.0f}, Vector2{1.0f}}
// /* [quinticInOut] */
);
generate(_c(sineIn), {circularIn}
// ,
// /* [sineIn] */
// CubicBezier2D{Vector2{0.0f}, Vector2{0.47f, 0.0f},
// Vector2{0.745f, 0.715f}, Vector2{1.0f}}
// /* [sineIn] */
);
generate(_c(sineOut), {circularOut}
// ,
// /* [sineOut] */
// CubicBezier2D{Vector2{0.0f}, Vector2{0.39f, 0.575f},
// Vector2{0.565f, 1.0f}, Vector2{1.0f}}
// /* [sineOut] */
);
generate(_c(sineInOut), {circularInOut}
// ,
// /* [sineInOut] */
// CubicBezier2D{Vector2{0.0f}, Vector2{0.445f, 0.05f},
// Vector2{0.55f, 0.95f}, Vector2{1.0f}}
// /* [sineInOut] */
);
generate(_c(circularIn), {sineIn}
// ,
// /* [circularIn] */
// CubicBezier2D{Vector2{0.0f}, Vector2{0.6f, 0.04f},
// Vector2{0.98f, 0.335f}, Vector2{1.0f}}
// /* [circularIn] */
);
generate(_c(circularOut), {sineOut}
// ,
// /* [circularOut] */
// CubicBezier2D{Vector2{0.0f}, Vector2{0.075f, 0.085f},
// Vector2{0.165f, 1.0f}, Vector2{1.0f}}
// /* [circularOut] */
);
generate(_c(circularInOut), {sineInOut}
// ,
// /* [circularInOut] */
// CubicBezier2D{Vector2{0.0f}, Vector2{0.785f, 0.135f},
// Vector2{0.15f, 0.86f}, Vector2{1.0f}}
// /* [circularInOut] */
);
generate(_c(exponentialIn), {}, {}
// ,
// /* [exponentialIn] */
// CubicBezier2D{Vector2{0.0f}, Vector2{0.95f, 0.05f},
// Vector2{0.795f, 0.035f}, Vector2{1.0f}}
// /* [exponentialIn] */
, success, success);
generate(_c(exponentialOut), {}, {}
// ,
// /* [exponentialOut] */
// CubicBezier2D{Vector2{0.0f}, Vector2{0.19f, 1.0f},
// Vector2{0.22f, 1.0f}, Vector2{1.0f}}
// /* [exponentialOut] */
, success, success);
generate(_c(exponentialInOut), {}, {}
// ,
// /* [exponentialInOut] */
// CubicBezier2D{Vector2{0.0f}, Vector2{1.0f, 0.0f},
// Vector2{0.0f, 1.0f}, Vector2{1.0f}}
// /* [exponentialInOut] */
, success, success);
generate(_c(elasticIn), {}, {}, success, danger, true);
generate(_c(elasticOut), {}, {}, danger, success, true);
generate(_c(elasticInOut), {}, {}, success, success, true);
generate(_c(backIn), {}, {}
// ,
// /* [backIn] */
// CubicBezier2D{Vector2{0.0f}, Vector2{0.6f, -0.28f},
// Vector2{0.735f, 0.045f}, Vector2{1.0f}}
// /* [backIn] */
, danger, danger, true);
generate(_c(backOut), {}, {}
// ,
// /* [backOut] */
// CubicBezier2D{Vector2{0.0f}, Vector2{0.175f, 0.885f},
// Vector2{0.32f, 1.275f}, Vector2{1.0f}}
// /* [backOut] */
, danger, danger, true);
generate(_c(backInOut), {}, {}
// ,
// /* [backInOut] */
// CubicBezier2D{Vector2{0.0f}, Vector2{0.68f, -0.55f},
// Vector2{0.265f, 1.55f}, Vector2{1.0f}}
// /* [backInOut] */
, danger, danger, true);
generate(_c(bounceIn));
generate(_c(bounceOut));
generate(_c(bounceInOut));
#undef _c
}

99
doc/snippets/MagnumAnimation.cpp

@ -24,7 +24,11 @@
*/ */
#include "Magnum/Timeline.h" #include "Magnum/Timeline.h"
#include "Magnum/Math/Bezier.h"
#include "Magnum/Math/Matrix3.h"
#include "Magnum/Math/Quaternion.h" #include "Magnum/Math/Quaternion.h"
#include "Magnum/Math/Packing.h"
#include "Magnum/Animation/Easing.h"
#include "Magnum/Animation/Player.h" #include "Magnum/Animation/Player.h"
using namespace Magnum; using namespace Magnum;
@ -32,6 +36,101 @@ using namespace Magnum::Math::Literals;
int main() { int main() {
{
Vector3 a, b;
Float t{};
{
/* [ease] */
auto lerpBounceIn =
Animation::ease<Vector3, Math::lerp, Animation::Easing::bounceIn>();
Vector3 result1 = Math::lerp(a, b, Animation::Easing::bounceIn(t));
Vector3 result2 = lerpBounceIn (a, b, t);
/* [ease] */
static_cast<void>(result1);
static_cast<void>(result2);
}
{
/* [unpack] */
UnsignedShort a, b;
auto lerpPacked =
Animation::unpack<UnsignedShort, Float, Math::lerp, Math::unpack<Float>>();
Float result1 = Math::lerp(Math::unpack<Float>(a), Math::unpack<Float>(b), t);
Float result2 = lerpPacked(a, b, t);
/* [unpack] */
static_cast<void>(result1);
static_cast<void>(result2);
}
{
/* [unpackEase] */
UnsignedShort a, b;
auto lerpPackedBounceIn = Animation::unpackEase<UnsignedShort, Float,
Math::lerp, Math::unpack<Float>, Animation::Easing::bounceIn>();
Float result1 = Math::lerp(Math::unpack<Float>(a), Math::unpack<Float>(b),
Animation::Easing::bounceIn(t));
Float result2 = lerpPackedBounceIn(a, b, t);
/* [unpackEase] */
static_cast<void>(result1);
static_cast<void>(result2);
}
}
{
Vector3 a, b;
Float t{};
{
/* [Easing-factor] */
Vector3 result = Math::lerp(a, b, Animation::Easing::quadraticInOut(t));
/* [Easing-factor] */
static_cast<void>(result);
}
{
/* [Easing-ease] */
auto lerpQuadraticInOut =
Animation::ease<Vector3, Math::lerp, Animation::Easing::quadraticInOut>();
Vector3 result = lerpQuadraticInOut(a, b, t);
/* [Easing-ease] */
static_cast<void>(result);
}
{
/* [Easing-clamp] */
auto lerpCircularOutClamped = Animation::easeClamped<
Vector3, Math::lerp, Animation::Easing::quadraticInOut>();
Vector3 result1 = Math::lerp(a, b,
Math::clamp(0.0f, 1.0f, Animation::Easing::circularOut(t)));
Vector3 result2 = lerpCircularOutClamped(a, b, t);
/* [Easing-clamp] */
static_cast<void>(result1);
static_cast<void>(result2);
}
{
/* [Easing-bezier-transform] */
Matrix3 transformation;
CubicBezier2D easing;
CubicBezier2D transformed{
transformation.transformPoint(easing[0]),
transformation.transformPoint(easing[1]),
transformation.transformPoint(easing[2]),
transformation.transformPoint(easing[3])};
/* [Easing-bezier-transform] */
}
{
/* [Easing-smoothstep] */
Math::lerp(a, b, Animation::Easing::smoothstep(t));
/* [Easing-smoothstep] */
}
}
{ {
/* [Player-usage] */ /* [Player-usage] */
const Animation::TrackView<Float, Vector3> translation; const Animation::TrackView<Float, Vector3> translation;

6
doc/snippets/easings-backin-thumb.svg

@ -0,0 +1,6 @@
<svg class="m-image m-nopadb" style="width: 128px; height: 128px; margin-top: -16px; margin-bottom: -16px;" viewBox="0 0 128 128">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M0 32 L128 32 M0 96 L128 96
M0 92 l0 8 M128 28 l0 8"/>
<path fill="none" stroke="#dcdcdc" stroke-width="1.5" d="M0 96 L2.03175 96.0504 L4.06349 96.2002 L6.09524 96.4473 L8.12698 96.7888 L10.1587 97.2214 L12.1905 97.7413 L14.2222 98.3444 L16.254 99.0258 L18.2857 99.7803 L20.3175 100.603 L22.3492 101.486 L24.381 102.425 L26.4127 103.412 L28.4444 104.44 L30.4762 105.501 L32.5079 106.587 L34.5397 107.691 L36.5714 108.804 L38.6032 109.916 L40.6349 111.02 L42.6667 112.105 L44.6984 113.163 L46.7302 114.183 L48.7619 115.157 L50.7937 116.075 L52.8254 116.927 L54.8571 117.703 L56.8889 118.394 L58.9206 118.989 L60.9524 119.48 L62.9841 119.857 L65.0159 120.111 L67.0476 120.232 L69.0794 120.212 L71.1111 120.041 L73.1429 119.713 L75.1746 119.218 L77.2064 118.548 L79.2381 117.698 L81.2698 116.658 L83.3016 115.423 L85.3333 113.987 L87.3651 112.344 L89.3968 110.489 L91.4286 108.417 L93.4603 106.124 L95.4921 103.606 L97.5238 100.86 L99.5556 97.884 L101.587 94.6754 L103.619 91.2331 L105.651 87.5561 L107.683 83.6445 L109.714 79.4984 L111.746 75.119 L113.778 70.5079 L115.81 65.6672 L117.841 60.5998 L119.873 55.309 L121.905 49.7989 L123.937 44.0738 L125.968 38.139 L128 32"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

8
doc/snippets/easings-backin.svg

@ -0,0 +1,8 @@
<svg class="m-image" style="width: 224px; height: 192px; margin-top: -24px; margin-bottom: -8px;" viewBox="0 0 224 192">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M16 48 L208 48 M16 144 L208 144
M16 138 l0 12 M208 42 l0 12"/>
<path fill="none" stroke="#cd3330" stroke-width="1.5" d="M1.85263 145.661 L3.87368 145.219 L5.89474 144.846 L7.91579 144.54 L9.93684 144.303 L11.9579 144.134 L13.9789 144.034 L16 144"/>
<path fill="none" stroke="#cd3330" stroke-width="1.5" d="M208 48 L210.021 41.7289 L212.042 35.33 L214.063 28.8064 L216.084 22.1611 L218.105 15.3976 L220.126 8.51913 L222.147 1.5293"/>
<path fill="none" stroke="#dcdcdc" stroke-width="1.75" d="M16 144 L18.0211 144.033 L20.0421 144.133 L22.0632 144.297 L24.0842 144.526 L26.1053 144.818 L28.1263 145.171 L30.1474 145.584 L32.1684 146.057 L34.1895 146.585 L36.2105 147.169 L38.2316 147.806 L40.2526 148.493 L42.2737 149.229 L44.2947 150.011 L46.3158 150.836 L48.3368 151.703 L50.3579 152.607 L52.3789 153.546 L54.4 154.517 L56.4211 155.518 L58.4421 156.544 L60.4632 157.592 L62.4842 158.66 L64.5053 159.743 L66.5263 160.837 L68.5474 161.94 L70.5684 163.047 L72.5895 164.155 L74.6105 165.259 L76.6316 166.356 L78.6526 167.442 L80.6737 168.512 L82.6947 169.563 L84.7158 170.59 L86.7368 171.589 L88.7579 172.556 L90.7789 173.486 L92.8 174.377 L94.8211 175.222 L96.8421 176.018 L98.8632 176.761 L100.884 177.446 L102.905 178.07 L104.926 178.628 L106.947 179.115 L108.968 179.528 L110.989 179.863 L113.011 180.116 L115.032 180.282 L117.053 180.358 L119.074 180.339 L121.095 180.223 L123.116 180.005 L125.137 179.681 L127.158 179.249 L129.179 178.705 L131.2 178.045 L133.221 177.266 L135.242 176.365 L137.263 175.339 L139.284 174.186 L141.305 172.901 L143.326 171.484 L145.347 169.93 L147.368 168.239 L149.389 166.407 L151.411 164.433 L153.432 162.314 L155.453 160.05 L157.474 157.637 L159.495 155.076 L161.516 152.363 L163.537 149.5 L165.558 146.483 L167.579 143.314 L169.6 139.99 L171.621 136.512 L173.642 132.879 L175.663 129.091 L177.684 125.148 L179.705 121.051 L181.726 116.799 L183.747 112.394 L185.768 107.836 L187.789 103.127 L189.811 98.266 L191.832 93.2558 L193.853 88.0976 L195.874 82.7929 L197.895 77.3435 L199.916 71.7514 L201.937 66.0187 L203.958 60.1476 L205.979 54.1404 L208 48"/>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

6
doc/snippets/easings-backinout-thumb.svg

@ -0,0 +1,6 @@
<svg class="m-image m-nopadb" style="width: 128px; height: 128px; margin-top: -16px; margin-bottom: -16px;" viewBox="0 0 128 128">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M0 32 L128 32 M0 96 L128 96
M0 92 l0 8 M128 28 l0 8"/>
<path fill="none" stroke="#dcdcdc" stroke-width="1.5" d="M0 96 L2.03175 96.1001 L4.06349 96.3944 L6.09524 96.8707 L8.12698 97.5129 L10.1587 98.3012 L12.1905 99.2124 L14.2222 100.22 L16.254 101.294 L18.2857 102.402 L20.3175 103.51 L22.3492 104.581 L24.381 105.579 L26.4127 106.463 L28.4444 107.197 L30.4762 107.74 L32.5079 108.055 L34.5397 108.106 L36.5714 107.856 L38.6032 107.274 L40.6349 106.329 L42.6667 104.994 L44.6984 103.245 L46.7302 101.062 L48.7619 98.4301 L50.7937 95.3377 L52.8254 91.7781 L54.8571 87.7492 L56.8889 83.254 L58.9206 78.2999 L60.9524 72.8994 L62.9841 67.0695 L65.0159 60.9305 L67.0476 55.1006 L69.0794 49.7001 L71.1111 44.746 L73.1429 40.2508 L75.1746 36.2219 L77.2064 32.6623 L79.2381 29.5699 L81.2698 26.938 L83.3016 24.7553 L85.3333 23.0063 L87.3651 21.671 L89.3968 20.7258 L91.4286 20.1436 L93.4603 19.8941 L95.4921 19.9446 L97.5238 20.2599 L99.5556 20.8032 L101.587 21.5365 L103.619 22.4213 L105.651 23.4187 L107.683 24.4902 L109.714 25.5982 L111.746 26.7063 L113.778 27.7802 L115.81 28.7876 L117.841 29.6987 L119.873 30.4871 L121.905 31.1293 L123.937 31.6056 L125.968 31.8999 L128 32"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

8
doc/snippets/easings-backinout.svg

@ -0,0 +1,8 @@
<svg class="m-image" style="width: 224px; height: 192px; margin-top: -24px; margin-bottom: -8px;" viewBox="0 0 224 192">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M16 48 L208 48 M16 144 L208 144
M16 138 l0 12 M208 42 l0 12"/>
<path fill="none" stroke="#cd3330" stroke-width="1.5" d="M1.85263 147.313 L3.87368 146.44 L5.89474 145.697 L7.91579 145.086 L9.93684 144.61 L11.9579 144.27 L13.9789 144.067 L16 144"/>
<path fill="none" stroke="#cd3330" stroke-width="1.5" d="M208 48 L210.021 47.9328 L212.042 47.7299 L214.063 47.3903 L216.084 46.9144 L218.105 46.3034 L220.126 45.5599 L222.147 44.6872"/>
<path fill="none" stroke="#dcdcdc" stroke-width="1.75" d="M16 144 L18.0211 144.066 L20.0421 144.263 L22.0632 144.585 L24.0842 145.028 L26.1053 145.585 L28.1263 146.247 L30.1474 147.006 L32.1684 147.851 L34.1895 148.773 L36.2105 149.759 L38.2316 150.796 L40.2526 151.871 L42.2737 152.97 L44.2947 154.077 L46.3158 155.178 L48.3368 156.256 L50.3579 157.295 L52.3789 158.278 L54.4 159.188 L56.4211 160.009 L58.4421 160.723 L60.4632 161.314 L62.4842 161.764 L64.5053 162.058 L66.5263 162.179 L68.5474 162.111 L70.5684 161.841 L72.5895 161.352 L74.6105 160.633 L76.6316 159.67 L78.6526 158.451 L80.6737 156.965 L82.6947 155.204 L84.7158 153.157 L86.7368 150.819 L88.7579 148.182 L90.7789 145.242 L92.8 141.995 L94.8211 138.439 L96.8421 134.574 L98.8632 130.4 L100.884 125.918 L102.905 121.133 L104.926 116.049 L106.947 110.672 L108.968 105.009 L110.989 99.0702 L113.011 92.9298 L115.032 86.9907 L117.053 81.3282 L119.074 75.9512 L121.095 70.867 L123.116 66.0818 L125.137 61.6003 L127.158 57.4259 L129.179 53.5607 L131.2 50.005 L133.221 46.7583 L135.242 43.8183 L137.263 41.1814 L139.284 38.8428 L141.305 36.7964 L143.326 35.0348 L145.347 33.5493 L147.368 32.3304 L149.389 31.367 L151.411 30.6476 L153.432 30.1593 L155.453 29.8886 L157.474 29.8212 L159.495 29.9422 L161.516 30.2358 L163.537 30.6862 L165.558 31.2768 L167.579 31.9909 L169.6 32.8117 L171.621 33.7221 L173.642 34.7052 L175.663 35.744 L177.684 36.8219 L179.705 37.9226 L181.726 39.03 L183.747 40.1287 L185.768 41.2039 L187.789 42.2411 L189.811 43.227 L191.832 44.1487 L193.853 44.9944 L195.874 45.7533 L197.895 46.4154 L199.916 46.9717 L201.937 47.4145 L203.958 47.737 L205.979 47.9337 L208 48"/>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

6
doc/snippets/easings-backout-thumb.svg

@ -0,0 +1,6 @@
<svg class="m-image m-nopadb" style="width: 128px; height: 128px; margin-top: -16px; margin-bottom: -16px;" viewBox="0 0 128 128">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M0 32 L128 32 M0 96 L128 96
M0 92 l0 8 M128 28 l0 8"/>
<path fill="none" stroke="#dcdcdc" stroke-width="1.5" d="M0 96 L2.03175 89.861 L4.06349 83.9262 L6.09524 78.2011 L8.12698 72.691 L10.1587 67.4002 L12.1905 62.3328 L14.2222 57.4921 L16.254 52.881 L18.2857 48.5016 L20.3175 44.3556 L22.3492 40.4439 L24.381 36.7669 L26.4127 33.3246 L28.4444 30.116 L30.4762 27.1397 L32.5079 24.3939 L34.5397 21.8759 L36.5714 19.5827 L38.6032 17.5107 L40.6349 15.6555 L42.6667 14.0125 L44.6984 12.5766 L46.7302 11.3419 L48.7619 10.3025 L50.7937 9.45158 L52.8254 8.78229 L54.8571 8.28719 L56.8889 7.95854 L58.9206 7.78831 L60.9524 7.76808 L62.9841 7.88921 L65.0159 8.14279 L67.0476 8.51974 L69.0794 9.01072 L71.1111 9.60634 L73.1429 10.297 L75.1746 11.0731 L77.2064 11.9249 L79.2381 12.8427 L81.2698 13.8168 L83.3016 14.8374 L85.3333 15.8952 L87.3651 16.9804 L89.3968 18.0839 L91.4286 19.1964 L93.4603 20.3089 L95.4921 21.4127 L97.5238 22.4993 L99.5556 23.5605 L101.587 24.5883 L103.619 25.5751 L105.651 26.5138 L107.683 27.3975 L109.714 28.2197 L111.746 28.9742 L113.778 29.6557 L115.81 30.2587 L117.841 30.7786 L119.873 31.2112 L121.905 31.5527 L123.937 31.7998 L125.968 31.9496 L128 32"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

8
doc/snippets/easings-backout.svg

@ -0,0 +1,8 @@
<svg class="m-image" style="width: 224px; height: 192px; margin-top: -24px; margin-bottom: -8px;" viewBox="0 0 224 192">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M16 48 L208 48 M16 144 L208 144
M16 138 l0 12 M208 42 l0 12"/>
<path fill="none" stroke="#cd3330" stroke-width="1.5" d="M1.85263 190.471 L3.87368 183.481 L5.89474 176.602 L7.91579 169.839 L9.93684 163.194 L11.9579 156.67 L13.9789 150.271 L16 144"/>
<path fill="none" stroke="#cd3330" stroke-width="1.5" d="M208 48 L210.021 47.9665 L212.042 47.8655 L214.063 47.6967 L216.084 47.4597 L218.105 47.1544 L220.126 46.7807 L222.147 46.3387"/>
<path fill="none" stroke="#dcdcdc" stroke-width="1.75" d="M16 144 L18.0211 137.86 L20.0421 131.852 L22.0632 125.981 L24.0842 120.249 L26.1053 114.656 L28.1263 109.207 L30.1474 103.902 L32.1684 98.7442 L34.1895 93.734 L36.2105 88.8734 L38.2316 84.1636 L40.2526 79.6057 L42.2737 75.2006 L44.2947 70.9492 L46.3158 66.8519 L48.3368 62.9092 L50.3579 59.1213 L52.3789 55.4883 L54.4 52.0101 L56.4211 48.6863 L58.4421 45.5166 L60.4632 42.5003 L62.4842 39.6366 L64.5053 36.9245 L66.5263 34.3628 L68.5474 31.9504 L70.5684 29.6857 L72.5895 27.5671 L74.6105 25.5929 L76.6316 23.7611 L78.6526 22.0696 L80.6737 20.5162 L82.6947 19.0987 L84.7158 17.8143 L86.7368 16.6607 L88.7579 15.6348 L90.7789 14.734 L92.8 13.9551 L94.8211 13.2951 L96.8421 12.7507 L98.8632 12.3186 L100.884 11.9953 L102.905 11.7772 L104.926 11.6609 L106.947 11.6425 L108.968 11.7182 L110.989 11.8843 L113.011 12.1368 L115.032 12.4716 L117.053 12.8849 L119.074 13.3724 L121.095 13.93 L123.116 14.5536 L125.137 15.239 L127.158 15.9819 L129.179 16.7781 L131.2 17.6234 L133.221 18.5135 L135.242 19.4442 L137.263 20.4112 L139.284 21.4103 L141.305 22.4373 L143.326 23.488 L145.347 24.5582 L147.368 25.6438 L149.389 26.7408 L151.411 27.8451 L153.432 28.9529 L155.453 30.06 L157.474 31.1628 L159.495 32.2575 L161.516 33.3403 L163.537 34.4077 L165.558 35.4561 L167.579 36.4822 L169.6 37.4825 L171.621 38.4539 L173.642 39.3932 L175.663 40.2974 L177.684 41.1635 L179.705 41.9889 L181.726 42.7708 L183.747 43.5067 L185.768 44.1941 L187.789 44.8308 L189.811 45.4146 L191.832 45.9435 L193.853 46.4155 L195.874 46.829 L197.895 47.1824 L199.916 47.474 L201.937 47.7028 L203.958 47.8673 L205.979 47.9667 L208 48"/>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

6
doc/snippets/easings-bouncein-thumb.svg

@ -0,0 +1,6 @@
<svg class="m-image m-nopadb" style="width: 128px; height: 128px; margin-top: -16px; margin-bottom: -16px;" viewBox="0 0 128 128">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M0 32 L128 32 M0 96 L128 96
M0 92 l0 8 M128 28 l0 8"/>
<path fill="none" stroke="#dcdcdc" stroke-width="1.5" d="M0 96 L2.03175 95.077 L4.06349 94.5023 L6.09524 94.2759 L8.12698 94.3978 L10.1587 94.868 L12.1905 95.6866 L14.2222 94.6131 L16.254 92.9628 L18.2857 91.7017 L20.3175 90.8296 L22.3492 90.3467 L24.381 90.253 L26.4127 90.5483 L28.4444 91.2329 L30.4762 92.3066 L32.5079 93.7695 L34.5397 95.6215 L36.5714 93.3551 L38.6032 90.3885 L40.6349 87.7146 L42.6667 85.3333 L44.6984 83.2448 L46.7302 81.4488 L48.7619 79.9456 L50.7937 78.735 L52.8254 77.8171 L54.8571 77.1919 L56.8889 76.8593 L58.9206 76.8194 L60.9524 77.0721 L62.9841 77.6175 L65.0159 78.4557 L67.0476 79.5864 L69.0794 81.0099 L71.1111 82.7259 L73.1429 84.7347 L75.1746 87.0361 L77.2064 89.6302 L79.2381 92.517 L81.2698 95.6965 L83.3016 91.0214 L85.3333 85.7778 L87.3651 80.778 L89.3968 76.0222 L91.4286 71.5102 L93.4603 67.2421 L95.4921 63.2179 L97.5238 59.4376 L99.5556 55.9012 L101.587 52.6087 L103.619 49.5601 L105.651 46.7553 L107.683 44.1945 L109.714 41.8775 L111.746 39.8045 L113.778 37.9753 L115.81 36.39 L117.841 35.0486 L119.873 33.9511 L121.905 33.0975 L123.937 32.4878 L125.968 32.1219 L128 32"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

8
doc/snippets/easings-bouncein.svg

@ -0,0 +1,8 @@
<svg class="m-image" style="width: 224px; height: 128px;" viewBox="0 0 224 128">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M16 16 L208 16 M16 112 L208 112
M16 106 l0 12 M208 10 l0 12"/>
<path fill="none" stroke="#cd3330" stroke-width="1.5" d="M1.85263 125.269 L3.87368 122.684 L5.89474 120.329 L7.91579 118.204 L9.93684 116.308 L11.9579 114.642 L13.9789 113.206 L16 112"/>
<path fill="none" stroke="#cd3330" stroke-width="1.5" d="M208 16 L210.021 16.0804 L212.042 16.3218 L214.063 16.724 L216.084 17.2871 L218.105 18.0111 L220.126 18.896 L222.147 19.9417"/>
<path fill="none" stroke="#dcdcdc" stroke-width="1.75" d="M16 112 L18.0211 111.023 L20.0421 110.277 L22.0632 109.76 L24.0842 109.473 L26.1053 109.415 L28.1263 109.587 L30.1474 109.99 L32.1684 110.621 L34.1895 111.483 L36.2105 110.979 L38.2316 109.129 L40.2526 107.537 L42.2737 106.201 L44.2947 105.121 L46.3158 104.299 L48.3368 103.733 L50.3579 103.424 L52.3789 103.371 L54.4 103.575 L56.4211 104.036 L58.4421 104.754 L60.4632 105.728 L62.4842 106.959 L64.5053 108.447 L66.5263 110.191 L68.5474 111.698 L70.5684 108.477 L72.5895 105.449 L74.6105 102.615 L76.6316 99.9734 L78.6526 97.5251 L80.6737 95.2697 L82.6947 93.2074 L84.7158 91.3382 L86.7368 89.6621 L88.7579 88.179 L90.7789 86.889 L92.8 85.792 L94.8211 84.8881 L96.8421 84.1773 L98.8632 83.6595 L100.884 83.3348 L102.905 83.2032 L104.926 83.2646 L106.947 83.5191 L108.968 83.9667 L110.989 84.6073 L113.011 85.441 L115.032 86.4677 L117.053 87.6876 L119.074 89.1005 L121.095 90.7064 L123.116 92.5054 L125.137 94.4975 L127.158 96.6826 L129.179 99.0608 L131.2 101.632 L133.221 104.396 L135.242 107.354 L137.263 110.504 L139.284 108.992 L141.305 103.603 L143.326 98.3739 L145.347 93.3059 L147.368 88.3989 L149.389 83.6527 L151.411 79.0675 L153.432 74.6431 L155.453 70.3796 L157.474 66.277 L159.495 62.3353 L161.516 58.5545 L163.537 54.9345 L165.558 51.4755 L167.579 48.1773 L169.6 45.04 L171.621 42.0636 L173.642 39.2481 L175.663 36.5935 L177.684 34.0997 L179.705 31.7669 L181.726 29.5949 L183.747 27.5838 L185.768 25.7336 L187.789 24.0443 L189.811 22.5159 L191.832 21.1484 L193.853 19.9417 L195.874 18.896 L197.895 18.0111 L199.916 17.2871 L201.937 16.724 L203.958 16.3218 L205.979 16.0804 L208 16"/>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

6
doc/snippets/easings-bounceinout-thumb.svg

@ -0,0 +1,6 @@
<svg class="m-image m-nopadb" style="width: 128px; height: 128px; margin-top: -16px; margin-bottom: -16px;" viewBox="0 0 128 128">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M0 32 L128 32 M0 96 L128 96
M0 92 l0 8 M128 28 l0 8"/>
<path fill="none" stroke="#dcdcdc" stroke-width="1.5" d="M0 96 L2.03175 95.2511 L4.06349 95.1989 L6.09524 95.8433 L8.12698 94.4814 L10.1587 93.4148 L12.1905 93.1265 L14.2222 93.6165 L16.254 94.8847 L18.2857 94.6776 L20.3175 91.8573 L22.3492 89.6224 L24.381 87.9728 L26.4127 86.9085 L28.4444 86.4296 L30.4762 86.5361 L32.5079 87.2278 L34.5397 88.5049 L36.5714 90.3674 L38.6032 92.8151 L40.6349 95.8482 L42.6667 90.8889 L44.6984 86.0111 L46.7302 81.6211 L48.7619 77.7188 L50.7937 74.3044 L52.8254 71.3777 L54.8571 68.9388 L56.8889 66.9877 L58.9206 65.5243 L60.9524 64.5488 L62.9841 64.061 L65.0159 63.939 L67.0476 63.4512 L69.0794 62.4757 L71.1111 61.0123 L73.1429 59.0612 L75.1746 56.6223 L77.2064 53.6956 L79.2381 50.2812 L81.2698 46.3789 L83.3016 41.9889 L85.3333 37.1111 L87.3651 32.1518 L89.3968 35.1849 L91.4286 37.6326 L93.4603 39.4951 L95.4921 40.7722 L97.5238 41.4639 L99.5556 41.5704 L101.587 41.0914 L103.619 40.0272 L105.651 38.3776 L107.683 36.1427 L109.714 33.3224 L111.746 33.1153 L113.778 34.3835 L115.81 34.8735 L117.841 34.5852 L119.873 33.5186 L121.905 32.1567 L123.937 32.8011 L125.968 32.7489 L128 32"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

8
doc/snippets/easings-bounceinout.svg

@ -0,0 +1,8 @@
<svg class="m-image" style="width: 224px; height: 128px;" viewBox="0 0 224 128">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M16 16 L208 16 M16 112 L208 112
M16 106 l0 12 M208 10 l0 12"/>
<path fill="none" stroke="#cd3330" stroke-width="1.5" d="M1.85263 130.898 L3.87368 126.82 L5.89474 123.201 L7.91579 120.042 L9.93684 117.342 L11.9579 115.102 L13.9789 113.321 L16 112"/>
<path fill="none" stroke="#cd3330" stroke-width="1.5" d="M208 16 L210.021 14.6788 L212.042 12.8982 L214.063 10.658 L216.084 7.95833 L218.105 4.79912 L220.126 1.18036 L222.147 -2.89795"/>
<path fill="none" stroke="#dcdcdc" stroke-width="1.75" d="M16 112 L18.0211 111.138 L20.0421 110.736 L22.0632 110.794 L24.0842 111.311 L26.1053 111.489 L28.1263 109.768 L30.1474 108.561 L32.1684 107.866 L34.1895 107.686 L36.2105 108.018 L38.2316 108.864 L40.2526 110.223 L42.2737 111.849 L44.2947 108.725 L46.3158 105.987 L48.3368 103.635 L50.3579 101.669 L52.3789 100.089 L54.4 98.896 L56.4211 98.0887 L58.4421 97.6674 L60.4632 97.6323 L62.4842 97.9833 L64.5053 98.7205 L66.5263 99.8438 L68.5474 101.353 L70.5684 103.249 L72.5895 105.53 L74.6105 108.198 L76.6316 111.252 L78.6526 107.801 L80.6737 102.653 L82.6947 97.8264 L84.7158 93.3215 L86.7368 89.1385 L88.7579 85.2772 L90.7789 81.7377 L92.8 78.52 L94.8211 75.624 L96.8421 73.0499 L98.8632 70.7975 L100.884 68.8668 L102.905 67.2579 L104.926 65.9709 L106.947 65.0055 L108.968 64.362 L110.989 64.0402 L113.011 63.9598 L115.032 63.638 L117.053 62.9945 L119.074 62.0291 L121.095 60.7421 L123.116 59.1332 L125.137 57.2025 L127.158 54.9501 L129.179 52.376 L131.2 49.48 L133.221 46.2623 L135.242 42.7228 L137.263 38.8615 L139.284 34.6784 L141.305 30.1736 L143.326 25.347 L145.347 20.1987 L147.368 16.7479 L149.389 19.8018 L151.411 22.4696 L153.432 24.7513 L155.453 26.6468 L157.474 28.1562 L159.495 29.2795 L161.516 30.0167 L163.537 30.3677 L165.558 30.3326 L167.579 29.9113 L169.6 29.104 L171.621 27.9105 L173.642 26.3309 L175.663 24.3651 L177.684 22.0133 L179.705 19.2753 L181.726 16.1512 L183.747 17.7766 L185.768 19.136 L187.789 19.9819 L189.811 20.3144 L191.832 20.1336 L193.853 19.4393 L195.874 18.2317 L197.895 16.5105 L199.916 16.6893 L201.937 17.2063 L203.958 17.2637 L205.979 16.8616 L208 16"/>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

6
doc/snippets/easings-bounceout-thumb.svg

@ -0,0 +1,6 @@
<svg class="m-image m-nopadb" style="width: 128px; height: 128px; margin-top: -16px; margin-bottom: -16px;" viewBox="0 0 128 128">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M0 32 L128 32 M0 96 L128 96
M0 92 l0 8 M128 28 l0 8"/>
<path fill="none" stroke="#dcdcdc" stroke-width="1.5" d="M0 96 L2.03175 95.8781 L4.06349 95.5122 L6.09524 94.9025 L8.12698 94.0489 L10.1587 92.9514 L12.1905 91.61 L14.2222 90.0247 L16.254 88.1955 L18.2857 86.1225 L20.3175 83.8055 L22.3492 81.2446 L24.381 78.4399 L26.4127 75.3913 L28.4444 72.0988 L30.4762 68.5624 L32.5079 64.7821 L34.5397 60.7579 L36.5714 56.4898 L38.6032 51.9778 L40.6349 47.222 L42.6667 42.2222 L44.6984 36.9786 L46.7302 32.3035 L48.7619 35.483 L50.7937 38.3698 L52.8254 40.9639 L54.8571 43.2653 L56.8889 45.2741 L58.9206 46.9902 L60.9524 48.4136 L62.9841 49.5444 L65.0159 50.3825 L67.0476 50.9279 L69.0794 51.1806 L71.1111 51.1407 L73.1429 50.8082 L75.1746 50.1829 L77.2064 49.265 L79.2381 48.0544 L81.2698 46.5511 L83.3016 44.7552 L85.3333 42.6666 L87.3651 40.2854 L89.3968 37.6115 L91.4286 34.6449 L93.4603 32.3786 L95.4921 34.2305 L97.5238 35.6934 L99.5556 36.7671 L101.587 37.4517 L103.619 37.747 L105.651 37.6533 L107.683 37.1704 L109.714 36.2983 L111.746 35.0372 L113.778 33.3869 L115.81 32.3134 L117.841 33.132 L119.873 33.6022 L121.905 33.7241 L123.937 33.4977 L125.968 32.923 L128 32"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

8
doc/snippets/easings-bounceout.svg

@ -0,0 +1,8 @@
<svg class="m-image" style="width: 224px; height: 128px;" viewBox="0 0 224 128">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M16 16 L208 16 M16 112 L208 112
M16 106 l0 12 M208 10 l0 12"/>
<path fill="none" stroke="#cd3330" stroke-width="1.5" d="M1.85263 108.058 L3.87368 109.104 L5.89474 109.989 L7.91579 110.713 L9.93684 111.276 L11.9579 111.678 L13.9789 111.92 L16 112"/>
<path fill="none" stroke="#cd3330" stroke-width="1.5" d="M208 16 L210.021 14.7938 L212.042 13.3577 L214.063 11.692 L216.084 9.7963 L218.105 7.67108 L220.126 5.31607 L222.147 2.73135"/>
<path fill="none" stroke="#dcdcdc" stroke-width="1.75" d="M16 112 L18.0211 111.92 L20.0421 111.678 L22.0632 111.276 L24.0842 110.713 L26.1053 109.989 L28.1263 109.104 L30.1474 108.058 L32.1684 106.852 L34.1895 105.484 L36.2105 103.956 L38.2316 102.266 L40.2526 100.416 L42.2737 98.4051 L44.2947 96.2331 L46.3158 93.9003 L48.3368 91.4065 L50.3579 88.7519 L52.3789 85.9364 L54.4 82.96 L56.4211 79.8227 L58.4421 76.5245 L60.4632 73.0655 L62.4842 69.4455 L64.5053 65.6647 L66.5263 61.723 L68.5474 57.6204 L70.5684 53.3569 L72.5895 48.9325 L74.6105 44.3473 L76.6316 39.6011 L78.6526 34.6941 L80.6737 29.6261 L82.6947 24.3973 L84.7158 19.0076 L86.7368 17.4958 L88.7579 20.6463 L90.7789 23.6036 L92.8 26.368 L94.8211 28.9392 L96.8421 31.3174 L98.8632 33.5025 L100.884 35.4946 L102.905 37.2936 L104.926 38.8995 L106.947 40.3124 L108.968 41.5323 L110.989 42.559 L113.011 43.3927 L115.032 44.0333 L117.053 44.4809 L119.074 44.7354 L121.095 44.7968 L123.116 44.6652 L125.137 44.3405 L127.158 43.8227 L129.179 43.1119 L131.2 42.208 L133.221 41.111 L135.242 39.821 L137.263 38.3379 L139.284 36.6618 L141.305 34.7926 L143.326 32.7303 L145.347 30.4749 L147.368 28.0266 L149.389 25.3851 L151.411 22.5506 L153.432 19.5229 L155.453 16.3023 L157.474 17.8087 L159.495 19.5531 L161.516 21.0408 L163.537 22.2719 L165.558 23.2462 L167.579 23.9638 L169.6 24.4246 L171.621 24.6289 L173.642 24.5764 L175.663 24.2672 L177.684 23.7011 L179.705 22.8786 L181.726 21.7993 L183.747 20.4633 L185.768 18.8706 L187.789 17.0211 L189.811 16.5169 L191.832 17.3785 L193.853 18.0103 L195.874 18.4125 L197.895 18.5847 L199.916 18.5273 L201.937 18.2401 L203.958 17.7231 L205.979 16.9765 L208 16"/>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

6
doc/snippets/easings-circularin-thumb.svg

@ -0,0 +1,6 @@
<svg class="m-image m-nopadb" style="width: 128px; height: 128px; margin-top: -16px; margin-bottom: -16px;" viewBox="0 0 128 128">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M0 32 L128 32 M0 96 L128 96
M0 92 l0 8 M128 28 l0 8"/>
<path fill="none" stroke="#dcdcdc" stroke-width="1.5" d="M0 96 L2.03175 95.9919 L4.06349 95.9677 L6.09524 95.9274 L8.12698 95.8709 L10.1587 95.7981 L12.1905 95.7091 L14.2222 95.6037 L16.254 95.4819 L18.2857 95.3436 L20.3175 95.1886 L22.3492 95.0169 L24.381 94.8283 L26.4127 94.6226 L28.4444 94.3997 L30.4762 94.1595 L32.5079 93.9016 L34.5397 93.6259 L36.5714 93.3322 L38.6032 93.0201 L40.6349 92.6894 L42.6667 92.3398 L44.6984 91.9709 L46.7302 91.5825 L48.7619 91.1741 L50.7937 90.7452 L52.8254 90.2955 L54.8571 89.8245 L56.8889 89.3316 L58.9206 88.8163 L60.9524 88.2779 L62.9841 87.7158 L65.0159 87.1292 L67.0476 86.5175 L69.0794 85.8796 L71.1111 85.2147 L73.1429 84.5217 L75.1746 83.7996 L77.2064 83.047 L79.2381 82.2626 L81.2698 81.4449 L83.3016 80.5923 L85.3333 79.7028 L87.3651 78.7743 L89.3968 77.8045 L91.4286 76.7907 L93.4603 75.7298 L95.4921 74.6183 L97.5238 73.4521 L99.5556 72.2265 L101.587 70.9359 L103.619 69.5736 L105.651 68.1314 L107.683 66.5994 L109.714 64.965 L111.746 63.2123 L113.778 61.3199 L115.81 59.2587 L117.841 56.9872 L119.873 54.4414 L121.905 51.5143 L123.937 47.998 L125.968 43.3578 L128 32"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

9
doc/snippets/easings-circularin.svg

@ -0,0 +1,9 @@
<svg class="m-image" style="width: 224px; height: 128px;" viewBox="0 0 224 128">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M16 16 L208 16 M16 112 L208 112
M16 106 l0 12 M208 10 l0 12"/>
<path fill="none" stroke="#cd3330" stroke-width="1.5" d="M1.85263 111.739 L3.87368 111.808 L5.89474 111.867 L7.91579 111.915 L9.93684 111.952 L11.9579 111.979 L13.9789 111.995 L16 112"/>
<path fill="none" stroke="#cd3330" stroke-width="1.5" d="M208 16 L210.021 -nan L212.042 -nan L214.063 -nan L216.084 -nan L218.105 -nan L220.126 -nan L222.147 -nan"/>
<path fill="none" stroke="#737373" stroke-width="1" d="M16 112 L18.0211 111.987 L20.0421 111.948 L22.0632 111.882 L24.0842 111.79 L26.1053 111.672 L28.1263 111.528 L30.1474 111.358 L32.1684 111.161 L34.1895 110.939 L36.2105 110.691 L38.2316 110.416 L40.2526 110.116 L42.2737 109.791 L44.2947 109.439 L46.3158 109.062 L48.3368 108.66 L50.3579 108.232 L52.3789 107.779 L54.4 107.301 L56.4211 106.798 L58.4421 106.271 L60.4632 105.718 L62.4842 105.141 L64.5053 104.54 L66.5263 103.914 L68.5474 103.265 L70.5684 102.591 L72.5895 101.894 L74.6105 101.173 L76.6316 100.429 L78.6526 99.6625 L80.6737 98.8726 L82.6947 98.0601 L84.7158 97.2251 L86.7368 96.368 L88.7579 95.4888 L90.7789 94.588 L92.8 93.6656 L94.8211 92.7221 L96.8421 91.7575 L98.8632 90.7722 L100.884 89.7665 L102.905 88.7406 L104.926 87.6949 L106.947 86.6295 L108.968 85.5448 L110.989 84.4411 L113.011 83.3187 L115.032 82.1779 L117.053 81.019 L119.074 79.8424 L121.095 78.6482 L123.116 77.437 L125.137 76.2089 L127.158 74.9644 L129.179 73.7038 L131.2 72.4274 L133.221 71.1356 L135.242 69.8286 L137.263 68.507 L139.284 67.1711 L141.305 65.8211 L143.326 64.4575 L145.347 63.0807 L147.368 61.6909 L149.389 60.2887 L151.411 58.8745 L153.432 57.4484 L155.453 56.0111 L157.474 54.5628 L159.495 53.1039 L161.516 51.6349 L163.537 50.1562 L165.558 48.6681 L167.579 47.1711 L169.6 45.6656 L171.621 44.152 L173.642 42.6307 L175.663 41.1021 L177.684 39.5666 L179.705 38.0247 L181.726 36.4768 L183.747 34.9232 L185.768 33.3645 L187.789 31.8011 L189.811 30.2333 L191.832 28.6616 L193.853 27.0865 L195.874 25.5084 L197.895 23.9276 L199.916 22.3447 L201.937 20.76 L203.958 19.1741 L205.979 17.5873 L208 16"/>
<path fill="none" stroke="#dcdcdc" stroke-width="1.75" d="M16 112 L18.0211 111.995 L20.0421 111.979 L22.0632 111.952 L24.0842 111.915 L26.1053 111.867 L28.1263 111.808 L30.1474 111.739 L32.1684 111.659 L34.1895 111.568 L36.2105 111.467 L38.2316 111.354 L40.2526 111.231 L42.2737 111.097 L44.2947 110.952 L46.3158 110.796 L48.3368 110.629 L50.3579 110.45 L52.3789 110.261 L54.4 110.06 L56.4211 109.848 L58.4421 109.625 L60.4632 109.39 L62.4842 109.144 L64.5053 108.886 L66.5263 108.616 L68.5474 108.335 L70.5684 108.041 L72.5895 107.736 L74.6105 107.418 L76.6316 107.088 L78.6526 106.745 L80.6737 106.39 L82.6947 106.022 L84.7158 105.641 L86.7368 105.247 L88.7579 104.84 L90.7789 104.42 L92.8 103.985 L94.8211 103.537 L96.8421 103.075 L98.8632 102.599 L100.884 102.108 L102.905 101.603 L104.926 101.082 L106.947 100.547 L108.968 99.9953 L110.989 99.4281 L113.011 98.8447 L115.032 98.2447 L117.053 97.6278 L119.074 96.9935 L121.095 96.3416 L123.116 95.6715 L125.137 94.9828 L127.158 94.275 L129.179 93.5476 L131.2 92.8 L133.221 92.0316 L135.242 91.2418 L137.263 90.4299 L139.284 89.5952 L141.305 88.7368 L143.326 87.854 L145.347 86.9459 L147.368 86.0113 L149.389 85.0493 L151.411 84.0588 L153.432 83.0383 L155.453 81.9867 L157.474 80.9022 L159.495 79.7833 L161.516 78.6282 L163.537 77.4347 L165.558 76.2006 L167.579 74.9233 L169.6 73.6 L171.621 72.2274 L173.642 70.8018 L175.663 69.319 L177.684 67.7741 L179.705 66.1612 L181.726 64.4737 L183.747 62.7034 L185.768 60.8405 L187.789 58.873 L189.811 56.7857 L191.832 54.5592 L193.853 52.1678 L195.874 49.5763 L197.895 46.7339 L199.916 43.5635 L201.937 39.9348 L203.958 35.5948 L205.979 29.8924 L208 16"/>
</svg>

After

Width:  |  Height:  |  Size: 3.8 KiB

6
doc/snippets/easings-circularinout-thumb.svg

@ -0,0 +1,6 @@
<svg class="m-image m-nopadb" style="width: 128px; height: 128px; margin-top: -16px; margin-bottom: -16px;" viewBox="0 0 128 128">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M0 32 L128 32 M0 96 L128 96
M0 92 l0 8 M128 28 l0 8"/>
<path fill="none" stroke="#dcdcdc" stroke-width="1.5" d="M0 96 L2.03175 95.9839 L4.06349 95.9354 L6.09524 95.8545 L8.12698 95.741 L10.1587 95.5943 L12.1905 95.4141 L14.2222 95.1999 L16.254 94.9508 L18.2857 94.6661 L20.3175 94.3447 L22.3492 93.9855 L24.381 93.587 L26.4127 93.1478 L28.4444 92.6658 L30.4762 92.1389 L32.5079 91.5646 L34.5397 90.9398 L36.5714 90.2609 L38.6032 89.5235 L40.6349 88.7225 L42.6667 87.8514 L44.6984 86.9023 L46.7302 85.8649 L48.7619 84.726 L50.7937 83.468 L52.8254 82.0657 L54.8571 80.4825 L56.8889 78.6599 L58.9206 76.4936 L60.9524 73.7571 L62.9841 69.6789 L65.0159 58.3211 L67.0476 54.2429 L69.0794 51.5064 L71.1111 49.3401 L73.1429 47.5175 L75.1746 45.9343 L77.2064 44.532 L79.2381 43.2739 L81.2698 42.1351 L83.3016 41.0977 L85.3333 40.1486 L87.3651 39.2775 L89.3968 38.4765 L91.4286 37.7391 L93.4603 37.0602 L95.4921 36.4354 L97.5238 35.861 L99.5556 35.3342 L101.587 34.8522 L103.619 34.413 L105.651 34.0145 L107.683 33.6553 L109.714 33.3339 L111.746 33.0492 L113.778 32.8001 L115.81 32.5859 L117.841 32.4057 L119.873 32.259 L121.905 32.1455 L123.937 32.0646 L125.968 32.0161 L128 32"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

9
doc/snippets/easings-circularinout.svg

@ -0,0 +1,9 @@
<svg class="m-image" style="width: 224px; height: 128px;" viewBox="0 0 224 128">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M16 16 L208 16 M16 112 L208 112
M16 106 l0 12 M208 10 l0 12"/>
<path fill="none" stroke="#cd3330" stroke-width="1.5" d="M1.85263 111.476 L3.87368 111.616 L5.89474 111.733 L7.91579 111.829 L9.93684 111.904 L11.9579 111.957 L13.9789 111.989 L16 112"/>
<path fill="none" stroke="#cd3330" stroke-width="1.5" d="M208 16 L210.021 16.0106 L212.042 16.0426 L214.063 16.0958 L216.084 16.1705 L218.105 16.2667 L220.126 16.3845 L222.147 16.5241"/>
<path fill="none" stroke="#737373" stroke-width="1" d="M16 112 L18.0211 111.974 L20.0421 111.895 L22.0632 111.764 L24.0842 111.581 L26.1053 111.345 L28.1263 111.058 L30.1474 110.72 L32.1684 110.33 L34.1895 109.89 L36.2105 109.399 L38.2316 108.859 L40.2526 108.27 L42.2737 107.632 L44.2947 106.947 L46.3158 106.215 L48.3368 105.436 L50.3579 104.613 L52.3789 103.744 L54.4 102.833 L56.4211 101.879 L58.4421 100.883 L60.4632 99.8474 L62.4842 98.7724 L64.5053 97.6594 L66.5263 96.5095 L68.5474 95.3241 L70.5684 94.1045 L72.5895 92.8519 L74.6105 91.5678 L76.6316 90.2535 L78.6526 88.9105 L80.6737 87.5403 L82.6947 86.1444 L84.7158 84.7242 L86.7368 83.2814 L88.7579 81.8175 L90.7789 80.3341 L92.8 78.8328 L94.8211 77.3153 L96.8421 75.7833 L98.8632 74.2384 L100.884 72.6823 L102.905 71.1167 L104.926 69.5433 L106.947 67.9638 L108.968 66.38 L110.989 64.7936 L113.011 63.2064 L115.032 61.62 L117.053 60.0362 L119.074 58.4567 L121.095 56.8833 L123.116 55.3177 L125.137 53.7616 L127.158 52.2167 L129.179 50.6847 L131.2 49.1672 L133.221 47.6659 L135.242 46.1825 L137.263 44.7186 L139.284 43.2758 L141.305 41.8556 L143.326 40.4597 L145.347 39.0895 L147.368 37.7465 L149.389 36.4322 L151.411 35.1481 L153.432 33.8955 L155.453 32.6759 L157.474 31.4905 L159.495 30.3406 L161.516 29.2276 L163.537 28.1526 L165.558 27.1167 L167.579 26.1213 L169.6 25.1672 L171.621 24.2556 L173.642 23.3874 L175.663 22.5637 L177.684 21.7852 L179.705 21.053 L181.726 20.3677 L183.747 19.7301 L185.768 19.1409 L187.789 18.6008 L189.811 18.1103 L191.832 17.67 L193.853 17.2803 L195.874 16.9418 L197.895 16.6547 L199.916 16.4193 L201.937 16.236 L203.958 16.1049 L205.979 16.0262 L208 16"/>
<path fill="none" stroke="#dcdcdc" stroke-width="1.75" d="M16 112 L18.0211 111.989 L20.0421 111.957 L22.0632 111.904 L24.0842 111.829 L26.1053 111.733 L28.1263 111.616 L30.1474 111.476 L32.1684 111.314 L34.1895 111.131 L36.2105 110.924 L38.2316 110.695 L40.2526 110.443 L42.2737 110.167 L44.2947 109.868 L46.3158 109.544 L48.3368 109.195 L50.3579 108.821 L52.3789 108.42 L54.4 107.993 L56.4211 107.538 L58.4421 107.054 L60.4632 106.541 L62.4842 105.998 L64.5053 105.422 L66.5263 104.814 L68.5474 104.171 L70.5684 103.491 L72.5895 102.774 L74.6105 102.016 L76.6316 101.215 L78.6526 100.368 L80.6737 99.4729 L82.6947 98.5247 L84.7158 97.5192 L86.7368 96.4511 L88.7579 95.3141 L90.7789 94.1003 L92.8 92.8 L94.8211 91.4009 L96.8421 89.887 L98.8632 88.2368 L100.884 86.4202 L102.905 84.3929 L104.926 82.0839 L106.947 79.367 L108.968 75.9674 L110.989 70.9462 L113.011 57.0538 L115.032 52.0326 L117.053 48.633 L119.074 45.9161 L121.095 43.6071 L123.116 41.5797 L125.137 39.7632 L127.158 38.113 L129.179 36.5991 L131.2 35.2 L133.221 33.8997 L135.242 32.6859 L137.263 31.5489 L139.284 30.4808 L141.305 29.4753 L143.326 28.5271 L145.347 27.6316 L147.368 26.785 L149.389 25.9842 L151.411 25.2262 L153.432 24.5086 L155.453 23.8292 L157.474 23.1861 L159.495 22.5777 L161.516 22.0023 L163.537 21.4588 L165.558 20.9458 L167.579 20.4622 L169.6 20.0073 L171.621 19.5799 L173.642 19.1794 L175.663 18.8051 L177.684 18.4562 L179.705 18.1322 L181.726 17.8327 L183.747 17.557 L185.768 17.3048 L187.789 17.0758 L189.811 16.8695 L191.832 16.6857 L193.853 16.5241 L195.874 16.3845 L197.895 16.2667 L199.916 16.1705 L201.937 16.0958 L203.958 16.0426 L205.979 16.0106 L208 16"/>
</svg>

After

Width:  |  Height:  |  Size: 3.8 KiB

6
doc/snippets/easings-circularout-thumb.svg

@ -0,0 +1,6 @@
<svg class="m-image m-nopadb" style="width: 128px; height: 128px; margin-top: -16px; margin-bottom: -16px;" viewBox="0 0 128 128">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M0 32 L128 32 M0 96 L128 96
M0 92 l0 8 M128 28 l0 8"/>
<path fill="none" stroke="#dcdcdc" stroke-width="1.5" d="M0 96 L2.03175 84.6422 L4.06349 80.002 L6.09524 76.4857 L8.12698 73.5586 L10.1587 71.0128 L12.1905 68.7413 L14.2222 66.6801 L16.254 64.7877 L18.2857 63.035 L20.3175 61.4006 L22.3492 59.8686 L24.381 58.4264 L26.4127 57.0641 L28.4444 55.7735 L30.4762 54.5479 L32.5079 53.3817 L34.5397 52.2702 L36.5714 51.2093 L38.6032 50.1955 L40.6349 49.2257 L42.6667 48.2972 L44.6984 47.4077 L46.7302 46.555 L48.7619 45.7374 L50.7937 44.953 L52.8254 44.2004 L54.8571 43.4783 L56.8889 42.7853 L58.9206 42.1204 L60.9524 41.4825 L62.9841 40.8708 L65.0159 40.2842 L67.0476 39.7221 L69.0794 39.1837 L71.1111 38.6684 L73.1429 38.1755 L75.1746 37.7045 L77.2064 37.2548 L79.2381 36.8259 L81.2698 36.4175 L83.3016 36.0291 L85.3333 35.6602 L87.3651 35.3106 L89.3968 34.9799 L91.4286 34.6678 L93.4603 34.3741 L95.4921 34.0984 L97.5238 33.8405 L99.5556 33.6003 L101.587 33.3774 L103.619 33.1717 L105.651 32.9831 L107.683 32.8114 L109.714 32.6564 L111.746 32.5181 L113.778 32.3963 L115.81 32.2909 L117.841 32.2019 L119.873 32.1291 L121.905 32.0726 L123.937 32.0323 L125.968 32.0081 L128 32"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

9
doc/snippets/easings-circularout.svg

@ -0,0 +1,9 @@
<svg class="m-image" style="width: 224px; height: 128px;" viewBox="0 0 224 128">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M16 16 L208 16 M16 112 L208 112
M16 106 l0 12 M208 10 l0 12"/>
<path fill="none" stroke="#cd3330" stroke-width="1.5" d="M1.85263 -nan L3.87368 -nan L5.89474 -nan L7.91579 -nan L9.93684 -nan L11.9579 -nan L13.9789 -nan L16 112"/>
<path fill="none" stroke="#cd3330" stroke-width="1.5" d="M208 16 L210.021 16.0053 L212.042 16.0213 L214.063 16.0479 L216.084 16.0851 L218.105 16.133 L220.126 16.1917 L222.147 16.261"/>
<path fill="none" stroke="#737373" stroke-width="1" d="M16 112 L18.0211 110.413 L20.0421 108.826 L22.0632 107.24 L24.0842 105.655 L26.1053 104.072 L28.1263 102.492 L30.1474 100.913 L32.1684 99.3383 L34.1895 97.7667 L36.2105 96.1989 L38.2316 94.6355 L40.2526 93.0768 L42.2737 91.5232 L44.2947 89.9753 L46.3158 88.4334 L48.3368 86.8979 L50.3579 85.3693 L52.3789 83.848 L54.4 82.3344 L56.4211 80.8288 L58.4421 79.3318 L60.4632 77.8438 L62.4842 76.3651 L64.5053 74.8961 L66.5263 73.4372 L68.5474 71.9889 L70.5684 70.5516 L72.5895 69.1255 L74.6105 67.7112 L76.6316 66.3091 L78.6526 64.9193 L80.6737 63.5425 L82.6947 62.1789 L84.7158 60.8289 L86.7368 59.493 L88.7579 58.1714 L90.7789 56.8644 L92.8 55.5726 L94.8211 54.2962 L96.8421 53.0356 L98.8632 51.7911 L100.884 50.563 L102.905 49.3518 L104.926 48.1576 L106.947 46.981 L108.968 45.8221 L110.989 44.6813 L113.011 43.5589 L115.032 42.4552 L117.053 41.3705 L119.074 40.3051 L121.095 39.2594 L123.116 38.2335 L125.137 37.2278 L127.158 36.2425 L129.179 35.278 L131.2 34.3344 L133.221 33.412 L135.242 32.5111 L137.263 31.632 L139.284 30.7748 L141.305 29.9399 L143.326 29.1274 L145.347 28.3375 L147.368 27.5705 L149.389 26.8266 L151.411 26.106 L153.432 25.4088 L155.453 24.7354 L157.474 24.0858 L159.495 23.4602 L161.516 22.8588 L163.537 22.2818 L165.558 21.7293 L167.579 21.2015 L169.6 20.6986 L171.621 20.2206 L173.642 19.7676 L175.663 19.3399 L177.684 18.9376 L179.705 18.5607 L181.726 18.2093 L183.747 17.8835 L185.768 17.5835 L187.789 17.3093 L189.811 17.061 L191.832 16.8386 L193.853 16.6423 L195.874 16.472 L197.895 16.3279 L199.916 16.2099 L201.937 16.1181 L203.958 16.0525 L205.979 16.0131 L208 16"/>
<path fill="none" stroke="#dcdcdc" stroke-width="1.75" d="M16 112 L18.0211 98.1076 L20.0421 92.4052 L22.0632 88.0652 L24.0842 84.4365 L26.1053 81.266 L28.1263 78.4238 L30.1474 75.8322 L32.1684 73.4408 L34.1895 71.2143 L36.2105 69.127 L38.2316 67.1595 L40.2526 65.2966 L42.2737 63.5263 L44.2947 61.8388 L46.3158 60.2259 L48.3368 58.681 L50.3579 57.1982 L52.3789 55.7726 L54.4 54.4 L56.4211 53.0767 L58.4421 51.7994 L60.4632 50.5653 L62.4842 49.3718 L64.5053 48.2167 L66.5263 47.0978 L68.5474 46.0133 L70.5684 44.9616 L72.5895 43.9412 L74.6105 42.9507 L76.6316 41.9887 L78.6526 41.0541 L80.6737 40.146 L82.6947 39.2632 L84.7158 38.4048 L86.7368 37.5701 L88.7579 36.7582 L90.7789 35.9684 L92.8 35.2 L94.8211 34.4524 L96.8421 33.725 L98.8632 33.0172 L100.884 32.3285 L102.905 31.6584 L104.926 31.0065 L106.947 30.3722 L108.968 29.7553 L110.989 29.1553 L113.011 28.5719 L115.032 28.0047 L117.053 27.4533 L119.074 26.9175 L121.095 26.397 L123.116 25.8915 L125.137 25.4008 L127.158 24.9245 L129.179 24.4625 L131.2 24.0145 L133.221 23.5804 L135.242 23.1599 L137.263 22.7527 L139.284 22.3589 L141.305 21.978 L143.326 21.6101 L145.347 21.255 L147.368 20.9124 L149.389 20.5823 L151.411 20.2645 L153.432 19.9589 L155.453 19.6653 L157.474 19.3837 L159.495 19.114 L161.516 18.856 L163.537 18.6096 L165.558 18.3749 L167.579 18.1515 L169.6 17.9396 L171.621 17.739 L173.642 17.5496 L175.663 17.3713 L177.684 17.2042 L179.705 17.0482 L181.726 16.9031 L183.747 16.769 L185.768 16.6457 L187.789 16.5333 L189.811 16.4318 L191.832 16.341 L193.853 16.261 L195.874 16.1917 L197.895 16.133 L199.916 16.0851 L201.937 16.0479 L203.958 16.0213 L205.979 16.0053 L208 16"/>
</svg>

After

Width:  |  Height:  |  Size: 3.8 KiB

6
doc/snippets/easings-cubicin-thumb.svg

@ -0,0 +1,6 @@
<svg class="m-image m-nopadb" style="width: 128px; height: 128px; margin-top: -16px; margin-bottom: -16px;" viewBox="0 0 128 128">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M0 32 L128 32 M0 96 L128 96
M0 92 l0 8 M128 28 l0 8"/>
<path fill="none" stroke="#dcdcdc" stroke-width="1.5" d="M0 96 L2.03175 95.9997 L4.06349 95.998 L6.09524 95.9931 L8.12698 95.9836 L10.1587 95.968 L12.1905 95.9447 L14.2222 95.9122 L16.254 95.869 L18.2857 95.8134 L20.3175 95.744 L22.3492 95.6593 L24.381 95.5577 L26.4127 95.4377 L28.4444 95.2977 L30.4762 95.1362 L32.5079 94.9516 L34.5397 94.7425 L36.5714 94.5073 L38.6032 94.2444 L40.6349 93.9524 L42.6667 93.6296 L44.6984 93.2746 L46.7302 92.8858 L48.7619 92.4617 L50.7937 92.0007 L52.8254 91.5014 L54.8571 90.9621 L56.8889 90.3813 L58.9206 89.7576 L60.9524 89.0893 L62.9841 88.3749 L65.0159 87.613 L67.0476 86.8019 L69.0794 85.9401 L71.1111 85.0261 L73.1429 84.0583 L75.1746 83.0353 L77.2064 81.9554 L79.2381 80.8172 L81.2698 79.6191 L83.3016 78.3595 L85.3333 77.037 L87.3651 75.65 L89.3968 74.197 L91.4286 72.6764 L93.4603 71.0867 L95.4921 69.4263 L97.5238 67.6938 L99.5556 65.8875 L101.587 64.006 L103.619 62.0477 L105.651 60.0111 L107.683 57.8947 L109.714 55.6968 L111.746 53.416 L113.778 51.0508 L115.81 48.5995 L117.841 46.0607 L119.873 43.4329 L121.905 40.7144 L123.937 37.9038 L125.968 34.9995 L128 32"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

14
doc/snippets/easings-cubicin.svg

@ -0,0 +1,14 @@
<svg class="m-image" style="width: 224px; height: 128px;" viewBox="0 0 224 128">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M16 16 L208 16 M16 112 L208 112
M16 106 l0 12 M208 10 l0 12"/>
<path fill="none" stroke="#cd3330" stroke-width="1.5" d="M1.85263 112.038 L3.87368 112.024 L5.89474 112.014 L7.91579 112.007 L9.93684 112.003 L11.9579 112.001 L13.9789 112 L16 112"/>
<path fill="none" stroke="#3ad267" stroke-width="1.5" d="M208 16 L210.021 12.9364 L212.042 9.80832 L214.063 6.61505 L216.084 3.35591 L218.105 0.0303268 L220.126 -3.36247 L222.147 -6.82314"/>
<path fill="none" stroke="#737373" stroke-width="1" d="M16 112 L18.0211 111.989 L20.0421 111.957 L22.0632 111.904 L24.0842 111.83 L26.1053 111.734 L28.1263 111.617 L30.1474 111.479 L32.1684 111.319 L34.1895 111.138 L36.2105 110.936 L38.2316 110.713 L40.2526 110.468 L42.2737 110.202 L44.2947 109.915 L46.3158 109.607 L48.3368 109.277 L50.3579 108.926 L52.3789 108.554 L54.4 108.16 L56.4211 107.745 L58.4421 107.309 L60.4632 106.852 L62.4842 106.373 L64.5053 105.873 L66.5263 105.352 L68.5474 104.809 L70.5684 104.246 L72.5895 103.66 L74.6105 103.054 L76.6316 102.427 L78.6526 101.778 L80.6737 101.108 L82.6947 100.416 L84.7158 99.7035 L86.7368 98.9695 L88.7579 98.2143 L90.7789 97.4378 L92.8 96.64 L94.8211 95.8209 L96.8421 94.9806 L98.8632 94.119 L100.884 93.2361 L102.905 92.332 L104.926 91.4065 L106.947 90.4598 L108.968 89.4919 L110.989 88.5026 L113.011 87.4921 L115.032 86.4603 L117.053 85.4072 L119.074 84.3329 L121.095 83.2372 L123.116 82.1203 L125.137 80.9822 L127.158 79.8227 L129.179 78.642 L131.2 77.44 L133.221 76.2167 L135.242 74.9722 L137.263 73.7064 L139.284 72.4193 L141.305 71.1109 L143.326 69.7813 L145.347 68.4304 L147.368 67.0582 L149.389 65.6647 L151.411 64.25 L153.432 62.814 L155.453 61.3567 L157.474 59.8781 L159.495 58.3783 L161.516 56.8572 L163.537 55.3148 L165.558 53.7511 L167.579 52.1662 L169.6 50.56 L171.621 48.9325 L173.642 47.2838 L175.663 45.6137 L177.684 43.9224 L179.705 42.2099 L181.726 40.476 L183.747 38.7209 L185.768 36.9445 L187.789 35.1468 L189.811 33.3279 L191.832 31.4876 L193.853 29.6261 L195.874 27.7434 L197.895 25.8393 L199.916 23.914 L201.937 21.9674 L203.958 19.9996 L205.979 18.0104 L208 16"/>
<path fill="none" stroke="#737373" stroke-width="1" d="M16 112 L18.0211 112 L20.0421 112 L22.0632 112 L24.0842 112 L26.1053 111.999 L28.1263 111.998 L30.1474 111.997 L32.1684 111.995 L34.1895 111.992 L36.2105 111.988 L38.2316 111.983 L40.2526 111.976 L42.2737 111.966 L44.2947 111.955 L46.3158 111.94 L48.3368 111.923 L50.3579 111.902 L52.3789 111.876 L54.4 111.846 L56.4211 111.811 L58.4421 111.771 L60.4632 111.724 L62.4842 111.67 L64.5053 111.609 L66.5263 111.54 L68.5474 111.461 L70.5684 111.374 L72.5895 111.276 L74.6105 111.166 L76.6316 111.045 L78.6526 110.912 L80.6737 110.764 L82.6947 110.602 L84.7158 110.425 L86.7368 110.231 L88.7579 110.02 L90.7789 109.791 L92.8 109.542 L94.8211 109.273 L96.8421 108.983 L98.8632 108.669 L100.884 108.332 L102.905 107.971 L104.926 107.582 L106.947 107.167 L108.968 106.723 L110.989 106.249 L113.011 105.743 L115.032 105.205 L117.053 104.634 L119.074 104.026 L121.095 103.382 L123.116 102.7 L125.137 101.978 L127.158 101.215 L129.179 100.409 L131.2 99.5584 L133.221 98.6621 L135.242 97.7181 L137.263 96.725 L139.284 95.6809 L141.305 94.5842 L143.326 93.4331 L145.347 92.2259 L147.368 90.9608 L149.389 89.6358 L151.411 88.2493 L153.432 86.7993 L155.453 85.2839 L157.474 83.7011 L159.495 82.0491 L161.516 80.3257 L163.537 78.529 L165.558 76.657 L167.579 74.7075 L169.6 72.6784 L171.621 70.5676 L173.642 68.373 L175.663 66.0923 L177.684 63.7234 L179.705 61.2639 L181.726 58.7117 L183.747 56.0643 L185.768 53.3195 L187.789 50.4749 L189.811 47.5281 L191.832 44.4767 L193.853 41.3182 L195.874 38.0502 L197.895 34.6702 L199.916 31.1756 L201.937 27.5639 L203.958 23.8325 L205.979 19.9787 L208 16"/>
<path fill="none" stroke="#737373" stroke-width="1" d="M16 112 L18.0211 112 L20.0421 112 L22.0632 112 L24.0842 112 L26.1053 112 L28.1263 112 L30.1474 112 L32.1684 112 L34.1895 111.999 L36.2105 111.999 L38.2316 111.998 L40.2526 111.997 L42.2737 111.995 L44.2947 111.993 L46.3158 111.991 L48.3368 111.987 L50.3579 111.982 L52.3789 111.977 L54.4 111.969 L56.4211 111.96 L58.4421 111.949 L60.4632 111.936 L62.4842 111.92 L64.5053 111.901 L66.5263 111.879 L68.5474 111.853 L70.5684 111.822 L72.5895 111.786 L74.6105 111.746 L76.6316 111.699 L78.6526 111.645 L80.6737 111.584 L82.6947 111.514 L84.7158 111.436 L86.7368 111.348 L88.7579 111.25 L90.7789 111.14 L92.8 111.017 L94.8211 110.881 L96.8421 110.73 L98.8632 110.563 L100.884 110.379 L102.905 110.176 L104.926 109.954 L106.947 109.711 L108.968 109.445 L110.989 109.155 L113.011 108.839 L115.032 108.495 L117.053 108.123 L119.074 107.719 L121.095 107.283 L123.116 106.812 L125.137 106.303 L127.158 105.756 L129.179 105.167 L131.2 104.535 L133.221 103.857 L135.242 103.13 L137.263 102.353 L139.284 101.521 L141.305 100.634 L143.326 99.6872 L145.347 98.6785 L147.368 97.6047 L149.389 96.4628 L151.411 95.2495 L153.432 93.9616 L155.453 92.5957 L157.474 91.1482 L159.495 89.6156 L161.516 87.9942 L163.537 86.2802 L165.558 84.4697 L167.579 82.5585 L169.6 80.5427 L171.621 78.418 L173.642 76.18 L175.663 73.8241 L177.684 71.346 L179.705 68.7408 L181.726 66.0038 L183.747 63.1298 L185.768 60.1141 L187.789 56.9512 L189.811 53.6359 L191.832 50.1628 L193.853 46.5264 L195.874 42.7207 L197.895 38.7402 L199.916 34.5787 L201.937 30.2303 L203.958 25.6887 L205.979 20.9474 L208 16"/>
<path fill="none" stroke="#2f83cc" stroke-width="1.0" d="M78 112 L16 112 C80 112, 144 112, 208 16 L145.109 110.336"/>
<circle cx="80" cy="112" r="2" stroke="#2f83cc" stroke-width="1.0" fill="none" />
<circle cx="144" cy="112" r="2" stroke="#2f83cc" stroke-width="1.0" fill="none" />
<path fill="none" stroke="#dcdcdc" stroke-width="1.75" d="M16 112 L18.0211 112 L20.0421 111.999 L22.0632 111.997 L24.0842 111.993 L26.1053 111.986 L28.1263 111.976 L30.1474 111.962 L32.1684 111.943 L34.1895 111.918 L36.2105 111.888 L38.2316 111.851 L40.2526 111.807 L42.2737 111.754 L44.2947 111.693 L46.3158 111.622 L48.3368 111.541 L50.3579 111.45 L52.3789 111.347 L54.4 111.232 L56.4211 111.104 L58.4421 110.963 L60.4632 110.808 L62.4842 110.638 L64.5053 110.452 L66.5263 110.25 L68.5474 110.032 L70.5684 109.796 L72.5895 109.542 L74.6105 109.269 L76.6316 108.977 L78.6526 108.664 L80.6737 108.331 L82.6947 107.976 L84.7158 107.599 L86.7368 107.199 L88.7579 106.776 L90.7789 106.328 L92.8 105.856 L94.8211 105.358 L96.8421 104.834 L98.8632 104.283 L100.884 103.704 L102.905 103.098 L104.926 102.462 L106.947 101.797 L108.968 101.101 L110.989 100.375 L113.011 99.6171 L115.032 98.8269 L117.053 98.0038 L119.074 97.1471 L121.095 96.2562 L123.116 95.3303 L125.137 94.3688 L127.158 93.371 L129.179 92.3363 L131.2 91.264 L133.221 90.1534 L135.242 89.0038 L137.263 87.8146 L139.284 86.585 L141.305 85.3145 L143.326 84.0023 L145.347 82.6478 L147.368 81.2503 L149.389 79.8092 L151.411 78.3237 L153.432 76.7932 L155.453 75.2169 L157.474 73.5944 L159.495 71.9248 L161.516 70.2075 L163.537 68.4419 L165.558 66.6272 L167.579 64.7628 L169.6 62.848 L171.621 60.8821 L173.642 58.8646 L175.663 56.7946 L177.684 54.6715 L179.705 52.4947 L181.726 50.2635 L183.747 47.9772 L185.768 45.6351 L187.789 43.2366 L189.811 40.781 L191.832 38.2676 L193.853 35.6958 L195.874 33.0648 L197.895 30.3741 L199.916 27.6229 L201.937 24.8106 L203.958 21.9364 L205.979 18.9998 L208 16"/>
</svg>

After

Width:  |  Height:  |  Size: 7.3 KiB

6
doc/snippets/easings-cubicinout-thumb.svg

@ -0,0 +1,6 @@
<svg class="m-image m-nopadb" style="width: 128px; height: 128px; margin-top: -16px; margin-bottom: -16px;" viewBox="0 0 128 128">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M0 32 L128 32 M0 96 L128 96
M0 92 l0 8 M128 28 l0 8"/>
<path fill="none" stroke="#dcdcdc" stroke-width="1.5" d="M0 96 L2.03175 95.999 L4.06349 95.9918 L6.09524 95.9724 L8.12698 95.9345 L10.1587 95.872 L12.1905 95.7789 L14.2222 95.6488 L16.254 95.4758 L18.2857 95.2536 L20.3175 94.9762 L22.3492 94.6373 L24.381 94.2309 L26.4127 93.7507 L28.4444 93.1907 L30.4762 92.5446 L32.5079 91.8065 L34.5397 90.97 L36.5714 90.0292 L38.6032 88.9777 L40.6349 87.8095 L42.6667 86.5185 L44.6984 85.0985 L46.7302 83.5433 L48.7619 81.8469 L50.7937 80.003 L52.8254 78.0056 L54.8571 75.8484 L56.8889 73.5254 L58.9206 71.0304 L60.9524 68.3572 L62.9841 65.4998 L65.0159 62.5002 L67.0476 59.6428 L69.0794 56.9696 L71.1111 54.4746 L73.1429 52.1516 L75.1746 49.9944 L77.2064 47.997 L79.2381 46.1531 L81.2698 44.4567 L83.3016 42.9015 L85.3333 41.4815 L87.3651 40.1905 L89.3968 39.0223 L91.4286 37.9708 L93.4603 37.03 L95.4921 36.1935 L97.5238 35.4553 L99.5556 34.8093 L101.587 34.2493 L103.619 33.7691 L105.651 33.3627 L107.683 33.0238 L109.714 32.7464 L111.746 32.5242 L113.778 32.3512 L115.81 32.2211 L117.841 32.128 L119.873 32.0655 L121.905 32.0276 L123.937 32.0082 L125.968 32.001 L128 32"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

14
doc/snippets/easings-cubicinout.svg

@ -0,0 +1,14 @@
<svg class="m-image" style="width: 224px; height: 128px;" viewBox="0 0 224 128">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M16 16 L208 16 M16 112 L208 112
M16 106 l0 12 M208 10 l0 12"/>
<path fill="none" stroke="#cd3330" stroke-width="1.5" d="M1.85263 112.154 L3.87368 112.097 L5.89474 112.056 L7.91579 112.029 L9.93684 112.012 L11.9579 112.004 L13.9789 112 L16 112"/>
<path fill="none" stroke="#cd3330" stroke-width="1.5" d="M208 16 L210.021 15.9996 L212.042 15.9964 L214.063 15.9879 L216.084 15.9713 L218.105 15.944 L220.126 15.9033 L222.147 15.8464"/>
<path fill="none" stroke="#737373" stroke-width="1" d="M16 112 L18.0211 111.979 L20.0421 111.915 L22.0632 111.809 L24.0842 111.66 L26.1053 111.468 L28.1263 111.234 L30.1474 110.958 L32.1684 110.638 L34.1895 110.277 L36.2105 109.873 L38.2316 109.426 L40.2526 108.937 L42.2737 108.405 L44.2947 107.83 L46.3158 107.213 L48.3368 106.554 L50.3579 105.852 L52.3789 105.107 L54.4 104.32 L56.4211 103.49 L58.4421 102.618 L60.4632 101.703 L62.4842 100.746 L64.5053 99.746 L66.5263 98.7036 L68.5474 97.6186 L70.5684 96.4911 L72.5895 95.321 L74.6105 94.1084 L76.6316 92.8532 L78.6526 91.5555 L80.6737 90.2152 L82.6947 88.8324 L84.7158 87.407 L86.7368 85.9391 L88.7579 84.4286 L90.7789 82.8756 L92.8 81.28 L94.8211 79.6419 L96.8421 77.9612 L98.8632 76.238 L100.884 74.4722 L102.905 72.6639 L104.926 70.8131 L106.947 68.9197 L108.968 66.9837 L110.989 65.0052 L113.011 62.9948 L115.032 61.0163 L117.053 59.0803 L119.074 57.1869 L121.095 55.3361 L123.116 53.5278 L125.137 51.762 L127.158 50.0388 L129.179 48.3581 L131.2 46.72 L133.221 45.1244 L135.242 43.5714 L137.263 42.0609 L139.284 40.593 L141.305 39.1676 L143.326 37.7848 L145.347 36.4445 L147.368 35.1468 L149.389 33.8916 L151.411 32.679 L153.432 31.5089 L155.453 30.3814 L157.474 29.2964 L159.495 28.254 L161.516 27.2541 L163.537 26.2967 L165.558 25.3819 L167.579 24.5097 L169.6 23.68 L171.621 22.8929 L173.642 22.1483 L175.663 21.4462 L177.684 20.7867 L179.705 20.1697 L181.726 19.5953 L183.747 19.0635 L185.768 18.5742 L187.789 18.1274 L189.811 17.7232 L191.832 17.3615 L193.853 17.0424 L195.874 16.7659 L197.895 16.5319 L199.916 16.3404 L201.937 16.1915 L203.958 16.0851 L205.979 16.0213 L208 16"/>
<path fill="none" stroke="#737373" stroke-width="1" d="M16 112 L18.0211 112 L20.0421 112 L22.0632 111.999 L24.0842 111.998 L26.1053 111.994 L28.1263 111.988 L30.1474 111.977 L32.1684 111.961 L34.1895 111.938 L36.2105 111.906 L38.2316 111.862 L40.2526 111.804 L42.2737 111.731 L44.2947 111.638 L46.3158 111.523 L48.3368 111.382 L50.3579 111.212 L52.3789 111.01 L54.4 110.771 L56.4211 110.491 L58.4421 110.166 L60.4632 109.791 L62.4842 109.361 L64.5053 108.872 L66.5263 108.317 L68.5474 107.691 L70.5684 106.989 L72.5895 106.204 L74.6105 105.331 L76.6316 104.362 L78.6526 103.292 L80.6737 102.113 L82.6947 100.818 L84.7158 99.3997 L86.7368 97.8506 L88.7579 96.1629 L90.7789 94.3285 L92.8 92.3392 L94.8211 90.1865 L96.8421 87.8617 L98.8632 85.3558 L100.884 82.6597 L102.905 79.764 L104.926 76.6591 L106.947 73.3351 L108.968 69.782 L110.989 65.9894 L113.011 62.0106 L115.032 58.2181 L117.053 54.6649 L119.074 51.3409 L121.095 48.236 L123.116 45.3402 L125.137 42.6442 L127.158 40.1383 L129.179 37.8135 L131.2 35.6608 L133.221 33.6715 L135.242 31.8371 L137.263 30.1494 L139.284 28.6003 L141.305 27.1821 L143.326 25.887 L145.347 24.7079 L147.368 23.6375 L149.389 22.669 L151.411 21.7956 L153.432 21.011 L155.453 20.3088 L157.474 19.6832 L159.495 19.1283 L161.516 18.6386 L163.537 18.2088 L165.558 17.8338 L167.579 17.5086 L169.6 17.2288 L171.621 16.9898 L173.642 16.7875 L175.663 16.6179 L177.684 16.4773 L179.705 16.3622 L181.726 16.2693 L183.747 16.1955 L185.768 16.138 L187.789 16.0943 L189.811 16.0619 L191.832 16.0386 L193.853 16.0226 L195.874 16.0122 L197.895 16.0059 L199.916 16.0024 L201.937 16.0008 L203.958 16.0002 L205.979 16 L208 16"/>
<path fill="none" stroke="#737373" stroke-width="1" d="M16 112 L18.0211 112 L20.0421 112 L22.0632 112 L24.0842 112 L26.1053 111.999 L28.1263 111.998 L30.1474 111.997 L32.1684 111.993 L34.1895 111.988 L36.2105 111.98 L38.2316 111.968 L40.2526 111.951 L42.2737 111.926 L44.2947 111.893 L46.3158 111.849 L48.3368 111.792 L50.3579 111.718 L52.3789 111.625 L54.4 111.508 L56.4211 111.365 L58.4421 111.189 L60.4632 110.977 L62.4842 110.722 L64.5053 110.419 L66.5263 110.061 L68.5474 109.641 L70.5684 109.152 L72.5895 108.584 L74.6105 107.928 L76.6316 107.176 L78.6526 106.317 L80.6737 105.339 L82.6947 104.231 L84.7158 102.981 L86.7368 101.574 L88.7579 99.9971 L90.7789 98.2348 L92.8 96.2714 L94.8211 94.09 L96.8421 91.673 L98.8632 89.0019 L100.884 86.057 L102.905 82.818 L104.926 79.2632 L106.947 75.3701 L108.968 71.1152 L110.989 66.4737 L113.011 61.5263 L115.032 56.8849 L117.053 52.6299 L119.074 48.7368 L121.095 45.182 L123.116 41.943 L125.137 38.9981 L127.158 36.327 L129.179 33.91 L131.2 31.7286 L133.221 29.7652 L135.242 28.0029 L137.263 26.4259 L139.284 25.0192 L141.305 23.7686 L143.326 22.6608 L145.347 21.6831 L147.368 20.8237 L149.389 20.0716 L151.411 19.4164 L153.432 18.8483 L155.453 18.3585 L157.474 17.9385 L159.495 17.5806 L161.516 17.2776 L163.537 17.023 L165.558 16.8107 L167.579 16.6352 L169.6 16.4915 L171.621 16.3751 L173.642 16.2819 L175.663 16.2082 L177.684 16.1507 L179.705 16.1068 L181.726 16.0737 L183.747 16.0494 L185.768 16.032 L187.789 16.0198 L189.811 16.0117 L191.832 16.0065 L193.853 16.0033 L195.874 16.0015 L197.895 16.0006 L199.916 16.0002 L201.937 16 L203.958 16 L205.979 16 L208 16"/>
<path fill="none" stroke="#2f83cc" stroke-width="1.0" d="M137.84 112 L16 112 C139.84 112, 84.16 16, 208 16 L86.16 16"/>
<circle cx="139.84" cy="112" r="2" stroke="#2f83cc" stroke-width="1.0" fill="none" />
<circle cx="84.16" cy="16" r="2" stroke="#2f83cc" stroke-width="1.0" fill="none" />
<path fill="none" stroke="#dcdcdc" stroke-width="1.75" d="M16 112 L18.0211 112 L20.0421 111.996 L22.0632 111.988 L24.0842 111.971 L26.1053 111.944 L28.1263 111.903 L30.1474 111.846 L32.1684 111.771 L34.1895 111.673 L36.2105 111.552 L38.2316 111.404 L40.2526 111.226 L42.2737 111.016 L44.2947 110.771 L46.3158 110.488 L48.3368 110.165 L50.3579 109.8 L52.3789 109.388 L54.4 108.928 L56.4211 108.417 L58.4421 107.852 L60.4632 107.231 L62.4842 106.551 L64.5053 105.809 L66.5263 105.002 L68.5474 104.128 L70.5684 103.184 L72.5895 102.168 L74.6105 101.077 L76.6316 99.9073 L78.6526 98.6572 L80.6737 97.3239 L82.6947 95.9046 L84.7158 94.3966 L86.7368 92.7972 L88.7579 91.1038 L90.7789 89.3136 L92.8 87.424 L94.8211 85.4323 L96.8421 83.3358 L98.8632 81.1318 L100.884 78.8176 L102.905 76.3905 L104.926 73.8479 L106.947 71.1871 L108.968 68.4053 L110.989 65.4999 L113.011 62.5001 L115.032 59.5947 L117.053 56.8129 L119.074 54.1521 L121.095 51.6095 L123.116 49.1824 L125.137 46.8682 L127.158 44.6642 L129.179 42.5677 L131.2 40.576 L133.221 38.6864 L135.242 36.8962 L137.263 35.2028 L139.284 33.6034 L141.305 32.0954 L143.326 30.6761 L145.347 29.3428 L147.368 28.0927 L149.389 26.9233 L151.411 25.8318 L153.432 24.8156 L155.453 23.8719 L157.474 22.9981 L159.495 22.1915 L161.516 21.4493 L163.537 20.769 L165.558 20.1478 L167.579 19.583 L169.6 19.072 L171.621 18.612 L173.642 18.2004 L175.663 17.8345 L177.684 17.5116 L179.705 17.229 L181.726 16.984 L183.747 16.7739 L185.768 16.5961 L187.789 16.4479 L189.811 16.3265 L191.832 16.2293 L193.853 16.1536 L195.874 16.0967 L197.895 16.056 L199.916 16.0287 L201.937 16.0121 L203.958 16.0036 L205.979 16.0004 L208 16"/>
</svg>

After

Width:  |  Height:  |  Size: 7.3 KiB

6
doc/snippets/easings-cubicout-thumb.svg

@ -0,0 +1,6 @@
<svg class="m-image m-nopadb" style="width: 128px; height: 128px; margin-top: -16px; margin-bottom: -16px;" viewBox="0 0 128 128">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M0 32 L128 32 M0 96 L128 96
M0 92 l0 8 M128 28 l0 8"/>
<path fill="none" stroke="#dcdcdc" stroke-width="1.5" d="M0 96 L2.03175 93.0005 L4.06349 90.0962 L6.09524 87.2856 L8.12698 84.5671 L10.1587 81.9393 L12.1905 79.4005 L14.2222 76.9492 L16.254 74.584 L18.2857 72.3032 L20.3175 70.1053 L22.3492 67.9889 L24.381 65.9523 L26.4127 63.994 L28.4444 62.1125 L30.4762 60.3062 L32.5079 58.5737 L34.5397 56.9133 L36.5714 55.3236 L38.6032 53.803 L40.6349 52.35 L42.6667 50.963 L44.6984 49.6405 L46.7302 48.3809 L48.7619 47.1828 L50.7937 46.0446 L52.8254 44.9647 L54.8571 43.9417 L56.8889 42.9739 L58.9206 42.0599 L60.9524 41.1981 L62.9841 40.387 L65.0159 39.6251 L67.0476 38.9107 L69.0794 38.2424 L71.1111 37.6187 L73.1429 37.0379 L75.1746 36.4986 L77.2064 35.9992 L79.2381 35.5383 L81.2698 35.1142 L83.3016 34.7254 L85.3333 34.3704 L87.3651 34.0476 L89.3968 33.7556 L91.4286 33.4927 L93.4603 33.2575 L95.4921 33.0484 L97.5238 32.8638 L99.5556 32.7023 L101.587 32.5623 L103.619 32.4423 L105.651 32.3407 L107.683 32.256 L109.714 32.1866 L111.746 32.1311 L113.778 32.0878 L115.81 32.0553 L117.841 32.032 L119.873 32.0164 L121.905 32.0069 L123.937 32.0021 L125.968 32.0003 L128 32"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

14
doc/snippets/easings-cubicout.svg

@ -0,0 +1,14 @@
<svg class="m-image" style="width: 224px; height: 128px;" viewBox="0 0 224 128">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M16 16 L208 16 M16 112 L208 112
M16 106 l0 12 M208 10 l0 12"/>
<path fill="none" stroke="#3ad267" stroke-width="1.5" d="M1.85263 134.823 L3.87368 131.362 L5.89474 127.97 L7.91579 124.644 L9.93684 121.385 L11.9579 118.192 L13.9789 115.064 L16 112"/>
<path fill="none" stroke="#cd3330" stroke-width="1.5" d="M208 16 L210.021 15.9999 L212.042 15.9991 L214.063 15.997 L216.084 15.9928 L218.105 15.986 L220.126 15.9758 L222.147 15.9616"/>
<path fill="none" stroke="#737373" stroke-width="1" d="M16 112 L18.0211 109.99 L20.0421 108 L22.0632 106.033 L24.0842 104.086 L26.1053 102.161 L28.1263 100.257 L30.1474 98.3738 L32.1684 96.5124 L34.1895 94.6721 L36.2105 92.8532 L38.2316 91.0555 L40.2526 89.2791 L42.2737 87.524 L44.2947 85.7901 L46.3158 84.0776 L48.3368 82.3863 L50.3579 80.7162 L52.3789 79.0675 L54.4 77.44 L56.4211 75.8338 L58.4421 74.2489 L60.4632 72.6852 L62.4842 71.1428 L64.5053 69.6217 L66.5263 68.1219 L68.5474 66.6433 L70.5684 65.186 L72.5895 63.75 L74.6105 62.3353 L76.6316 60.9418 L78.6526 59.5696 L80.6737 58.2187 L82.6947 56.8891 L84.7158 55.5807 L86.7368 54.2936 L88.7579 53.0278 L90.7789 51.7833 L92.8 50.56 L94.8211 49.358 L96.8421 48.1773 L98.8632 47.0178 L100.884 45.8797 L102.905 44.7628 L104.926 43.6671 L106.947 42.5928 L108.968 41.5397 L110.989 40.5079 L113.011 39.4974 L115.032 38.5081 L117.053 37.5402 L119.074 36.5935 L121.095 35.668 L123.116 34.7639 L125.137 33.881 L127.158 33.0194 L129.179 32.1791 L131.2 31.36 L133.221 30.5622 L135.242 29.7857 L137.263 29.0305 L139.284 28.2965 L141.305 27.5838 L143.326 26.8924 L145.347 26.2223 L147.368 25.5734 L149.389 24.9458 L151.411 24.3395 L153.432 23.7545 L155.453 23.1907 L157.474 22.6482 L159.495 22.127 L161.516 21.627 L163.537 21.1484 L165.558 20.691 L167.579 20.2548 L169.6 19.84 L171.621 19.4464 L173.642 19.0741 L175.663 18.7231 L177.684 18.3933 L179.705 18.0849 L181.726 17.7977 L183.747 17.5317 L185.768 17.2871 L187.789 17.0637 L189.811 16.8616 L191.832 16.6808 L193.853 16.5212 L195.874 16.3829 L197.895 16.2659 L199.916 16.1702 L201.937 16.0957 L203.958 16.0425 L205.979 16.0106 L208 16"/>
<path fill="none" stroke="#737373" stroke-width="1" d="M16 112 L18.0211 108.021 L20.0421 104.168 L22.0632 100.436 L24.0842 96.8244 L26.1053 93.3298 L28.1263 89.9498 L30.1474 86.6818 L32.1684 83.5233 L34.1895 80.4719 L36.2105 77.5251 L38.2316 74.6805 L40.2526 71.9357 L42.2737 69.2883 L44.2947 66.7361 L46.3158 64.2766 L48.3368 61.9077 L50.3579 59.627 L52.3789 57.4324 L54.4 55.3216 L56.4211 53.2925 L58.4421 51.343 L60.4632 49.471 L62.4842 47.6743 L64.5053 45.9509 L66.5263 44.2989 L68.5474 42.7161 L70.5684 41.2007 L72.5895 39.7507 L74.6105 38.3642 L76.6316 37.0392 L78.6526 35.7741 L80.6737 34.5669 L82.6947 33.4158 L84.7158 32.3191 L86.7368 31.275 L88.7579 30.2819 L90.7789 29.3379 L92.8 28.4416 L94.8211 27.5912 L96.8421 26.7852 L98.8632 26.0219 L100.884 25.2999 L102.905 24.6177 L104.926 23.9737 L106.947 23.3664 L108.968 22.7946 L110.989 22.2567 L113.011 21.7513 L115.032 21.2773 L117.053 20.8331 L119.074 20.4176 L121.095 20.0295 L123.116 19.6675 L125.137 19.3305 L127.158 19.0173 L129.179 18.7267 L131.2 18.4576 L133.221 18.2089 L135.242 17.9796 L137.263 17.7687 L139.284 17.5751 L141.305 17.3978 L143.326 17.2359 L145.347 17.0885 L147.368 16.9547 L149.389 16.8336 L151.411 16.7244 L153.432 16.6264 L155.453 16.5386 L157.474 16.4604 L159.495 16.391 L161.516 16.3298 L163.537 16.2761 L165.558 16.2292 L167.579 16.1886 L169.6 16.1536 L171.621 16.1237 L173.642 16.0984 L175.663 16.0772 L177.684 16.0597 L179.705 16.0453 L181.726 16.0337 L183.747 16.0244 L185.768 16.0173 L187.789 16.0118 L189.811 16.0077 L191.832 16.0048 L193.853 16.0028 L195.874 16.0015 L197.895 16.0007 L199.916 16.0003 L201.937 16.0001 L203.958 16 L205.979 16 L208 16"/>
<path fill="none" stroke="#737373" stroke-width="1" d="M16 112 L18.0211 107.053 L20.0421 102.311 L22.0632 97.7697 L24.0842 93.4213 L26.1053 89.2598 L28.1263 85.2793 L30.1474 81.4736 L32.1684 77.8372 L34.1895 74.3641 L36.2105 71.0488 L38.2316 67.8859 L40.2526 64.8702 L42.2737 61.9962 L44.2947 59.2592 L46.3158 56.654 L48.3368 54.1759 L50.3579 51.82 L52.3789 49.582 L54.4 47.4573 L56.4211 45.4415 L58.4421 43.5303 L60.4632 41.7198 L62.4842 40.0058 L64.5053 38.3844 L66.5263 36.8518 L68.5474 35.4043 L70.5684 34.0384 L72.5895 32.7505 L74.6105 31.5372 L76.6316 30.3953 L78.6526 29.3215 L80.6737 28.3128 L82.6947 27.3661 L84.7158 26.4786 L86.7368 25.6474 L88.7579 24.8698 L90.7789 24.1432 L92.8 23.465 L94.8211 22.8327 L96.8421 22.244 L98.8632 21.6967 L100.884 21.1884 L102.905 20.717 L104.926 20.2806 L106.947 19.8771 L108.968 19.5046 L110.989 19.1612 L113.011 18.8454 L115.032 18.5553 L117.053 18.2894 L119.074 18.046 L121.095 17.8239 L123.116 17.6214 L125.137 17.4374 L127.158 17.2704 L129.179 17.1194 L131.2 16.983 L133.221 16.8603 L135.242 16.7502 L137.263 16.6516 L139.284 16.5637 L141.305 16.4855 L143.326 16.4163 L145.347 16.3552 L147.368 16.3015 L149.389 16.2545 L151.411 16.2135 L153.432 16.178 L155.453 16.1474 L157.474 16.1212 L159.495 16.0988 L161.516 16.0799 L163.537 16.0639 L165.558 16.0507 L167.579 16.0397 L169.6 16.0307 L171.621 16.0234 L173.642 16.0176 L175.663 16.013 L177.684 16.0094 L179.705 16.0067 L181.726 16.0046 L183.747 16.0031 L185.768 16.002 L187.789 16.0012 L189.811 16.0007 L191.832 16.0004 L193.853 16.0002 L195.874 16.0001 L197.895 16 L199.916 16 L201.937 16 L203.958 16 L205.979 16 L208 16"/>
<path fill="none" stroke="#2f83cc" stroke-width="1.0" d="M78.8906 17.6641 L16 112 C80 16, 144 16, 208 16 L146 16"/>
<circle cx="80" cy="16" r="2" stroke="#2f83cc" stroke-width="1.0" fill="none" />
<circle cx="144" cy="16" r="2" stroke="#2f83cc" stroke-width="1.0" fill="none" />
<path fill="none" stroke="#dcdcdc" stroke-width="1.75" d="M16 112 L18.0211 109 L20.0421 106.064 L22.0632 103.189 L24.0842 100.377 L26.1053 97.6259 L28.1263 94.9351 L30.1474 92.3042 L32.1684 89.7324 L34.1895 87.219 L36.2105 84.7634 L38.2316 82.3649 L40.2526 80.0228 L42.2737 77.7365 L44.2947 75.5053 L46.3158 73.3285 L48.3368 71.2054 L50.3579 69.1354 L52.3789 67.1179 L54.4 65.152 L56.4211 63.2372 L58.4421 61.3728 L60.4632 59.5581 L62.4842 57.7925 L64.5053 56.0752 L66.5263 54.4056 L68.5474 52.7831 L70.5684 51.2068 L72.5895 49.6763 L74.6105 48.1908 L76.6316 46.7497 L78.6526 45.3522 L80.6737 43.9977 L82.6947 42.6855 L84.7158 41.415 L86.7368 40.1854 L88.7579 38.9962 L90.7789 37.8466 L92.8 36.736 L94.8211 35.6637 L96.8421 34.629 L98.8632 33.6312 L100.884 32.6697 L102.905 31.7438 L104.926 30.8529 L106.947 29.9962 L108.968 29.1731 L110.989 28.3829 L113.011 27.625 L115.032 26.8987 L117.053 26.2032 L119.074 25.538 L121.095 24.9024 L123.116 24.2956 L125.137 23.7171 L127.158 23.1661 L129.179 22.6419 L131.2 22.144 L133.221 21.6716 L135.242 21.2241 L137.263 20.8007 L139.284 20.4009 L141.305 20.0239 L143.326 19.669 L145.347 19.3357 L147.368 19.0232 L149.389 18.7308 L151.411 18.458 L153.432 18.2039 L155.453 17.968 L157.474 17.7495 L159.495 17.5479 L161.516 17.3623 L163.537 17.1923 L165.558 17.037 L167.579 16.8958 L169.6 16.768 L171.621 16.653 L173.642 16.5501 L175.663 16.4586 L177.684 16.3779 L179.705 16.3072 L181.726 16.246 L183.747 16.1935 L185.768 16.149 L187.789 16.112 L189.811 16.0816 L191.832 16.0573 L193.853 16.0384 L195.874 16.0242 L197.895 16.014 L199.916 16.0072 L201.937 16.003 L203.958 16.0009 L205.979 16.0001 L208 16"/>
</svg>

After

Width:  |  Height:  |  Size: 7.2 KiB

6
doc/snippets/easings-elasticin-thumb.svg

@ -0,0 +1,6 @@
<svg class="m-image m-nopadb" style="width: 128px; height: 128px; margin-top: -16px; margin-bottom: -16px;" viewBox="0 0 128 128">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M0 32 L128 32 M0 96 L128 96
M0 92 l0 8 M128 28 l0 8"/>
<path fill="none" stroke="#dcdcdc" stroke-width="1.5" d="M0 96 L2.03175 95.9778 L4.06349 95.953 L6.09524 95.9282 L8.12698 95.9066 L10.1587 95.8918 L12.1905 95.8874 L14.2222 95.8966 L16.254 95.9214 L18.2857 95.9626 L20.3175 96.0187 L22.3492 96.0862 L24.381 96.1592 L26.4127 96.2294 L28.4444 96.2872 L30.4762 96.3219 L32.5079 96.3234 L34.5397 96.2833 L36.5714 96.1965 L38.6032 96.0629 L40.6349 95.8882 L42.6667 95.685 L44.6984 95.4727 L46.7302 95.2766 L48.7619 95.1261 L50.7937 95.052 L52.8254 95.0827 L54.8571 95.24 L56.8889 95.5346 L58.9206 95.9621 L60.9524 96.4998 L62.9841 97.105 L65.0159 97.7157 L67.0476 98.2541 L69.0794 98.6324 L71.1111 98.7622 L73.1429 98.5655 L75.1746 97.9873 L77.2064 97.009 L79.2381 95.6589 L81.2698 94.0208 L83.3016 92.2363 L85.3333 90.5011 L87.3651 89.0524 L89.3968 88.1489 L91.4286 88.042 L93.4603 88.9416 L95.4921 90.9786 L97.5238 94.1687 L99.5556 98.3818 L101.587 103.323 L103.619 108.529 L105.651 113.391 L107.683 117.193 L109.714 119.18 L111.746 118.647 L113.778 115.045 L115.81 108.083 L117.841 97.8403 L119.873 84.8374 L121.905 70.0828 L123.937 55.0602 L125.968 41.6534 L128 32"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

8
doc/snippets/easings-elasticin.svg

@ -0,0 +1,8 @@
<svg class="m-image" style="width: 224px; height: 192px; margin-top: -24px; margin-bottom: -8px;" viewBox="0 0 224 192">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M16 48 L208 48 M16 144 L208 144
M16 138 l0 12 M208 42 l0 12"/>
<path fill="none" stroke="#3ad267" stroke-width="1.5" d="M1.85263 144.056 L3.87368 144.058 L5.89474 144.057 L7.91579 144.053 L9.93684 144.045 L11.9579 144.034 L13.9789 144.019 L16 144"/>
<path fill="none" stroke="#cd3330" stroke-width="1.5" d="M208 48 L210.021 43.1102 L212.042 43.0252 L214.063 48.5046 L216.084 60.1202 L218.105 78.194 L220.126 102.742 L222.147 133.427"/>
<path fill="none" stroke="#dcdcdc" stroke-width="1.75" d="M16 144 L18.0211 143.978 L20.0421 143.955 L22.0632 143.93 L24.0842 143.905 L26.1053 143.881 L28.1263 143.86 L30.1474 143.844 L32.1684 143.834 L34.1895 143.831 L36.2105 143.837 L38.2316 143.853 L40.2526 143.88 L42.2737 143.918 L44.2947 143.966 L46.3158 144.023 L48.3368 144.088 L50.3579 144.159 L52.3789 144.232 L54.4 144.303 L56.4211 144.369 L58.4421 144.425 L60.4632 144.467 L62.4842 144.489 L64.5053 144.487 L66.5263 144.458 L68.5474 144.4 L70.5684 144.31 L72.5895 144.189 L74.6105 144.039 L76.6316 143.862 L78.6526 143.666 L80.6737 143.457 L82.6947 143.246 L84.7158 143.042 L86.7368 142.86 L88.7579 142.712 L90.7789 142.612 L92.8 142.573 L94.8211 142.607 L96.8421 142.723 L98.8632 142.928 L100.884 143.224 L102.905 143.609 L104.926 144.077 L106.947 144.614 L108.968 145.201 L110.989 145.814 L113.011 146.423 L115.032 146.995 L117.053 147.49 L119.074 147.871 L121.095 148.097 L123.116 148.133 L125.137 147.946 L127.158 147.512 L129.179 146.815 L131.2 145.854 L133.221 144.639 L135.242 143.198 L137.263 141.575 L139.284 139.831 L141.305 138.043 L143.326 136.303 L145.347 134.715 L147.368 133.391 L149.389 132.444 L151.411 131.987 L153.432 132.122 L155.453 132.934 L157.474 134.485 L159.495 136.805 L161.516 139.888 L163.537 143.681 L165.558 148.088 L167.579 152.962 L169.6 158.107 L171.621 163.28 L173.642 168.202 L175.663 172.559 L177.684 176.024 L179.705 178.264 L181.726 178.963 L183.747 177.841 L185.768 174.673 L187.789 169.313 L189.811 161.713 L191.832 151.94 L193.853 140.193 L195.874 126.811 L197.895 112.276 L199.916 97.2093 L201.937 82.3606 L203.958 68.584 L205.979 56.8088 L208 48"/>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

6
doc/snippets/easings-elasticinout-thumb.svg

@ -0,0 +1,6 @@
<svg class="m-image m-nopadb" style="width: 128px; height: 128px; margin-top: -16px; margin-bottom: -16px;" viewBox="0 0 128 128">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M0 32 L128 32 M0 96 L128 96
M0 92 l0 8 M128 28 l0 8"/>
<path fill="none" stroke="#dcdcdc" stroke-width="1.5" d="M0 96 L2.03175 95.9765 L4.06349 95.9533 L6.09524 95.9437 L8.12698 95.9607 L10.1587 96.0094 L12.1905 96.0796 L14.2222 96.1436 L16.254 96.1617 L18.2857 96.0982 L20.3175 95.9441 L22.3492 95.7364 L24.381 95.5631 L26.4127 95.5413 L28.4444 95.7673 L30.4762 96.2499 L32.5079 96.8579 L34.5397 97.3162 L36.5714 97.2827 L38.6032 96.5045 L40.6349 95.0104 L42.6667 93.2505 L44.6984 92.0745 L46.7302 92.4708 L48.7619 95.0844 L50.7937 99.6613 L52.8254 104.696 L54.8571 107.59 L56.8889 105.522 L58.9206 96.9202 L60.9524 83.0414 L62.9841 68.8267 L65.0159 59.1733 L67.0476 44.9585 L69.0794 31.0798 L71.1111 22.4777 L73.1429 20.4101 L75.1746 23.3044 L77.2064 28.3387 L79.2381 32.9156 L81.2698 35.5292 L83.3016 35.9255 L85.3333 34.7495 L87.3651 32.9896 L89.3968 31.4955 L91.4286 30.7173 L93.4603 30.6838 L95.4921 31.1421 L97.5238 31.7501 L99.5556 32.2327 L101.587 32.4587 L103.619 32.4369 L105.651 32.2636 L107.683 32.0559 L109.714 31.9017 L111.746 31.8383 L113.778 31.8564 L115.81 31.9204 L117.841 31.9906 L119.873 32.0393 L121.905 32.0563 L123.937 32.0467 L125.968 32.0235 L128 32"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

8
doc/snippets/easings-elasticinout.svg

@ -0,0 +1,8 @@
<svg class="m-image" style="width: 224px; height: 192px; margin-top: -24px; margin-bottom: -8px;" viewBox="0 0 224 192">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M16 48 L208 48 M16 144 L208 144
M16 138 l0 12 M208 42 l0 12"/>
<path fill="none" stroke="#3ad267" stroke-width="1.5" d="M1.85263 144.002 L3.87368 144.01 L5.89474 144.019 L7.91579 144.026 L9.93684 144.029 L11.9579 144.027 L13.9789 144.017 L16 144"/>
<path fill="none" stroke="#3ad267" stroke-width="1.5" d="M208 48 L210.021 47.9831 L212.042 47.9735 L214.063 47.9709 L216.084 47.9742 L218.105 47.9811 L220.126 47.9896 L222.147 47.9978"/>
<path fill="none" stroke="#dcdcdc" stroke-width="1.75" d="M16 144 L18.0211 143.977 L20.0421 143.952 L22.0632 143.93 L24.0842 143.917 L26.1053 143.919 L28.1263 143.94 L30.1474 143.983 L32.1684 144.044 L34.1895 144.116 L36.2105 144.185 L38.2316 144.233 L40.2526 144.244 L42.2737 144.2 L44.2947 144.095 L46.3158 143.931 L48.3368 143.729 L50.3579 143.521 L52.3789 143.356 L54.4 143.287 L56.4211 143.362 L58.4421 143.612 L60.4632 144.038 L62.4842 144.6 L64.5053 145.212 L66.5263 145.745 L68.5474 146.049 L70.5684 145.973 L72.5895 145.408 L74.6105 144.32 L76.6316 142.788 L78.6526 141.021 L80.6737 139.358 L82.6947 138.222 L84.7158 138.061 L86.7368 139.243 L88.7579 141.944 L90.7789 146.044 L92.8 151.053 L94.8211 156.101 L96.8421 160.012 L98.8632 161.482 L100.884 159.336 L102.905 152.856 L104.926 142.096 L106.947 128.138 L108.968 113.18 L110.989 100.404 L113.011 91.5956 L115.032 78.8197 L117.053 63.8621 L119.074 49.9035 L121.095 39.1437 L123.116 32.6635 L125.137 30.5184 L127.158 31.988 L129.179 35.8991 L131.2 40.9466 L133.221 45.9558 L135.242 50.0562 L137.263 52.7575 L139.284 53.939 L141.305 53.7779 L143.326 52.6424 L145.347 50.9785 L147.368 49.2124 L149.389 47.6804 L151.411 46.5923 L153.432 46.0269 L155.453 45.9514 L157.474 46.2549 L159.495 46.7883 L161.516 47.3995 L163.537 47.9616 L165.558 48.3881 L167.579 48.6385 L169.6 48.7133 L171.621 48.6438 L173.642 48.4788 L175.663 48.2714 L177.684 48.0689 L179.705 47.9055 L181.726 47.8 L183.747 47.7564 L185.768 47.7666 L187.789 47.8153 L189.811 47.8841 L191.832 47.9558 L193.853 48.0172 L195.874 48.06 L197.895 48.0814 L199.916 48.0831 L201.937 48.0698 L203.958 48.0476 L205.979 48.0226 L208 48"/>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

6
doc/snippets/easings-elasticout-thumb.svg

@ -0,0 +1,6 @@
<svg class="m-image m-nopadb" style="width: 128px; height: 128px; margin-top: -16px; margin-bottom: -16px;" viewBox="0 0 128 128">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M0 32 L128 32 M0 96 L128 96
M0 92 l0 8 M128 28 l0 8"/>
<path fill="none" stroke="#dcdcdc" stroke-width="1.5" d="M0 96 L2.03175 86.3466 L4.06349 72.9397 L6.09524 57.9171 L8.12698 43.1626 L10.1587 30.1596 L12.1905 19.9167 L14.2222 12.9555 L16.254 9.35266 L18.2857 8.82019 L20.3175 10.8071 L22.3492 14.6087 L24.381 19.4708 L26.4127 24.6774 L28.4444 29.6183 L30.4762 33.8313 L32.5079 37.0214 L34.5397 39.0585 L36.5714 39.958 L38.6032 39.8511 L40.6349 38.9475 L42.6667 37.4989 L44.6984 35.7637 L46.7302 33.9792 L48.7619 32.3411 L50.7937 30.991 L52.8254 30.0127 L54.8571 29.4345 L56.8889 29.2378 L58.9206 29.3676 L60.9524 29.7459 L62.9841 30.2843 L65.0159 30.895 L67.0476 31.5002 L69.0794 32.0379 L71.1111 32.4654 L73.1429 32.76 L75.1746 32.9173 L77.2064 32.948 L79.2381 32.8739 L81.2698 32.7234 L83.3016 32.5273 L85.3333 32.315 L87.3651 32.1118 L89.3968 31.9371 L91.4286 31.8035 L93.4603 31.7167 L95.4921 31.6766 L97.5238 31.6781 L99.5556 31.7128 L101.587 31.7706 L103.619 31.8408 L105.651 31.9138 L107.683 31.9813 L109.714 32.0374 L111.746 32.0786 L113.778 32.1034 L115.81 32.1126 L117.841 32.1082 L119.873 32.0934 L121.905 32.0718 L123.937 32.047 L125.968 32.0222 L128 32"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

8
doc/snippets/easings-elasticout.svg

@ -0,0 +1,8 @@
<svg class="m-image" style="width: 224px; height: 192px; margin-top: -24px; margin-bottom: -8px;" viewBox="0 0 224 192">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M16 48 L208 48 M16 144 L208 144
M16 138 l0 12 M208 42 l0 12"/>
<path fill="none" stroke="#cd3330" stroke-width="1.5" d="M1.85263 58.5737 L3.87368 89.2578 L5.89474 113.806 L7.91579 131.88 L9.93684 143.495 L11.9579 148.975 L13.9789 148.89 L16 144"/>
<path fill="none" stroke="#3ad267" stroke-width="1.5" d="M208 48 L210.021 47.9814 L212.042 47.9662 L214.063 47.9547 L216.084 47.9469 L218.105 47.9428 L220.126 47.9419 L222.147 47.9439"/>
<path fill="none" stroke="#dcdcdc" stroke-width="1.75" d="M16 144 L18.0211 135.191 L20.0421 123.416 L22.0632 109.639 L24.0842 94.7905 L26.1053 79.7243 L28.1263 65.1892 L30.1474 51.8071 L32.1684 40.0602 L34.1895 30.2874 L36.2105 22.687 L38.2316 17.3271 L40.2526 14.159 L42.2737 13.0368 L44.2947 13.736 L46.3158 15.9761 L48.3368 19.4407 L50.3579 23.7983 L52.3789 28.7196 L54.4 33.8932 L56.4211 39.0377 L58.4421 43.9115 L60.4632 48.3188 L62.4842 52.1124 L64.5053 55.1947 L66.5263 57.5149 L68.5474 59.0659 L70.5684 59.8781 L72.5895 60.0129 L74.6105 59.5559 L76.6316 58.6093 L78.6526 57.2847 L80.6737 55.6968 L82.6947 53.957 L84.7158 52.1691 L86.7368 50.4249 L88.7579 48.8018 L90.7789 47.3607 L92.8 46.1459 L94.8211 45.1845 L96.8421 44.4881 L98.8632 44.0539 L100.884 43.867 L102.905 43.9028 L104.926 44.1293 L106.947 44.5099 L108.968 45.0054 L110.989 45.5766 L113.011 46.1859 L115.032 46.7991 L117.053 47.3863 L119.074 47.9232 L121.095 48.3908 L123.116 48.7762 L125.137 49.0723 L127.158 49.277 L129.179 49.3929 L131.2 49.4266 L133.221 49.3876 L135.242 49.2877 L137.263 49.1398 L139.284 48.9576 L141.305 48.7545 L143.326 48.5429 L145.347 48.3341 L147.368 48.1377 L149.389 47.9614 L151.411 47.8109 L153.432 47.6898 L155.453 47.6001 L157.474 47.5415 L159.495 47.5128 L161.516 47.5113 L163.537 47.5333 L165.558 47.5746 L167.579 47.6306 L169.6 47.6966 L171.621 47.7682 L173.642 47.8411 L175.663 47.9117 L177.684 47.9769 L179.705 48.0343 L181.726 48.0824 L183.747 48.1199 L185.768 48.1467 L187.789 48.1628 L189.811 48.169 L191.832 48.1662 L193.853 48.1559 L195.874 48.1395 L197.895 48.1188 L199.916 48.0951 L201.937 48.0701 L203.958 48.0452 L205.979 48.0215 L208 48"/>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

6
doc/snippets/easings-exponentialin-thumb.svg

@ -0,0 +1,6 @@
<svg class="m-image m-nopadb" style="width: 128px; height: 128px; margin-top: -16px; margin-bottom: -16px;" viewBox="0 0 128 128">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M0 32 L128 32 M0 96 L128 96
M0 92 l0 8 M128 28 l0 8"/>
<path fill="none" stroke="#dcdcdc" stroke-width="1.5" d="M0 96 L2.03175 95.9302 L4.06349 95.9221 L6.09524 95.9131 L8.12698 95.9029 L10.1587 95.8917 L12.1905 95.8791 L14.2222 95.865 L16.254 95.8493 L18.2857 95.8318 L20.3175 95.8122 L22.3492 95.7904 L24.381 95.766 L26.4127 95.7388 L28.4444 95.7084 L30.4762 95.6745 L32.5079 95.6366 L34.5397 95.5943 L36.5714 95.5471 L38.6032 95.4945 L40.6349 95.4357 L42.6667 95.37 L44.6984 95.2968 L46.7302 95.215 L48.7619 95.1237 L50.7937 95.0218 L52.8254 94.908 L54.8571 94.781 L56.8889 94.6392 L58.9206 94.4809 L60.9524 94.3043 L62.9841 94.1071 L65.0159 93.8869 L67.0476 93.6411 L69.0794 93.3668 L71.1111 93.0605 L73.1429 92.7187 L75.1746 92.337 L77.2064 91.911 L79.2381 91.4354 L81.2698 90.9046 L83.3016 90.3119 L85.3333 89.6504 L87.3651 88.9119 L89.3968 88.0875 L91.4286 87.1673 L93.4603 86.14 L95.4921 84.9932 L97.5238 83.7131 L99.5556 82.2841 L101.587 80.6889 L103.619 78.9081 L105.651 76.9203 L107.683 74.7012 L109.714 72.2241 L111.746 69.4588 L113.778 66.372 L115.81 62.9262 L117.841 59.0795 L119.873 54.7855 L121.905 49.9921 L123.937 44.6412 L125.968 38.668 L128 32"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

8
doc/snippets/easings-exponentialin.svg

@ -0,0 +1,8 @@
<svg class="m-image" style="width: 224px; height: 128px;" viewBox="0 0 224 128">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M16 16 L208 16 M16 112 L208 112
M16 106 l0 12 M208 10 l0 12"/>
<path fill="none" stroke="#3ad267" stroke-width="1.5" d="M1.85263 112 L3.87368 112 L5.89474 112 L7.91579 112 L9.93684 112 L11.9579 112 L13.9789 112 L16 112"/>
<path fill="none" stroke="#3ad267" stroke-width="1.5" d="M208 16 L210.021 8.7337 L212.042 0.91745 L214.063 -7.49046 L216.084 -16.5349 L218.105 -26.2637 L220.126 -36.7289 L222.147 -47.9863"/>
<path fill="none" stroke="#dcdcdc" stroke-width="1.75" d="M16 112 L18.0211 111.899 L20.0421 111.892 L22.0632 111.883 L24.0842 111.874 L26.1053 111.865 L28.1263 111.855 L30.1474 111.844 L32.1684 111.832 L34.1895 111.819 L36.2105 111.806 L38.2316 111.791 L40.2526 111.775 L42.2737 111.758 L44.2947 111.74 L46.3158 111.72 L48.3368 111.699 L50.3579 111.676 L52.3789 111.651 L54.4 111.625 L56.4211 111.597 L58.4421 111.566 L60.4632 111.533 L62.4842 111.498 L64.5053 111.46 L66.5263 111.419 L68.5474 111.375 L70.5684 111.328 L72.5895 111.277 L74.6105 111.222 L76.6316 111.163 L78.6526 111.1 L80.6737 111.032 L82.6947 110.959 L84.7158 110.88 L86.7368 110.795 L88.7579 110.704 L90.7789 110.606 L92.8 110.5 L94.8211 110.386 L96.8421 110.264 L98.8632 110.133 L100.884 109.992 L102.905 109.84 L104.926 109.676 L106.947 109.5 L108.968 109.311 L110.989 109.107 L113.011 108.889 L115.032 108.653 L117.053 108.4 L119.074 108.127 L121.095 107.834 L123.116 107.519 L125.137 107.18 L127.158 106.815 L129.179 106.422 L131.2 106 L133.221 105.546 L135.242 105.057 L137.263 104.532 L139.284 103.967 L141.305 103.359 L143.326 102.704 L145.347 102.001 L147.368 101.244 L149.389 100.43 L151.411 99.5541 L153.432 98.6121 L155.453 97.5988 L157.474 96.5087 L159.495 95.3362 L161.516 94.0749 L163.537 92.7181 L165.558 91.2587 L167.579 89.6887 L169.6 88 L171.621 86.1834 L173.642 84.2294 L175.663 82.1274 L177.684 79.8663 L179.705 77.4341 L181.726 74.8178 L183.747 72.0034 L185.768 68.9761 L187.789 65.7196 L189.811 62.2165 L191.832 58.4484 L193.853 54.3951 L195.874 50.0349 L197.895 45.3447 L199.916 40.2996 L201.937 34.8725 L203.958 29.0347 L205.979 22.755 L208 16"/>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

6
doc/snippets/easings-exponentialinout-thumb.svg

@ -0,0 +1,6 @@
<svg class="m-image m-nopadb" style="width: 128px; height: 128px; margin-top: -16px; margin-bottom: -16px;" viewBox="0 0 128 128">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M0 32 L128 32 M0 96 L128 96
M0 92 l0 8 M128 28 l0 8"/>
<path fill="none" stroke="#dcdcdc" stroke-width="1.5" d="M0 96 L2.03175 95.9611 L4.06349 95.9515 L6.09524 95.9395 L8.12698 95.9246 L10.1587 95.9061 L12.1905 95.883 L14.2222 95.8542 L16.254 95.8183 L18.2857 95.7736 L20.3175 95.7178 L22.3492 95.6484 L24.381 95.5618 L26.4127 95.454 L28.4444 95.3196 L30.4762 95.1521 L32.5079 94.9435 L34.5397 94.6834 L36.5714 94.3593 L38.6032 93.9555 L40.6349 93.4523 L42.6667 92.8252 L44.6984 92.0438 L46.7302 91.07 L48.7619 89.8566 L50.7937 88.3444 L52.8254 86.4601 L54.8571 84.112 L56.8889 81.186 L58.9206 77.5398 L60.9524 72.996 L62.9841 67.334 L65.0159 60.666 L67.0476 55.0039 L69.0794 50.4602 L71.1111 46.814 L73.1429 43.8879 L75.1746 41.5399 L77.2064 39.6556 L79.2381 38.1434 L81.2698 36.93 L83.3016 35.9562 L85.3333 35.1748 L87.3651 34.5477 L89.3968 34.0445 L91.4286 33.6407 L93.4603 33.3166 L95.4921 33.0566 L97.5238 32.8479 L99.5556 32.6804 L101.587 32.546 L103.619 32.4382 L105.651 32.3516 L107.683 32.2822 L109.714 32.2264 L111.746 32.1817 L113.778 32.1458 L115.81 32.117 L117.841 32.0939 L119.873 32.0754 L121.905 32.0605 L123.937 32.0485 L125.968 32.0389 L128 32"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

8
doc/snippets/easings-exponentialinout.svg

@ -0,0 +1,8 @@
<svg class="m-image" style="width: 224px; height: 128px;" viewBox="0 0 224 128">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M16 16 L208 16 M16 112 L208 112
M16 106 l0 12 M208 10 l0 12"/>
<path fill="none" stroke="#3ad267" stroke-width="1.5" d="M1.85263 112 L3.87368 112 L5.89474 112 L7.91579 112 L9.93684 112 L11.9579 112 L13.9789 112 L16 112"/>
<path fill="none" stroke="#3ad267" stroke-width="1.5" d="M208 16 L210.021 16 L212.042 16 L214.063 16 L216.084 16 L218.105 16 L220.126 16 L222.147 16"/>
<path fill="none" stroke="#dcdcdc" stroke-width="1.75" d="M16 112 L18.0211 111.946 L20.0421 111.937 L22.0632 111.927 L24.0842 111.916 L26.1053 111.903 L28.1263 111.887 L30.1474 111.87 L32.1684 111.849 L34.1895 111.826 L36.2105 111.798 L38.2316 111.767 L40.2526 111.73 L42.2737 111.688 L44.2947 111.638 L46.3158 111.582 L48.3368 111.516 L50.3579 111.44 L52.3789 111.352 L54.4 111.25 L56.4211 111.132 L58.4421 110.996 L60.4632 110.838 L62.4842 110.656 L64.5053 110.444 L66.5263 110.2 L68.5474 109.917 L70.5684 109.59 L72.5895 109.211 L74.6105 108.773 L76.6316 108.266 L78.6526 107.679 L80.6737 107 L82.6947 106.215 L84.7158 105.306 L86.7368 104.254 L88.7579 103.037 L90.7789 101.629 L92.8 100 L94.8211 98.1147 L96.8421 95.9332 L98.8632 93.4089 L100.884 90.488 L102.905 87.1083 L104.926 83.1975 L106.947 78.6724 L108.968 73.4363 L110.989 67.3775 L113.011 60.6225 L115.032 54.5637 L117.053 49.3276 L119.074 44.8025 L121.095 40.8917 L123.116 37.512 L125.137 34.5911 L127.158 32.0668 L129.179 29.8853 L131.2 28 L133.221 26.3707 L135.242 24.9626 L137.263 23.7456 L139.284 22.6939 L141.305 21.7851 L143.326 20.9996 L145.347 20.3207 L147.368 19.7341 L149.389 19.2271 L151.411 18.7889 L153.432 18.4102 L155.453 18.083 L157.474 17.8002 L159.495 17.5557 L161.516 17.3445 L163.537 17.1619 L165.558 17.0042 L167.579 16.8678 L169.6 16.75 L171.621 16.6482 L173.642 16.5602 L175.663 16.4841 L177.684 16.4184 L179.705 16.3616 L181.726 16.3125 L183.747 16.2701 L185.768 16.2334 L187.789 16.2017 L189.811 16.1743 L191.832 16.1506 L193.853 16.1302 L195.874 16.1125 L197.895 16.0972 L199.916 16.084 L201.937 16.0726 L203.958 16.0628 L205.979 16.0542 L208 16"/>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

6
doc/snippets/easings-exponentialout-thumb.svg

@ -0,0 +1,6 @@
<svg class="m-image m-nopadb" style="width: 128px; height: 128px; margin-top: -16px; margin-bottom: -16px;" viewBox="0 0 128 128">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M0 32 L128 32 M0 96 L128 96
M0 92 l0 8 M128 28 l0 8"/>
<path fill="none" stroke="#dcdcdc" stroke-width="1.5" d="M0 96 L2.03175 89.332 L4.06349 83.3588 L6.09524 78.0079 L8.12698 73.2145 L10.1587 68.9205 L12.1905 65.0738 L14.2222 61.628 L16.254 58.5411 L18.2857 55.7759 L20.3175 53.2988 L22.3492 51.0797 L24.381 49.0919 L26.4127 47.3111 L28.4444 45.7159 L30.4762 44.2869 L32.5079 43.0068 L34.5397 41.86 L36.5714 40.8327 L38.6032 39.9125 L40.6349 39.0881 L42.6667 38.3496 L44.6984 37.6881 L46.7302 37.0954 L48.7619 36.5646 L50.7937 36.089 L52.8254 35.663 L54.8571 35.2813 L56.8889 34.9395 L58.9206 34.6332 L60.9524 34.3589 L62.9841 34.1131 L65.0159 33.893 L67.0476 33.6957 L69.0794 33.5191 L71.1111 33.3608 L73.1429 33.219 L75.1746 33.092 L77.2064 32.9782 L79.2381 32.8763 L81.2698 32.785 L83.3016 32.7032 L85.3333 32.63 L87.3651 32.5643 L89.3968 32.5055 L91.4286 32.4529 L93.4603 32.4057 L95.4921 32.3634 L97.5238 32.3256 L99.5556 32.2916 L101.587 32.2613 L103.619 32.234 L105.651 32.2096 L107.683 32.1878 L109.714 32.1682 L111.746 32.1507 L113.778 32.135 L115.81 32.1209 L117.841 32.1083 L119.873 32.0971 L121.905 32.0869 L123.937 32.0779 L125.968 32.0698 L128 32"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

8
doc/snippets/easings-exponentialout.svg

@ -0,0 +1,8 @@
<svg class="m-image" style="width: 224px; height: 128px;" viewBox="0 0 224 128">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M16 16 L208 16 M16 112 L208 112
M16 106 l0 12 M208 10 l0 12"/>
<path fill="none" stroke="#3ad267" stroke-width="1.5" d="M1.85263 175.986 L3.87368 164.729 L5.89474 154.264 L7.91579 144.535 L9.93684 135.49 L11.9579 127.083 L13.9789 119.266 L16 112"/>
<path fill="none" stroke="#3ad267" stroke-width="1.5" d="M208 16 L210.021 16 L212.042 16 L214.063 16 L216.084 16 L218.105 16 L220.126 16 L222.147 16"/>
<path fill="none" stroke="#dcdcdc" stroke-width="1.75" d="M16 112 L18.0211 105.245 L20.0421 98.9653 L22.0632 93.1275 L24.0842 87.7004 L26.1053 82.6553 L28.1263 77.9651 L30.1474 73.6049 L32.1684 69.5516 L34.1895 65.7834 L36.2105 62.2804 L38.2316 59.0239 L40.2526 55.9966 L42.2737 53.1822 L44.2947 50.5659 L46.3158 48.1337 L48.3368 45.8726 L50.3579 43.7706 L52.3789 41.8166 L54.4 40 L56.4211 38.3112 L58.4421 36.7413 L60.4632 35.2819 L62.4842 33.9251 L64.5053 32.6638 L66.5263 31.4913 L68.5474 30.4012 L70.5684 29.3879 L72.5895 28.4459 L74.6105 27.5701 L76.6316 26.756 L78.6526 25.9991 L80.6737 25.2956 L82.6947 24.6415 L84.7158 24.0334 L86.7368 23.4682 L88.7579 22.9427 L90.7789 22.4541 L92.8 22 L94.8211 21.5778 L96.8421 21.1853 L98.8632 20.8205 L100.884 20.4813 L102.905 20.1659 L104.926 19.8728 L106.947 19.6003 L108.968 19.347 L110.989 19.1115 L113.011 18.8925 L115.032 18.689 L117.053 18.4998 L119.074 18.3239 L121.095 18.1604 L123.116 18.0084 L125.137 17.867 L127.158 17.7357 L129.179 17.6135 L131.2 17.5 L133.221 17.3945 L135.242 17.2963 L137.263 17.2051 L139.284 17.1203 L141.305 17.0415 L143.326 16.9682 L145.347 16.9001 L147.368 16.8367 L149.389 16.7779 L151.411 16.7231 L153.432 16.6722 L155.453 16.6249 L157.474 16.581 L159.495 16.5401 L161.516 16.5021 L163.537 16.4668 L165.558 16.4339 L167.579 16.4034 L169.6 16.375 L171.621 16.3486 L173.642 16.3241 L175.663 16.3013 L177.684 16.2801 L179.705 16.2604 L181.726 16.2421 L183.747 16.225 L185.768 16.2092 L187.789 16.1945 L189.811 16.1808 L191.832 16.1681 L193.853 16.1562 L195.874 16.1452 L197.895 16.135 L199.916 16.1255 L201.937 16.1167 L203.958 16.1085 L205.979 16.1008 L208 16"/>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

6
doc/snippets/easings-linear-thumb.svg

@ -0,0 +1,6 @@
<svg class="m-image m-nopadb" style="width: 128px; height: 128px; margin-top: -16px; margin-bottom: -16px;" viewBox="0 0 128 128">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M0 32 L128 32 M0 96 L128 96
M0 92 l0 8 M128 28 l0 8"/>
<path fill="none" stroke="#dcdcdc" stroke-width="1.5" d="M0 96 L2.03175 94.9841 L4.06349 93.9683 L6.09524 92.9524 L8.12698 91.9365 L10.1587 90.9206 L12.1905 89.9048 L14.2222 88.8889 L16.254 87.873 L18.2857 86.8571 L20.3175 85.8413 L22.3492 84.8254 L24.381 83.8095 L26.4127 82.7936 L28.4444 81.7778 L30.4762 80.7619 L32.5079 79.746 L34.5397 78.7302 L36.5714 77.7143 L38.6032 76.6984 L40.6349 75.6825 L42.6667 74.6667 L44.6984 73.6508 L46.7302 72.6349 L48.7619 71.619 L50.7937 70.6032 L52.8254 69.5873 L54.8571 68.5714 L56.8889 67.5556 L58.9206 66.5397 L60.9524 65.5238 L62.9841 64.5079 L65.0159 63.4921 L67.0476 62.4762 L69.0794 61.4603 L71.1111 60.4444 L73.1429 59.4286 L75.1746 58.4127 L77.2064 57.3968 L79.2381 56.381 L81.2698 55.3651 L83.3016 54.3492 L85.3333 53.3333 L87.3651 52.3175 L89.3968 51.3016 L91.4286 50.2857 L93.4603 49.2698 L95.4921 48.254 L97.5238 47.2381 L99.5556 46.2222 L101.587 45.2064 L103.619 44.1905 L105.651 43.1746 L107.683 42.1587 L109.714 41.1429 L111.746 40.127 L113.778 39.1111 L115.81 38.0952 L117.841 37.0794 L119.873 36.0635 L121.905 35.0476 L123.937 34.0318 L125.968 33.0159 L128 32"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

11
doc/snippets/easings-linear.svg

@ -0,0 +1,11 @@
<svg class="m-image" style="width: 224px; height: 128px;" viewBox="0 0 224 128">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M16 16 L208 16 M16 112 L208 112
M16 106 l0 12 M208 10 l0 12"/>
<path fill="none" stroke="#3ad267" stroke-width="1.5" d="M1.85263 119.074 L3.87368 118.063 L5.89474 117.053 L7.91579 116.042 L9.93684 115.032 L11.9579 114.021 L13.9789 113.011 L16 112"/>
<path fill="none" stroke="#3ad267" stroke-width="1.5" d="M208 16 L210.021 14.9895 L212.042 13.9789 L214.063 12.9684 L216.084 11.9579 L218.105 10.9474 L220.126 9.93684 L222.147 8.92632"/>
<path fill="none" stroke="#2f83cc" stroke-width="1.0" d="M78.2111 80.8944 L16 112 C80 80, 144 48, 208 16 L145.789 47.1056"/>
<circle cx="80" cy="80" r="2" stroke="#2f83cc" stroke-width="1.0" fill="none" />
<circle cx="144" cy="48" r="2" stroke="#2f83cc" stroke-width="1.0" fill="none" />
<path fill="none" stroke="#dcdcdc" stroke-width="1.75" d="M16 112 L18.0211 110.989 L20.0421 109.979 L22.0632 108.968 L24.0842 107.958 L26.1053 106.947 L28.1263 105.937 L30.1474 104.926 L32.1684 103.916 L34.1895 102.905 L36.2105 101.895 L38.2316 100.884 L40.2526 99.8737 L42.2737 98.8632 L44.2947 97.8526 L46.3158 96.8421 L48.3368 95.8316 L50.3579 94.8211 L52.3789 93.8105 L54.4 92.8 L56.4211 91.7895 L58.4421 90.7789 L60.4632 89.7684 L62.4842 88.7579 L64.5053 87.7474 L66.5263 86.7368 L68.5474 85.7263 L70.5684 84.7158 L72.5895 83.7053 L74.6105 82.6947 L76.6316 81.6842 L78.6526 80.6737 L80.6737 79.6632 L82.6947 78.6526 L84.7158 77.6421 L86.7368 76.6316 L88.7579 75.621 L90.7789 74.6105 L92.8 73.6 L94.8211 72.5895 L96.8421 71.5789 L98.8632 70.5684 L100.884 69.5579 L102.905 68.5474 L104.926 67.5368 L106.947 66.5263 L108.968 65.5158 L110.989 64.5053 L113.011 63.4947 L115.032 62.4842 L117.053 61.4737 L119.074 60.4632 L121.095 59.4526 L123.116 58.4421 L125.137 57.4316 L127.158 56.4211 L129.179 55.4105 L131.2 54.4 L133.221 53.3895 L135.242 52.379 L137.263 51.3684 L139.284 50.3579 L141.305 49.3474 L143.326 48.3368 L145.347 47.3263 L147.368 46.3158 L149.389 45.3053 L151.411 44.2947 L153.432 43.2842 L155.453 42.2737 L157.474 41.2632 L159.495 40.2526 L161.516 39.2421 L163.537 38.2316 L165.558 37.2211 L167.579 36.2105 L169.6 35.2 L171.621 34.1895 L173.642 33.1789 L175.663 32.1684 L177.684 31.1579 L179.705 30.1474 L181.726 29.1368 L183.747 28.1263 L185.768 27.1158 L187.789 26.1053 L189.811 25.0947 L191.832 24.0842 L193.853 23.0737 L195.874 22.0632 L197.895 21.0526 L199.916 20.0421 L201.937 19.0316 L203.958 18.021 L205.979 17.0105 L208 16"/>
</svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

6
doc/snippets/easings-quadraticin-thumb.svg

@ -0,0 +1,6 @@
<svg class="m-image m-nopadb" style="width: 128px; height: 128px; margin-top: -16px; margin-bottom: -16px;" viewBox="0 0 128 128">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M0 32 L128 32 M0 96 L128 96
M0 92 l0 8 M128 28 l0 8"/>
<path fill="none" stroke="#dcdcdc" stroke-width="1.5" d="M0 96 L2.03175 95.9839 L4.06349 95.9355 L6.09524 95.8549 L8.12698 95.742 L10.1587 95.5969 L12.1905 95.4195 L14.2222 95.2099 L16.254 94.968 L18.2857 94.6939 L20.3175 94.3875 L22.3492 94.0489 L24.381 93.678 L26.4127 93.2749 L28.4444 92.8395 L30.4762 92.3719 L32.5079 91.872 L34.5397 91.3399 L36.5714 90.7755 L38.6032 90.1789 L40.6349 89.55 L42.6667 88.8889 L44.6984 88.1955 L46.7302 87.4699 L48.7619 86.712 L50.7937 85.9219 L52.8254 85.0995 L54.8571 84.2449 L56.8889 83.358 L58.9206 82.4389 L60.9524 81.4875 L62.9841 80.5039 L65.0159 79.488 L67.0476 78.4399 L69.0794 77.3595 L71.1111 76.2469 L73.1429 75.102 L75.1746 73.9249 L77.2064 72.7155 L79.2381 71.4739 L81.2698 70.2 L83.3016 68.8939 L85.3333 67.5555 L87.3651 66.1849 L89.3968 64.7821 L91.4286 63.3469 L93.4603 61.8796 L95.4921 60.3799 L97.5238 58.8481 L99.5556 57.284 L101.587 55.6876 L103.619 54.059 L105.651 52.3981 L107.683 50.705 L109.714 48.9796 L111.746 47.222 L113.778 45.4321 L115.81 43.61 L117.841 41.7556 L119.873 39.869 L121.905 37.9501 L123.937 35.999 L125.968 34.0156 L128 32"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

14
doc/snippets/easings-quadraticin.svg

@ -0,0 +1,14 @@
<svg class="m-image" style="width: 224px; height: 128px;" viewBox="0 0 224 128">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M16 16 L208 16 M16 112 L208 112
M16 106 l0 12 M208 10 l0 12"/>
<path fill="none" stroke="#cd3330" stroke-width="1.5" d="M1.85263 111.479 L3.87368 111.617 L5.89474 111.734 L7.91579 111.83 L9.93684 111.904 L11.9579 111.957 L13.9789 111.989 L16 112"/>
<path fill="none" stroke="#3ad267" stroke-width="1.5" d="M208 16 L210.021 13.9683 L212.042 11.9153 L214.063 9.84113 L216.084 7.74557 L218.105 5.6288 L220.126 3.49074 L222.147 1.33141"/>
<path fill="none" stroke="#737373" stroke-width="1" d="M16 112 L18.0211 112 L20.0421 111.999 L22.0632 111.997 L24.0842 111.993 L26.1053 111.986 L28.1263 111.976 L30.1474 111.962 L32.1684 111.943 L34.1895 111.918 L36.2105 111.888 L38.2316 111.851 L40.2526 111.807 L42.2737 111.754 L44.2947 111.693 L46.3158 111.622 L48.3368 111.541 L50.3579 111.45 L52.3789 111.347 L54.4 111.232 L56.4211 111.104 L58.4421 110.963 L60.4632 110.808 L62.4842 110.638 L64.5053 110.452 L66.5263 110.25 L68.5474 110.032 L70.5684 109.796 L72.5895 109.542 L74.6105 109.269 L76.6316 108.977 L78.6526 108.664 L80.6737 108.331 L82.6947 107.976 L84.7158 107.599 L86.7368 107.199 L88.7579 106.776 L90.7789 106.328 L92.8 105.856 L94.8211 105.358 L96.8421 104.834 L98.8632 104.283 L100.884 103.704 L102.905 103.098 L104.926 102.462 L106.947 101.797 L108.968 101.101 L110.989 100.375 L113.011 99.6171 L115.032 98.8269 L117.053 98.0038 L119.074 97.1471 L121.095 96.2562 L123.116 95.3303 L125.137 94.3688 L127.158 93.371 L129.179 92.3363 L131.2 91.264 L133.221 90.1534 L135.242 89.0038 L137.263 87.8146 L139.284 86.585 L141.305 85.3145 L143.326 84.0023 L145.347 82.6478 L147.368 81.2503 L149.389 79.8092 L151.411 78.3237 L153.432 76.7932 L155.453 75.2169 L157.474 73.5944 L159.495 71.9248 L161.516 70.2075 L163.537 68.4419 L165.558 66.6272 L167.579 64.7628 L169.6 62.848 L171.621 60.8821 L173.642 58.8646 L175.663 56.7946 L177.684 54.6715 L179.705 52.4947 L181.726 50.2635 L183.747 47.9772 L185.768 45.6351 L187.789 43.2366 L189.811 40.781 L191.832 38.2676 L193.853 35.6958 L195.874 33.0648 L197.895 30.3741 L199.916 27.6229 L201.937 24.8106 L203.958 21.9364 L205.979 18.9998 L208 16"/>
<path fill="none" stroke="#737373" stroke-width="1" d="M16 112 L18.0211 112 L20.0421 112 L22.0632 112 L24.0842 112 L26.1053 111.999 L28.1263 111.998 L30.1474 111.997 L32.1684 111.995 L34.1895 111.992 L36.2105 111.988 L38.2316 111.983 L40.2526 111.976 L42.2737 111.966 L44.2947 111.955 L46.3158 111.94 L48.3368 111.923 L50.3579 111.902 L52.3789 111.876 L54.4 111.846 L56.4211 111.811 L58.4421 111.771 L60.4632 111.724 L62.4842 111.67 L64.5053 111.609 L66.5263 111.54 L68.5474 111.461 L70.5684 111.374 L72.5895 111.276 L74.6105 111.166 L76.6316 111.045 L78.6526 110.912 L80.6737 110.764 L82.6947 110.602 L84.7158 110.425 L86.7368 110.231 L88.7579 110.02 L90.7789 109.791 L92.8 109.542 L94.8211 109.273 L96.8421 108.983 L98.8632 108.669 L100.884 108.332 L102.905 107.971 L104.926 107.582 L106.947 107.167 L108.968 106.723 L110.989 106.249 L113.011 105.743 L115.032 105.205 L117.053 104.634 L119.074 104.026 L121.095 103.382 L123.116 102.7 L125.137 101.978 L127.158 101.215 L129.179 100.409 L131.2 99.5584 L133.221 98.6621 L135.242 97.7181 L137.263 96.725 L139.284 95.6809 L141.305 94.5842 L143.326 93.4331 L145.347 92.2259 L147.368 90.9608 L149.389 89.6358 L151.411 88.2493 L153.432 86.7993 L155.453 85.2839 L157.474 83.7011 L159.495 82.0491 L161.516 80.3257 L163.537 78.529 L165.558 76.657 L167.579 74.7075 L169.6 72.6784 L171.621 70.5676 L173.642 68.373 L175.663 66.0923 L177.684 63.7234 L179.705 61.2639 L181.726 58.7117 L183.747 56.0643 L185.768 53.3195 L187.789 50.4749 L189.811 47.5281 L191.832 44.4767 L193.853 41.3182 L195.874 38.0502 L197.895 34.6702 L199.916 31.1756 L201.937 27.5639 L203.958 23.8325 L205.979 19.9787 L208 16"/>
<path fill="none" stroke="#737373" stroke-width="1" d="M16 112 L18.0211 112 L20.0421 112 L22.0632 112 L24.0842 112 L26.1053 112 L28.1263 112 L30.1474 112 L32.1684 112 L34.1895 111.999 L36.2105 111.999 L38.2316 111.998 L40.2526 111.997 L42.2737 111.995 L44.2947 111.993 L46.3158 111.991 L48.3368 111.987 L50.3579 111.982 L52.3789 111.977 L54.4 111.969 L56.4211 111.96 L58.4421 111.949 L60.4632 111.936 L62.4842 111.92 L64.5053 111.901 L66.5263 111.879 L68.5474 111.853 L70.5684 111.822 L72.5895 111.786 L74.6105 111.746 L76.6316 111.699 L78.6526 111.645 L80.6737 111.584 L82.6947 111.514 L84.7158 111.436 L86.7368 111.348 L88.7579 111.25 L90.7789 111.14 L92.8 111.017 L94.8211 110.881 L96.8421 110.73 L98.8632 110.563 L100.884 110.379 L102.905 110.176 L104.926 109.954 L106.947 109.711 L108.968 109.445 L110.989 109.155 L113.011 108.839 L115.032 108.495 L117.053 108.123 L119.074 107.719 L121.095 107.283 L123.116 106.812 L125.137 106.303 L127.158 105.756 L129.179 105.167 L131.2 104.535 L133.221 103.857 L135.242 103.13 L137.263 102.353 L139.284 101.521 L141.305 100.634 L143.326 99.6872 L145.347 98.6785 L147.368 97.6047 L149.389 96.4628 L151.411 95.2495 L153.432 93.9616 L155.453 92.5957 L157.474 91.1482 L159.495 89.6156 L161.516 87.9942 L163.537 86.2802 L165.558 84.4697 L167.579 82.5585 L169.6 80.5427 L171.621 78.418 L173.642 76.18 L175.663 73.8241 L177.684 71.346 L179.705 68.7408 L181.726 66.0038 L183.747 63.1298 L185.768 60.1141 L187.789 56.9512 L189.811 53.6359 L191.832 50.1628 L193.853 46.5264 L195.874 42.7207 L197.895 38.7402 L199.916 34.5787 L201.937 30.2303 L203.958 25.6887 L205.979 20.9474 L208 16"/>
<path fill="none" stroke="#2f83cc" stroke-width="1.0" d="M78 112 L16 112 C80 112, 144 80, 208 16 L145.414 78.5858"/>
<circle cx="80" cy="112" r="2" stroke="#2f83cc" stroke-width="1.0" fill="none" />
<circle cx="144" cy="80" r="2" stroke="#2f83cc" stroke-width="1.0" fill="none" />
<path fill="none" stroke="#dcdcdc" stroke-width="1.75" d="M16 112 L18.0211 111.989 L20.0421 111.957 L22.0632 111.904 L24.0842 111.83 L26.1053 111.734 L28.1263 111.617 L30.1474 111.479 L32.1684 111.319 L34.1895 111.138 L36.2105 110.936 L38.2316 110.713 L40.2526 110.468 L42.2737 110.202 L44.2947 109.915 L46.3158 109.607 L48.3368 109.277 L50.3579 108.926 L52.3789 108.554 L54.4 108.16 L56.4211 107.745 L58.4421 107.309 L60.4632 106.852 L62.4842 106.373 L64.5053 105.873 L66.5263 105.352 L68.5474 104.809 L70.5684 104.246 L72.5895 103.66 L74.6105 103.054 L76.6316 102.427 L78.6526 101.778 L80.6737 101.108 L82.6947 100.416 L84.7158 99.7035 L86.7368 98.9695 L88.7579 98.2143 L90.7789 97.4378 L92.8 96.64 L94.8211 95.8209 L96.8421 94.9806 L98.8632 94.119 L100.884 93.2361 L102.905 92.332 L104.926 91.4065 L106.947 90.4598 L108.968 89.4919 L110.989 88.5026 L113.011 87.4921 L115.032 86.4603 L117.053 85.4072 L119.074 84.3329 L121.095 83.2372 L123.116 82.1203 L125.137 80.9822 L127.158 79.8227 L129.179 78.642 L131.2 77.44 L133.221 76.2167 L135.242 74.9722 L137.263 73.7064 L139.284 72.4193 L141.305 71.1109 L143.326 69.7813 L145.347 68.4304 L147.368 67.0582 L149.389 65.6647 L151.411 64.25 L153.432 62.814 L155.453 61.3567 L157.474 59.8781 L159.495 58.3783 L161.516 56.8572 L163.537 55.3148 L165.558 53.7511 L167.579 52.1662 L169.6 50.56 L171.621 48.9325 L173.642 47.2838 L175.663 45.6137 L177.684 43.9224 L179.705 42.2099 L181.726 40.476 L183.747 38.7209 L185.768 36.9445 L187.789 35.1468 L189.811 33.3279 L191.832 31.4876 L193.853 29.6261 L195.874 27.7434 L197.895 25.8393 L199.916 23.914 L201.937 21.9674 L203.958 19.9996 L205.979 18.0104 L208 16"/>
</svg>

After

Width:  |  Height:  |  Size: 7.2 KiB

6
doc/snippets/easings-quadraticinout-thumb.svg

@ -0,0 +1,6 @@
<svg class="m-image m-nopadb" style="width: 128px; height: 128px; margin-top: -16px; margin-bottom: -16px;" viewBox="0 0 128 128">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M0 32 L128 32 M0 96 L128 96
M0 92 l0 8 M128 28 l0 8"/>
<path fill="none" stroke="#dcdcdc" stroke-width="1.5" d="M0 96 L2.03175 95.9678 L4.06349 95.871 L6.09524 95.7097 L8.12698 95.484 L10.1587 95.1938 L12.1905 94.839 L14.2222 94.4198 L16.254 93.936 L18.2857 93.3878 L20.3175 92.775 L22.3492 92.0978 L24.381 91.356 L26.4127 90.5498 L28.4444 89.679 L30.4762 88.7438 L32.5079 87.744 L34.5397 86.6798 L36.5714 85.551 L38.6032 84.3578 L40.6349 83.1 L42.6667 81.7778 L44.6984 80.391 L46.7302 78.9398 L48.7619 77.424 L50.7937 75.8438 L52.8254 74.199 L54.8571 72.4898 L56.8889 70.716 L58.9206 68.8778 L60.9524 66.9751 L62.9841 65.0078 L65.0159 62.9922 L67.0476 61.0249 L69.0794 59.1222 L71.1111 57.2839 L73.1429 55.5102 L75.1746 53.801 L77.2064 52.1562 L79.2381 50.576 L81.2698 49.0602 L83.3016 47.609 L85.3333 46.2222 L87.3651 44.9 L89.3968 43.6422 L91.4286 42.449 L93.4603 41.3202 L95.4921 40.256 L97.5238 39.2562 L99.5556 38.321 L101.587 37.4502 L103.619 36.644 L105.651 35.9022 L107.683 35.225 L109.714 34.6122 L111.746 34.064 L113.778 33.5802 L115.81 33.161 L117.841 32.8063 L119.873 32.516 L121.905 32.2902 L123.937 32.129 L125.968 32.0322 L128 32"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

14
doc/snippets/easings-quadraticinout.svg

@ -0,0 +1,14 @@
<svg class="m-image" style="width: 224px; height: 128px;" viewBox="0 0 224 128">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M16 16 L208 16 M16 112 L208 112
M16 106 l0 12 M208 10 l0 12"/>
<path fill="none" stroke="#cd3330" stroke-width="1.5" d="M1.85263 110.958 L3.87368 111.234 L5.89474 111.468 L7.91579 111.66 L9.93684 111.809 L11.9579 111.915 L13.9789 111.979 L16 112"/>
<path fill="none" stroke="#cd3330" stroke-width="1.5" d="M208 16 L210.021 16.0213 L212.042 16.0851 L214.063 16.1915 L216.084 16.3404 L218.105 16.5319 L220.126 16.7659 L222.147 17.0424"/>
<path fill="none" stroke="#737373" stroke-width="1" d="M16 112 L18.0211 112 L20.0421 111.996 L22.0632 111.988 L24.0842 111.971 L26.1053 111.944 L28.1263 111.903 L30.1474 111.846 L32.1684 111.771 L34.1895 111.673 L36.2105 111.552 L38.2316 111.404 L40.2526 111.226 L42.2737 111.016 L44.2947 110.771 L46.3158 110.488 L48.3368 110.165 L50.3579 109.8 L52.3789 109.388 L54.4 108.928 L56.4211 108.417 L58.4421 107.852 L60.4632 107.231 L62.4842 106.551 L64.5053 105.809 L66.5263 105.002 L68.5474 104.128 L70.5684 103.184 L72.5895 102.168 L74.6105 101.077 L76.6316 99.9073 L78.6526 98.6572 L80.6737 97.3239 L82.6947 95.9046 L84.7158 94.3966 L86.7368 92.7972 L88.7579 91.1038 L90.7789 89.3136 L92.8 87.424 L94.8211 85.4323 L96.8421 83.3358 L98.8632 81.1318 L100.884 78.8176 L102.905 76.3905 L104.926 73.8479 L106.947 71.1871 L108.968 68.4053 L110.989 65.4999 L113.011 62.5001 L115.032 59.5947 L117.053 56.8129 L119.074 54.1521 L121.095 51.6095 L123.116 49.1824 L125.137 46.8682 L127.158 44.6642 L129.179 42.5677 L131.2 40.576 L133.221 38.6864 L135.242 36.8962 L137.263 35.2028 L139.284 33.6034 L141.305 32.0954 L143.326 30.6761 L145.347 29.3428 L147.368 28.0927 L149.389 26.9233 L151.411 25.8318 L153.432 24.8156 L155.453 23.8719 L157.474 22.9981 L159.495 22.1915 L161.516 21.4493 L163.537 20.769 L165.558 20.1478 L167.579 19.583 L169.6 19.072 L171.621 18.612 L173.642 18.2004 L175.663 17.8345 L177.684 17.5116 L179.705 17.229 L181.726 16.984 L183.747 16.7739 L185.768 16.5961 L187.789 16.4479 L189.811 16.3265 L191.832 16.2293 L193.853 16.1536 L195.874 16.0967 L197.895 16.056 L199.916 16.0287 L201.937 16.0121 L203.958 16.0036 L205.979 16.0004 L208 16"/>
<path fill="none" stroke="#737373" stroke-width="1" d="M16 112 L18.0211 112 L20.0421 112 L22.0632 111.999 L24.0842 111.998 L26.1053 111.994 L28.1263 111.988 L30.1474 111.977 L32.1684 111.961 L34.1895 111.938 L36.2105 111.906 L38.2316 111.862 L40.2526 111.804 L42.2737 111.731 L44.2947 111.638 L46.3158 111.523 L48.3368 111.382 L50.3579 111.212 L52.3789 111.01 L54.4 110.771 L56.4211 110.491 L58.4421 110.166 L60.4632 109.791 L62.4842 109.361 L64.5053 108.872 L66.5263 108.317 L68.5474 107.691 L70.5684 106.989 L72.5895 106.204 L74.6105 105.331 L76.6316 104.362 L78.6526 103.292 L80.6737 102.113 L82.6947 100.818 L84.7158 99.3997 L86.7368 97.8506 L88.7579 96.1629 L90.7789 94.3285 L92.8 92.3392 L94.8211 90.1865 L96.8421 87.8617 L98.8632 85.3558 L100.884 82.6597 L102.905 79.764 L104.926 76.6591 L106.947 73.3351 L108.968 69.782 L110.989 65.9894 L113.011 62.0106 L115.032 58.2181 L117.053 54.6649 L119.074 51.3409 L121.095 48.236 L123.116 45.3402 L125.137 42.6442 L127.158 40.1383 L129.179 37.8135 L131.2 35.6608 L133.221 33.6715 L135.242 31.8371 L137.263 30.1494 L139.284 28.6003 L141.305 27.1821 L143.326 25.887 L145.347 24.7079 L147.368 23.6375 L149.389 22.669 L151.411 21.7956 L153.432 21.011 L155.453 20.3088 L157.474 19.6832 L159.495 19.1283 L161.516 18.6386 L163.537 18.2088 L165.558 17.8338 L167.579 17.5086 L169.6 17.2288 L171.621 16.9898 L173.642 16.7875 L175.663 16.6179 L177.684 16.4773 L179.705 16.3622 L181.726 16.2693 L183.747 16.1955 L185.768 16.138 L187.789 16.0943 L189.811 16.0619 L191.832 16.0386 L193.853 16.0226 L195.874 16.0122 L197.895 16.0059 L199.916 16.0024 L201.937 16.0008 L203.958 16.0002 L205.979 16 L208 16"/>
<path fill="none" stroke="#737373" stroke-width="1" d="M16 112 L18.0211 112 L20.0421 112 L22.0632 112 L24.0842 112 L26.1053 111.999 L28.1263 111.998 L30.1474 111.997 L32.1684 111.993 L34.1895 111.988 L36.2105 111.98 L38.2316 111.968 L40.2526 111.951 L42.2737 111.926 L44.2947 111.893 L46.3158 111.849 L48.3368 111.792 L50.3579 111.718 L52.3789 111.625 L54.4 111.508 L56.4211 111.365 L58.4421 111.189 L60.4632 110.977 L62.4842 110.722 L64.5053 110.419 L66.5263 110.061 L68.5474 109.641 L70.5684 109.152 L72.5895 108.584 L74.6105 107.928 L76.6316 107.176 L78.6526 106.317 L80.6737 105.339 L82.6947 104.231 L84.7158 102.981 L86.7368 101.574 L88.7579 99.9971 L90.7789 98.2348 L92.8 96.2714 L94.8211 94.09 L96.8421 91.673 L98.8632 89.0019 L100.884 86.057 L102.905 82.818 L104.926 79.2632 L106.947 75.3701 L108.968 71.1152 L110.989 66.4737 L113.011 61.5263 L115.032 56.8849 L117.053 52.6299 L119.074 48.7368 L121.095 45.182 L123.116 41.943 L125.137 38.9981 L127.158 36.327 L129.179 33.91 L131.2 31.7286 L133.221 29.7652 L135.242 28.0029 L137.263 26.4259 L139.284 25.0192 L141.305 23.7686 L143.326 22.6608 L145.347 21.6831 L147.368 20.8237 L149.389 20.0716 L151.411 19.4164 L153.432 18.8483 L155.453 18.3585 L157.474 17.9385 L159.495 17.5806 L161.516 17.2776 L163.537 17.023 L165.558 16.8107 L167.579 16.6352 L169.6 16.4915 L171.621 16.3751 L173.642 16.2819 L175.663 16.2082 L177.684 16.1507 L179.705 16.1068 L181.726 16.0737 L183.747 16.0494 L185.768 16.032 L187.789 16.0198 L189.811 16.0117 L191.832 16.0065 L193.853 16.0033 L195.874 16.0015 L197.895 16.0006 L199.916 16.0002 L201.937 16 L203.958 16 L205.979 16 L208 16"/>
<path fill="none" stroke="#2f83cc" stroke-width="1.0" d="M101.36 112 L16 112 C103.36 112, 120.64 16, 208 16 L122.64 16"/>
<circle cx="103.36" cy="112" r="2" stroke="#2f83cc" stroke-width="1.0" fill="none" />
<circle cx="120.64" cy="16" r="2" stroke="#2f83cc" stroke-width="1.0" fill="none" />
<path fill="none" stroke="#dcdcdc" stroke-width="1.75" d="M16 112 L18.0211 111.979 L20.0421 111.915 L22.0632 111.809 L24.0842 111.66 L26.1053 111.468 L28.1263 111.234 L30.1474 110.958 L32.1684 110.638 L34.1895 110.277 L36.2105 109.873 L38.2316 109.426 L40.2526 108.937 L42.2737 108.405 L44.2947 107.83 L46.3158 107.213 L48.3368 106.554 L50.3579 105.852 L52.3789 105.107 L54.4 104.32 L56.4211 103.49 L58.4421 102.618 L60.4632 101.703 L62.4842 100.746 L64.5053 99.746 L66.5263 98.7036 L68.5474 97.6186 L70.5684 96.4911 L72.5895 95.321 L74.6105 94.1084 L76.6316 92.8532 L78.6526 91.5555 L80.6737 90.2152 L82.6947 88.8324 L84.7158 87.407 L86.7368 85.9391 L88.7579 84.4286 L90.7789 82.8756 L92.8 81.28 L94.8211 79.6419 L96.8421 77.9612 L98.8632 76.238 L100.884 74.4722 L102.905 72.6639 L104.926 70.8131 L106.947 68.9197 L108.968 66.9837 L110.989 65.0052 L113.011 62.9948 L115.032 61.0163 L117.053 59.0803 L119.074 57.1869 L121.095 55.3361 L123.116 53.5278 L125.137 51.762 L127.158 50.0388 L129.179 48.3581 L131.2 46.72 L133.221 45.1244 L135.242 43.5714 L137.263 42.0609 L139.284 40.593 L141.305 39.1676 L143.326 37.7848 L145.347 36.4445 L147.368 35.1468 L149.389 33.8916 L151.411 32.679 L153.432 31.5089 L155.453 30.3814 L157.474 29.2964 L159.495 28.254 L161.516 27.2541 L163.537 26.2967 L165.558 25.3819 L167.579 24.5097 L169.6 23.68 L171.621 22.8929 L173.642 22.1483 L175.663 21.4462 L177.684 20.7867 L179.705 20.1697 L181.726 19.5953 L183.747 19.0635 L185.768 18.5742 L187.789 18.1274 L189.811 17.7232 L191.832 17.3615 L193.853 17.0424 L195.874 16.7659 L197.895 16.5319 L199.916 16.3404 L201.937 16.1915 L203.958 16.0851 L205.979 16.0213 L208 16"/>
</svg>

After

Width:  |  Height:  |  Size: 7.3 KiB

6
doc/snippets/easings-quadraticout-thumb.svg

@ -0,0 +1,6 @@
<svg class="m-image m-nopadb" style="width: 128px; height: 128px; margin-top: -16px; margin-bottom: -16px;" viewBox="0 0 128 128">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M0 32 L128 32 M0 96 L128 96
M0 92 l0 8 M128 28 l0 8"/>
<path fill="none" stroke="#dcdcdc" stroke-width="1.5" d="M0 96 L2.03175 93.9844 L4.06349 92.001 L6.09524 90.0499 L8.12698 88.131 L10.1587 86.2444 L12.1905 84.39 L14.2222 82.5679 L16.254 80.778 L18.2857 79.0204 L20.3175 77.295 L22.3492 75.6019 L24.381 73.941 L26.4127 72.3124 L28.4444 70.716 L30.4762 69.1519 L32.5079 67.6201 L34.5397 66.1204 L36.5714 64.6531 L38.6032 63.2179 L40.6349 61.8151 L42.6667 60.4444 L44.6984 59.1061 L46.7302 57.7999 L48.7619 56.5261 L50.7937 55.2845 L52.8254 54.0751 L54.8571 52.898 L56.8889 51.7531 L58.9206 50.6405 L60.9524 49.5601 L62.9841 48.512 L65.0159 47.4961 L67.0476 46.5125 L69.0794 45.5611 L71.1111 44.642 L73.1429 43.7551 L75.1746 42.9005 L77.2064 42.0781 L79.2381 41.288 L81.2698 40.5301 L83.3016 39.8045 L85.3333 39.1111 L87.3651 38.45 L89.3968 37.8211 L91.4286 37.2245 L93.4603 36.6601 L95.4921 36.128 L97.5238 35.6281 L99.5556 35.1605 L101.587 34.7251 L103.619 34.322 L105.651 33.9511 L107.683 33.6125 L109.714 33.3061 L111.746 33.032 L113.778 32.7901 L115.81 32.5805 L117.841 32.4031 L119.873 32.258 L121.905 32.1451 L123.937 32.0645 L125.968 32.0161 L128 32"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

14
doc/snippets/easings-quadraticout.svg

@ -0,0 +1,14 @@
<svg class="m-image" style="width: 224px; height: 128px;" viewBox="0 0 224 128">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M16 16 L208 16 M16 112 L208 112
M16 106 l0 12 M208 10 l0 12"/>
<path fill="none" stroke="#3ad267" stroke-width="1.5" d="M1.85263 126.669 L3.87368 124.509 L5.89474 122.371 L7.91579 120.254 L9.93684 118.159 L11.9579 116.085 L13.9789 114.032 L16 112"/>
<path fill="none" stroke="#cd3330" stroke-width="1.5" d="M208 16 L210.021 16.0106 L212.042 16.0425 L214.063 16.0957 L216.084 16.1702 L218.105 16.2659 L220.126 16.3829 L222.147 16.5212"/>
<path fill="none" stroke="#737373" stroke-width="1" d="M16 112 L18.0211 109 L20.0421 106.064 L22.0632 103.189 L24.0842 100.377 L26.1053 97.6259 L28.1263 94.9351 L30.1474 92.3042 L32.1684 89.7324 L34.1895 87.219 L36.2105 84.7634 L38.2316 82.3649 L40.2526 80.0228 L42.2737 77.7365 L44.2947 75.5053 L46.3158 73.3285 L48.3368 71.2054 L50.3579 69.1354 L52.3789 67.1179 L54.4 65.152 L56.4211 63.2372 L58.4421 61.3728 L60.4632 59.5581 L62.4842 57.7925 L64.5053 56.0752 L66.5263 54.4056 L68.5474 52.7831 L70.5684 51.2068 L72.5895 49.6763 L74.6105 48.1908 L76.6316 46.7497 L78.6526 45.3522 L80.6737 43.9977 L82.6947 42.6855 L84.7158 41.415 L86.7368 40.1854 L88.7579 38.9962 L90.7789 37.8466 L92.8 36.736 L94.8211 35.6637 L96.8421 34.629 L98.8632 33.6312 L100.884 32.6697 L102.905 31.7438 L104.926 30.8529 L106.947 29.9962 L108.968 29.1731 L110.989 28.3829 L113.011 27.625 L115.032 26.8987 L117.053 26.2032 L119.074 25.538 L121.095 24.9024 L123.116 24.2956 L125.137 23.7171 L127.158 23.1661 L129.179 22.6419 L131.2 22.144 L133.221 21.6716 L135.242 21.2241 L137.263 20.8007 L139.284 20.4009 L141.305 20.0239 L143.326 19.669 L145.347 19.3357 L147.368 19.0232 L149.389 18.7308 L151.411 18.458 L153.432 18.2039 L155.453 17.968 L157.474 17.7495 L159.495 17.5479 L161.516 17.3623 L163.537 17.1923 L165.558 17.037 L167.579 16.8958 L169.6 16.768 L171.621 16.653 L173.642 16.5501 L175.663 16.4586 L177.684 16.3779 L179.705 16.3072 L181.726 16.246 L183.747 16.1935 L185.768 16.149 L187.789 16.112 L189.811 16.0816 L191.832 16.0573 L193.853 16.0384 L195.874 16.0242 L197.895 16.014 L199.916 16.0072 L201.937 16.003 L203.958 16.0009 L205.979 16.0001 L208 16"/>
<path fill="none" stroke="#737373" stroke-width="1" d="M16 112 L18.0211 108.021 L20.0421 104.168 L22.0632 100.436 L24.0842 96.8244 L26.1053 93.3298 L28.1263 89.9498 L30.1474 86.6818 L32.1684 83.5233 L34.1895 80.4719 L36.2105 77.5251 L38.2316 74.6805 L40.2526 71.9357 L42.2737 69.2883 L44.2947 66.7361 L46.3158 64.2766 L48.3368 61.9077 L50.3579 59.627 L52.3789 57.4324 L54.4 55.3216 L56.4211 53.2925 L58.4421 51.343 L60.4632 49.471 L62.4842 47.6743 L64.5053 45.9509 L66.5263 44.2989 L68.5474 42.7161 L70.5684 41.2007 L72.5895 39.7507 L74.6105 38.3642 L76.6316 37.0392 L78.6526 35.7741 L80.6737 34.5669 L82.6947 33.4158 L84.7158 32.3191 L86.7368 31.275 L88.7579 30.2819 L90.7789 29.3379 L92.8 28.4416 L94.8211 27.5912 L96.8421 26.7852 L98.8632 26.0219 L100.884 25.2999 L102.905 24.6177 L104.926 23.9737 L106.947 23.3664 L108.968 22.7946 L110.989 22.2567 L113.011 21.7513 L115.032 21.2773 L117.053 20.8331 L119.074 20.4176 L121.095 20.0295 L123.116 19.6675 L125.137 19.3305 L127.158 19.0173 L129.179 18.7267 L131.2 18.4576 L133.221 18.2089 L135.242 17.9796 L137.263 17.7687 L139.284 17.5751 L141.305 17.3978 L143.326 17.2359 L145.347 17.0885 L147.368 16.9547 L149.389 16.8336 L151.411 16.7244 L153.432 16.6264 L155.453 16.5386 L157.474 16.4604 L159.495 16.391 L161.516 16.3298 L163.537 16.2761 L165.558 16.2292 L167.579 16.1886 L169.6 16.1536 L171.621 16.1237 L173.642 16.0984 L175.663 16.0772 L177.684 16.0597 L179.705 16.0453 L181.726 16.0337 L183.747 16.0244 L185.768 16.0173 L187.789 16.0118 L189.811 16.0077 L191.832 16.0048 L193.853 16.0028 L195.874 16.0015 L197.895 16.0007 L199.916 16.0003 L201.937 16.0001 L203.958 16 L205.979 16 L208 16"/>
<path fill="none" stroke="#737373" stroke-width="1" d="M16 112 L18.0211 107.053 L20.0421 102.311 L22.0632 97.7697 L24.0842 93.4213 L26.1053 89.2598 L28.1263 85.2793 L30.1474 81.4736 L32.1684 77.8372 L34.1895 74.3641 L36.2105 71.0488 L38.2316 67.8859 L40.2526 64.8702 L42.2737 61.9962 L44.2947 59.2592 L46.3158 56.654 L48.3368 54.1759 L50.3579 51.82 L52.3789 49.582 L54.4 47.4573 L56.4211 45.4415 L58.4421 43.5303 L60.4632 41.7198 L62.4842 40.0058 L64.5053 38.3844 L66.5263 36.8518 L68.5474 35.4043 L70.5684 34.0384 L72.5895 32.7505 L74.6105 31.5372 L76.6316 30.3953 L78.6526 29.3215 L80.6737 28.3128 L82.6947 27.3661 L84.7158 26.4786 L86.7368 25.6474 L88.7579 24.8698 L90.7789 24.1432 L92.8 23.465 L94.8211 22.8327 L96.8421 22.244 L98.8632 21.6967 L100.884 21.1884 L102.905 20.717 L104.926 20.2806 L106.947 19.8771 L108.968 19.5046 L110.989 19.1612 L113.011 18.8454 L115.032 18.5553 L117.053 18.2894 L119.074 18.046 L121.095 17.8239 L123.116 17.6214 L125.137 17.4374 L127.158 17.2704 L129.179 17.1194 L131.2 16.983 L133.221 16.8603 L135.242 16.7502 L137.263 16.6516 L139.284 16.5637 L141.305 16.4855 L143.326 16.4163 L145.347 16.3552 L147.368 16.3015 L149.389 16.2545 L151.411 16.2135 L153.432 16.178 L155.453 16.1474 L157.474 16.1212 L159.495 16.0988 L161.516 16.0799 L163.537 16.0639 L165.558 16.0507 L167.579 16.0397 L169.6 16.0307 L171.621 16.0234 L173.642 16.0176 L175.663 16.013 L177.684 16.0094 L179.705 16.0067 L181.726 16.0046 L183.747 16.0031 L185.768 16.002 L187.789 16.0012 L189.811 16.0007 L191.832 16.0004 L193.853 16.0002 L195.874 16.0001 L197.895 16 L199.916 16 L201.937 16 L203.958 16 L205.979 16 L208 16"/>
<path fill="none" stroke="#2f83cc" stroke-width="1.0" d="M78.5858 49.4142 L16 112 C80 48, 144 16, 208 16 L146 16"/>
<circle cx="80" cy="48" r="2" stroke="#2f83cc" stroke-width="1.0" fill="none" />
<circle cx="144" cy="16" r="2" stroke="#2f83cc" stroke-width="1.0" fill="none" />
<path fill="none" stroke="#dcdcdc" stroke-width="1.75" d="M16 112 L18.0211 109.99 L20.0421 108 L22.0632 106.033 L24.0842 104.086 L26.1053 102.161 L28.1263 100.257 L30.1474 98.3738 L32.1684 96.5124 L34.1895 94.6721 L36.2105 92.8532 L38.2316 91.0555 L40.2526 89.2791 L42.2737 87.524 L44.2947 85.7901 L46.3158 84.0776 L48.3368 82.3863 L50.3579 80.7162 L52.3789 79.0675 L54.4 77.44 L56.4211 75.8338 L58.4421 74.2489 L60.4632 72.6852 L62.4842 71.1428 L64.5053 69.6217 L66.5263 68.1219 L68.5474 66.6433 L70.5684 65.186 L72.5895 63.75 L74.6105 62.3353 L76.6316 60.9418 L78.6526 59.5696 L80.6737 58.2187 L82.6947 56.8891 L84.7158 55.5807 L86.7368 54.2936 L88.7579 53.0278 L90.7789 51.7833 L92.8 50.56 L94.8211 49.358 L96.8421 48.1773 L98.8632 47.0178 L100.884 45.8797 L102.905 44.7628 L104.926 43.6671 L106.947 42.5928 L108.968 41.5397 L110.989 40.5079 L113.011 39.4974 L115.032 38.5081 L117.053 37.5402 L119.074 36.5935 L121.095 35.668 L123.116 34.7639 L125.137 33.881 L127.158 33.0194 L129.179 32.1791 L131.2 31.36 L133.221 30.5622 L135.242 29.7857 L137.263 29.0305 L139.284 28.2965 L141.305 27.5838 L143.326 26.8924 L145.347 26.2223 L147.368 25.5734 L149.389 24.9458 L151.411 24.3395 L153.432 23.7545 L155.453 23.1907 L157.474 22.6482 L159.495 22.127 L161.516 21.627 L163.537 21.1484 L165.558 20.691 L167.579 20.2548 L169.6 19.84 L171.621 19.4464 L173.642 19.0741 L175.663 18.7231 L177.684 18.3933 L179.705 18.0849 L181.726 17.7977 L183.747 17.5317 L185.768 17.2871 L187.789 17.0637 L189.811 16.8616 L191.832 16.6808 L193.853 16.5212 L195.874 16.3829 L197.895 16.2659 L199.916 16.1702 L201.937 16.0957 L203.958 16.0425 L205.979 16.0106 L208 16"/>
</svg>

After

Width:  |  Height:  |  Size: 7.2 KiB

6
doc/snippets/easings-quarticin-thumb.svg

@ -0,0 +1,6 @@
<svg class="m-image m-nopadb" style="width: 128px; height: 128px; margin-top: -16px; margin-bottom: -16px;" viewBox="0 0 128 128">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M0 32 L128 32 M0 96 L128 96
M0 92 l0 8 M128 28 l0 8"/>
<path fill="none" stroke="#dcdcdc" stroke-width="1.5" d="M0 96 L2.03175 96 L4.06349 95.9999 L6.09524 95.9997 L8.12698 95.999 L10.1587 95.9975 L12.1905 95.9947 L14.2222 95.9902 L16.254 95.9834 L18.2857 95.9733 L20.3175 95.9594 L22.3492 95.9405 L24.381 95.9158 L26.4127 95.884 L28.4444 95.8439 L30.4762 95.7943 L32.5079 95.7337 L34.5397 95.6607 L36.5714 95.5735 L38.6032 95.4705 L40.6349 95.35 L42.6667 95.2099 L44.6984 95.0483 L46.7302 94.8631 L48.7619 94.6521 L50.7937 94.413 L52.8254 94.1434 L54.8571 93.8409 L56.8889 93.5028 L58.9206 93.1265 L60.9524 92.7092 L62.9841 92.248 L65.0159 91.7399 L67.0476 91.1819 L69.0794 90.5708 L71.1111 89.9034 L73.1429 89.1762 L75.1746 88.3858 L77.2064 87.5287 L79.2381 86.6011 L81.2698 85.5994 L83.3016 84.5197 L85.3333 83.358 L87.3651 82.1103 L89.3968 80.7725 L91.4286 79.3403 L93.4603 77.8093 L95.4921 76.1752 L97.5238 74.4333 L99.5556 72.5792 L101.587 70.6079 L103.619 68.5148 L105.651 66.2949 L107.683 63.9431 L109.714 61.4544 L111.746 58.8235 L113.778 56.0451 L115.81 53.1138 L117.841 50.0242 L119.873 46.7705 L121.905 43.347 L123.937 39.7481 L125.968 35.9678 L128 32"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

11
doc/snippets/easings-quarticin.svg

@ -0,0 +1,11 @@
<svg class="m-image" style="width: 224px; height: 128px;" viewBox="0 0 224 128">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M16 16 L208 16 M16 112 L208 112
M16 106 l0 12 M208 10 l0 12"/>
<path fill="none" stroke="#cd3330" stroke-width="1.5" d="M1.85263 111.997 L3.87368 111.998 L5.89474 111.999 L7.91579 112 L9.93684 112 L11.9579 112 L13.9789 112 L16 112"/>
<path fill="none" stroke="#3ad267" stroke-width="1.5" d="M208 16 L210.021 11.8936 L212.042 7.65692 L214.063 3.28712 L216.084 -1.21857 L218.105 -5.86284 L220.126 -10.6485 L222.147 -15.5785"/>
<path fill="none" stroke="#737373" stroke-width="1" d="M16 112 L18.0211 111.989 L20.0421 111.957 L22.0632 111.904 L24.0842 111.83 L26.1053 111.734 L28.1263 111.617 L30.1474 111.479 L32.1684 111.319 L34.1895 111.138 L36.2105 110.936 L38.2316 110.713 L40.2526 110.468 L42.2737 110.202 L44.2947 109.915 L46.3158 109.607 L48.3368 109.277 L50.3579 108.926 L52.3789 108.554 L54.4 108.16 L56.4211 107.745 L58.4421 107.309 L60.4632 106.852 L62.4842 106.373 L64.5053 105.873 L66.5263 105.352 L68.5474 104.809 L70.5684 104.246 L72.5895 103.66 L74.6105 103.054 L76.6316 102.427 L78.6526 101.778 L80.6737 101.108 L82.6947 100.416 L84.7158 99.7035 L86.7368 98.9695 L88.7579 98.2143 L90.7789 97.4378 L92.8 96.64 L94.8211 95.8209 L96.8421 94.9806 L98.8632 94.119 L100.884 93.2361 L102.905 92.332 L104.926 91.4065 L106.947 90.4598 L108.968 89.4919 L110.989 88.5026 L113.011 87.4921 L115.032 86.4603 L117.053 85.4072 L119.074 84.3329 L121.095 83.2372 L123.116 82.1203 L125.137 80.9822 L127.158 79.8227 L129.179 78.642 L131.2 77.44 L133.221 76.2167 L135.242 74.9722 L137.263 73.7064 L139.284 72.4193 L141.305 71.1109 L143.326 69.7813 L145.347 68.4304 L147.368 67.0582 L149.389 65.6647 L151.411 64.25 L153.432 62.814 L155.453 61.3567 L157.474 59.8781 L159.495 58.3783 L161.516 56.8572 L163.537 55.3148 L165.558 53.7511 L167.579 52.1662 L169.6 50.56 L171.621 48.9325 L173.642 47.2838 L175.663 45.6137 L177.684 43.9224 L179.705 42.2099 L181.726 40.476 L183.747 38.7209 L185.768 36.9445 L187.789 35.1468 L189.811 33.3279 L191.832 31.4876 L193.853 29.6261 L195.874 27.7434 L197.895 25.8393 L199.916 23.914 L201.937 21.9674 L203.958 19.9996 L205.979 18.0104 L208 16"/>
<path fill="none" stroke="#737373" stroke-width="1" d="M16 112 L18.0211 112 L20.0421 111.999 L22.0632 111.997 L24.0842 111.993 L26.1053 111.986 L28.1263 111.976 L30.1474 111.962 L32.1684 111.943 L34.1895 111.918 L36.2105 111.888 L38.2316 111.851 L40.2526 111.807 L42.2737 111.754 L44.2947 111.693 L46.3158 111.622 L48.3368 111.541 L50.3579 111.45 L52.3789 111.347 L54.4 111.232 L56.4211 111.104 L58.4421 110.963 L60.4632 110.808 L62.4842 110.638 L64.5053 110.452 L66.5263 110.25 L68.5474 110.032 L70.5684 109.796 L72.5895 109.542 L74.6105 109.269 L76.6316 108.977 L78.6526 108.664 L80.6737 108.331 L82.6947 107.976 L84.7158 107.599 L86.7368 107.199 L88.7579 106.776 L90.7789 106.328 L92.8 105.856 L94.8211 105.358 L96.8421 104.834 L98.8632 104.283 L100.884 103.704 L102.905 103.098 L104.926 102.462 L106.947 101.797 L108.968 101.101 L110.989 100.375 L113.011 99.6171 L115.032 98.8269 L117.053 98.0038 L119.074 97.1471 L121.095 96.2562 L123.116 95.3303 L125.137 94.3688 L127.158 93.371 L129.179 92.3363 L131.2 91.264 L133.221 90.1534 L135.242 89.0038 L137.263 87.8146 L139.284 86.585 L141.305 85.3145 L143.326 84.0023 L145.347 82.6478 L147.368 81.2503 L149.389 79.8092 L151.411 78.3237 L153.432 76.7932 L155.453 75.2169 L157.474 73.5944 L159.495 71.9248 L161.516 70.2075 L163.537 68.4419 L165.558 66.6272 L167.579 64.7628 L169.6 62.848 L171.621 60.8821 L173.642 58.8646 L175.663 56.7946 L177.684 54.6715 L179.705 52.4947 L181.726 50.2635 L183.747 47.9772 L185.768 45.6351 L187.789 43.2366 L189.811 40.781 L191.832 38.2676 L193.853 35.6958 L195.874 33.0648 L197.895 30.3741 L199.916 27.6229 L201.937 24.8106 L203.958 21.9364 L205.979 18.9998 L208 16"/>
<path fill="none" stroke="#737373" stroke-width="1" d="M16 112 L18.0211 112 L20.0421 112 L22.0632 112 L24.0842 112 L26.1053 112 L28.1263 112 L30.1474 112 L32.1684 112 L34.1895 111.999 L36.2105 111.999 L38.2316 111.998 L40.2526 111.997 L42.2737 111.995 L44.2947 111.993 L46.3158 111.991 L48.3368 111.987 L50.3579 111.982 L52.3789 111.977 L54.4 111.969 L56.4211 111.96 L58.4421 111.949 L60.4632 111.936 L62.4842 111.92 L64.5053 111.901 L66.5263 111.879 L68.5474 111.853 L70.5684 111.822 L72.5895 111.786 L74.6105 111.746 L76.6316 111.699 L78.6526 111.645 L80.6737 111.584 L82.6947 111.514 L84.7158 111.436 L86.7368 111.348 L88.7579 111.25 L90.7789 111.14 L92.8 111.017 L94.8211 110.881 L96.8421 110.73 L98.8632 110.563 L100.884 110.379 L102.905 110.176 L104.926 109.954 L106.947 109.711 L108.968 109.445 L110.989 109.155 L113.011 108.839 L115.032 108.495 L117.053 108.123 L119.074 107.719 L121.095 107.283 L123.116 106.812 L125.137 106.303 L127.158 105.756 L129.179 105.167 L131.2 104.535 L133.221 103.857 L135.242 103.13 L137.263 102.353 L139.284 101.521 L141.305 100.634 L143.326 99.6872 L145.347 98.6785 L147.368 97.6047 L149.389 96.4628 L151.411 95.2495 L153.432 93.9616 L155.453 92.5957 L157.474 91.1482 L159.495 89.6156 L161.516 87.9942 L163.537 86.2802 L165.558 84.4697 L167.579 82.5585 L169.6 80.5427 L171.621 78.418 L173.642 76.18 L175.663 73.8241 L177.684 71.346 L179.705 68.7408 L181.726 66.0038 L183.747 63.1298 L185.768 60.1141 L187.789 56.9512 L189.811 53.6359 L191.832 50.1628 L193.853 46.5264 L195.874 42.7207 L197.895 38.7402 L199.916 34.5787 L201.937 30.2303 L203.958 25.6887 L205.979 20.9474 L208 16"/>
<path fill="none" stroke="#dcdcdc" stroke-width="1.75" d="M16 112 L18.0211 112 L20.0421 112 L22.0632 112 L24.0842 112 L26.1053 111.999 L28.1263 111.998 L30.1474 111.997 L32.1684 111.995 L34.1895 111.992 L36.2105 111.988 L38.2316 111.983 L40.2526 111.976 L42.2737 111.966 L44.2947 111.955 L46.3158 111.94 L48.3368 111.923 L50.3579 111.902 L52.3789 111.876 L54.4 111.846 L56.4211 111.811 L58.4421 111.771 L60.4632 111.724 L62.4842 111.67 L64.5053 111.609 L66.5263 111.54 L68.5474 111.461 L70.5684 111.374 L72.5895 111.276 L74.6105 111.166 L76.6316 111.045 L78.6526 110.912 L80.6737 110.764 L82.6947 110.602 L84.7158 110.425 L86.7368 110.231 L88.7579 110.02 L90.7789 109.791 L92.8 109.542 L94.8211 109.273 L96.8421 108.983 L98.8632 108.669 L100.884 108.332 L102.905 107.971 L104.926 107.582 L106.947 107.167 L108.968 106.723 L110.989 106.249 L113.011 105.743 L115.032 105.205 L117.053 104.634 L119.074 104.026 L121.095 103.382 L123.116 102.7 L125.137 101.978 L127.158 101.215 L129.179 100.409 L131.2 99.5584 L133.221 98.6621 L135.242 97.7181 L137.263 96.725 L139.284 95.6809 L141.305 94.5842 L143.326 93.4331 L145.347 92.2259 L147.368 90.9608 L149.389 89.6358 L151.411 88.2493 L153.432 86.7993 L155.453 85.2839 L157.474 83.7011 L159.495 82.0491 L161.516 80.3257 L163.537 78.529 L165.558 76.657 L167.579 74.7075 L169.6 72.6784 L171.621 70.5676 L173.642 68.373 L175.663 66.0923 L177.684 63.7234 L179.705 61.2639 L181.726 58.7117 L183.747 56.0643 L185.768 53.3195 L187.789 50.4749 L189.811 47.5281 L191.832 44.4767 L193.853 41.3182 L195.874 38.0502 L197.895 34.6702 L199.916 31.1756 L201.937 27.5639 L203.958 23.8325 L205.979 19.9787 L208 16"/>
</svg>

After

Width:  |  Height:  |  Size: 7.0 KiB

6
doc/snippets/easings-quarticinout-thumb.svg

@ -0,0 +1,6 @@
<svg class="m-image m-nopadb" style="width: 128px; height: 128px; margin-top: -16px; margin-bottom: -16px;" viewBox="0 0 128 128">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M0 32 L128 32 M0 96 L128 96
M0 92 l0 8 M128 28 l0 8"/>
<path fill="none" stroke="#dcdcdc" stroke-width="1.5" d="M0 96 L2.03175 96 L4.06349 95.9995 L6.09524 95.9974 L8.12698 95.9917 L10.1587 95.9797 L12.1905 95.9579 L14.2222 95.922 L16.254 95.8669 L18.2857 95.7868 L20.3175 95.675 L22.3492 95.5241 L24.381 95.326 L26.4127 95.0717 L28.4444 94.7514 L30.4762 94.3546 L32.5079 93.87 L34.5397 93.2854 L36.5714 92.5881 L38.6032 91.7643 L40.6349 90.7997 L42.6667 89.679 L44.6984 88.3863 L46.7302 86.9047 L48.7619 85.2167 L50.7937 83.304 L52.8254 81.1474 L54.8571 78.7272 L56.8889 76.0226 L58.9206 73.0121 L60.9524 69.6735 L62.9841 65.9839 L65.0159 62.0161 L67.0476 58.3265 L69.0794 54.9879 L71.1111 51.9774 L73.1429 49.2728 L75.1746 46.8525 L77.2064 44.696 L79.2381 42.7833 L81.2698 41.0953 L83.3016 39.6138 L85.3333 38.321 L87.3651 37.2003 L89.3968 36.2357 L91.4286 35.4119 L93.4603 34.7146 L95.4921 34.13 L97.5238 33.6454 L99.5556 33.2486 L101.587 32.9283 L103.619 32.674 L105.651 32.4759 L107.683 32.325 L109.714 32.2132 L111.746 32.1331 L113.778 32.078 L115.81 32.0421 L117.841 32.0203 L119.873 32.0083 L121.905 32.0026 L123.937 32.0005 L125.968 32 L128 32"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

11
doc/snippets/easings-quarticinout.svg

@ -0,0 +1,11 @@
<svg class="m-image" style="width: 224px; height: 128px;" viewBox="0 0 224 128">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M16 16 L208 16 M16 112 L208 112
M16 106 l0 12 M208 10 l0 12"/>
<path fill="none" stroke="#cd3330" stroke-width="1.5" d="M1.85263 111.977 L3.87368 111.988 L5.89474 111.994 L7.91579 111.998 L9.93684 111.999 L11.9579 112 L13.9789 112 L16 112"/>
<path fill="none" stroke="#cd3330" stroke-width="1.5" d="M208 16 L210.021 16 L212.042 16.0002 L214.063 16.0008 L216.084 16.0024 L218.105 16.0059 L220.126 16.0122 L222.147 16.0226"/>
<path fill="none" stroke="#737373" stroke-width="1" d="M16 112 L18.0211 111.979 L20.0421 111.915 L22.0632 111.809 L24.0842 111.66 L26.1053 111.468 L28.1263 111.234 L30.1474 110.958 L32.1684 110.638 L34.1895 110.277 L36.2105 109.873 L38.2316 109.426 L40.2526 108.937 L42.2737 108.405 L44.2947 107.83 L46.3158 107.213 L48.3368 106.554 L50.3579 105.852 L52.3789 105.107 L54.4 104.32 L56.4211 103.49 L58.4421 102.618 L60.4632 101.703 L62.4842 100.746 L64.5053 99.746 L66.5263 98.7036 L68.5474 97.6186 L70.5684 96.4911 L72.5895 95.321 L74.6105 94.1084 L76.6316 92.8532 L78.6526 91.5555 L80.6737 90.2152 L82.6947 88.8324 L84.7158 87.407 L86.7368 85.9391 L88.7579 84.4286 L90.7789 82.8756 L92.8 81.28 L94.8211 79.6419 L96.8421 77.9612 L98.8632 76.238 L100.884 74.4722 L102.905 72.6639 L104.926 70.8131 L106.947 68.9197 L108.968 66.9837 L110.989 65.0052 L113.011 62.9948 L115.032 61.0163 L117.053 59.0803 L119.074 57.1869 L121.095 55.3361 L123.116 53.5278 L125.137 51.762 L127.158 50.0388 L129.179 48.3581 L131.2 46.72 L133.221 45.1244 L135.242 43.5714 L137.263 42.0609 L139.284 40.593 L141.305 39.1676 L143.326 37.7848 L145.347 36.4445 L147.368 35.1468 L149.389 33.8916 L151.411 32.679 L153.432 31.5089 L155.453 30.3814 L157.474 29.2964 L159.495 28.254 L161.516 27.2541 L163.537 26.2967 L165.558 25.3819 L167.579 24.5097 L169.6 23.68 L171.621 22.8929 L173.642 22.1483 L175.663 21.4462 L177.684 20.7867 L179.705 20.1697 L181.726 19.5953 L183.747 19.0635 L185.768 18.5742 L187.789 18.1274 L189.811 17.7232 L191.832 17.3615 L193.853 17.0424 L195.874 16.7659 L197.895 16.5319 L199.916 16.3404 L201.937 16.1915 L203.958 16.0851 L205.979 16.0213 L208 16"/>
<path fill="none" stroke="#737373" stroke-width="1" d="M16 112 L18.0211 112 L20.0421 111.996 L22.0632 111.988 L24.0842 111.971 L26.1053 111.944 L28.1263 111.903 L30.1474 111.846 L32.1684 111.771 L34.1895 111.673 L36.2105 111.552 L38.2316 111.404 L40.2526 111.226 L42.2737 111.016 L44.2947 110.771 L46.3158 110.488 L48.3368 110.165 L50.3579 109.8 L52.3789 109.388 L54.4 108.928 L56.4211 108.417 L58.4421 107.852 L60.4632 107.231 L62.4842 106.551 L64.5053 105.809 L66.5263 105.002 L68.5474 104.128 L70.5684 103.184 L72.5895 102.168 L74.6105 101.077 L76.6316 99.9073 L78.6526 98.6572 L80.6737 97.3239 L82.6947 95.9046 L84.7158 94.3966 L86.7368 92.7972 L88.7579 91.1038 L90.7789 89.3136 L92.8 87.424 L94.8211 85.4323 L96.8421 83.3358 L98.8632 81.1318 L100.884 78.8176 L102.905 76.3905 L104.926 73.8479 L106.947 71.1871 L108.968 68.4053 L110.989 65.4999 L113.011 62.5001 L115.032 59.5947 L117.053 56.8129 L119.074 54.1521 L121.095 51.6095 L123.116 49.1824 L125.137 46.8682 L127.158 44.6642 L129.179 42.5677 L131.2 40.576 L133.221 38.6864 L135.242 36.8962 L137.263 35.2028 L139.284 33.6034 L141.305 32.0954 L143.326 30.6761 L145.347 29.3428 L147.368 28.0927 L149.389 26.9233 L151.411 25.8318 L153.432 24.8156 L155.453 23.8719 L157.474 22.9981 L159.495 22.1915 L161.516 21.4493 L163.537 20.769 L165.558 20.1478 L167.579 19.583 L169.6 19.072 L171.621 18.612 L173.642 18.2004 L175.663 17.8345 L177.684 17.5116 L179.705 17.229 L181.726 16.984 L183.747 16.7739 L185.768 16.5961 L187.789 16.4479 L189.811 16.3265 L191.832 16.2293 L193.853 16.1536 L195.874 16.0967 L197.895 16.056 L199.916 16.0287 L201.937 16.0121 L203.958 16.0036 L205.979 16.0004 L208 16"/>
<path fill="none" stroke="#737373" stroke-width="1" d="M16 112 L18.0211 112 L20.0421 112 L22.0632 112 L24.0842 112 L26.1053 111.999 L28.1263 111.998 L30.1474 111.997 L32.1684 111.993 L34.1895 111.988 L36.2105 111.98 L38.2316 111.968 L40.2526 111.951 L42.2737 111.926 L44.2947 111.893 L46.3158 111.849 L48.3368 111.792 L50.3579 111.718 L52.3789 111.625 L54.4 111.508 L56.4211 111.365 L58.4421 111.189 L60.4632 110.977 L62.4842 110.722 L64.5053 110.419 L66.5263 110.061 L68.5474 109.641 L70.5684 109.152 L72.5895 108.584 L74.6105 107.928 L76.6316 107.176 L78.6526 106.317 L80.6737 105.339 L82.6947 104.231 L84.7158 102.981 L86.7368 101.574 L88.7579 99.9971 L90.7789 98.2348 L92.8 96.2714 L94.8211 94.09 L96.8421 91.673 L98.8632 89.0019 L100.884 86.057 L102.905 82.818 L104.926 79.2632 L106.947 75.3701 L108.968 71.1152 L110.989 66.4737 L113.011 61.5263 L115.032 56.8849 L117.053 52.6299 L119.074 48.7368 L121.095 45.182 L123.116 41.943 L125.137 38.9981 L127.158 36.327 L129.179 33.91 L131.2 31.7286 L133.221 29.7652 L135.242 28.0029 L137.263 26.4259 L139.284 25.0192 L141.305 23.7686 L143.326 22.6608 L145.347 21.6831 L147.368 20.8237 L149.389 20.0716 L151.411 19.4164 L153.432 18.8483 L155.453 18.3585 L157.474 17.9385 L159.495 17.5806 L161.516 17.2776 L163.537 17.023 L165.558 16.8107 L167.579 16.6352 L169.6 16.4915 L171.621 16.3751 L173.642 16.2819 L175.663 16.2082 L177.684 16.1507 L179.705 16.1068 L181.726 16.0737 L183.747 16.0494 L185.768 16.032 L187.789 16.0198 L189.811 16.0117 L191.832 16.0065 L193.853 16.0033 L195.874 16.0015 L197.895 16.0006 L199.916 16.0002 L201.937 16 L203.958 16 L205.979 16 L208 16"/>
<path fill="none" stroke="#dcdcdc" stroke-width="1.75" d="M16 112 L18.0211 112 L20.0421 112 L22.0632 111.999 L24.0842 111.998 L26.1053 111.994 L28.1263 111.988 L30.1474 111.977 L32.1684 111.961 L34.1895 111.938 L36.2105 111.906 L38.2316 111.862 L40.2526 111.804 L42.2737 111.731 L44.2947 111.638 L46.3158 111.523 L48.3368 111.382 L50.3579 111.212 L52.3789 111.01 L54.4 110.771 L56.4211 110.491 L58.4421 110.166 L60.4632 109.791 L62.4842 109.361 L64.5053 108.872 L66.5263 108.317 L68.5474 107.691 L70.5684 106.989 L72.5895 106.204 L74.6105 105.331 L76.6316 104.362 L78.6526 103.292 L80.6737 102.113 L82.6947 100.818 L84.7158 99.3997 L86.7368 97.8506 L88.7579 96.1629 L90.7789 94.3285 L92.8 92.3392 L94.8211 90.1865 L96.8421 87.8617 L98.8632 85.3558 L100.884 82.6597 L102.905 79.764 L104.926 76.6591 L106.947 73.3351 L108.968 69.782 L110.989 65.9894 L113.011 62.0106 L115.032 58.2181 L117.053 54.6649 L119.074 51.3409 L121.095 48.236 L123.116 45.3402 L125.137 42.6442 L127.158 40.1383 L129.179 37.8135 L131.2 35.6608 L133.221 33.6715 L135.242 31.8371 L137.263 30.1494 L139.284 28.6003 L141.305 27.1821 L143.326 25.887 L145.347 24.7079 L147.368 23.6375 L149.389 22.669 L151.411 21.7956 L153.432 21.011 L155.453 20.3088 L157.474 19.6832 L159.495 19.1283 L161.516 18.6386 L163.537 18.2088 L165.558 17.8338 L167.579 17.5086 L169.6 17.2288 L171.621 16.9898 L173.642 16.7875 L175.663 16.6179 L177.684 16.4773 L179.705 16.3622 L181.726 16.2693 L183.747 16.1955 L185.768 16.138 L187.789 16.0943 L189.811 16.0619 L191.832 16.0386 L193.853 16.0226 L195.874 16.0122 L197.895 16.0059 L199.916 16.0024 L201.937 16.0008 L203.958 16.0002 L205.979 16 L208 16"/>
</svg>

After

Width:  |  Height:  |  Size: 7.0 KiB

6
doc/snippets/easings-quarticout-thumb.svg

@ -0,0 +1,6 @@
<svg class="m-image m-nopadb" style="width: 128px; height: 128px; margin-top: -16px; margin-bottom: -16px;" viewBox="0 0 128 128">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M0 32 L128 32 M0 96 L128 96
M0 92 l0 8 M128 28 l0 8"/>
<path fill="none" stroke="#dcdcdc" stroke-width="1.5" d="M0 96 L2.03175 92.0322 L4.06349 88.2519 L6.09524 84.653 L8.12698 81.2295 L10.1587 77.9759 L12.1905 74.8862 L14.2222 71.9549 L16.254 69.1765 L18.2857 66.5456 L20.3175 64.0569 L22.3492 61.7051 L24.381 59.4852 L26.4127 57.3921 L28.4444 55.4208 L30.4762 53.5667 L32.5079 51.8248 L34.5397 50.1907 L36.5714 48.6597 L38.6032 47.2275 L40.6349 45.8897 L42.6667 44.642 L44.6984 43.4803 L46.7302 42.4006 L48.7619 41.3989 L50.7937 40.4713 L52.8254 39.6142 L54.8571 38.8238 L56.8889 38.0966 L58.9206 37.4292 L60.9524 36.8181 L62.9841 36.2601 L65.0159 35.752 L67.0476 35.2908 L69.0794 34.8735 L71.1111 34.4972 L73.1429 34.1591 L75.1746 33.8566 L77.2064 33.587 L79.2381 33.3479 L81.2698 33.1369 L83.3016 32.9517 L85.3333 32.7901 L87.3651 32.65 L89.3968 32.5295 L91.4286 32.4265 L93.4603 32.3393 L95.4921 32.2663 L97.5238 32.2057 L99.5556 32.1561 L101.587 32.116 L103.619 32.0842 L105.651 32.0595 L107.683 32.0406 L109.714 32.0267 L111.746 32.0166 L113.778 32.0098 L115.81 32.0053 L117.841 32.0025 L119.873 32.001 L121.905 32.0003 L123.937 32.0001 L125.968 32 L128 32"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

11
doc/snippets/easings-quarticout.svg

@ -0,0 +1,11 @@
<svg class="m-image" style="width: 224px; height: 128px;" viewBox="0 0 224 128">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M16 16 L208 16 M16 112 L208 112
M16 106 l0 12 M208 10 l0 12"/>
<path fill="none" stroke="#3ad267" stroke-width="1.5" d="M1.85263 143.579 L3.87368 138.649 L5.89474 133.863 L7.91579 129.219 L9.93684 124.713 L11.9579 120.343 L13.9789 116.106 L16 112"/>
<path fill="none" stroke="#cd3330" stroke-width="1.5" d="M208 16 L210.021 16 L212.042 16 L214.063 16.0001 L216.084 16.0003 L218.105 16.0007 L220.126 16.0015 L222.147 16.0028"/>
<path fill="none" stroke="#737373" stroke-width="1" d="M16 112 L18.0211 109.99 L20.0421 108 L22.0632 106.033 L24.0842 104.086 L26.1053 102.161 L28.1263 100.257 L30.1474 98.3738 L32.1684 96.5124 L34.1895 94.6721 L36.2105 92.8532 L38.2316 91.0555 L40.2526 89.2791 L42.2737 87.524 L44.2947 85.7901 L46.3158 84.0776 L48.3368 82.3863 L50.3579 80.7162 L52.3789 79.0675 L54.4 77.44 L56.4211 75.8338 L58.4421 74.2489 L60.4632 72.6852 L62.4842 71.1428 L64.5053 69.6217 L66.5263 68.1219 L68.5474 66.6433 L70.5684 65.186 L72.5895 63.75 L74.6105 62.3353 L76.6316 60.9418 L78.6526 59.5696 L80.6737 58.2187 L82.6947 56.8891 L84.7158 55.5807 L86.7368 54.2936 L88.7579 53.0278 L90.7789 51.7833 L92.8 50.56 L94.8211 49.358 L96.8421 48.1773 L98.8632 47.0178 L100.884 45.8797 L102.905 44.7628 L104.926 43.6671 L106.947 42.5928 L108.968 41.5397 L110.989 40.5079 L113.011 39.4974 L115.032 38.5081 L117.053 37.5402 L119.074 36.5935 L121.095 35.668 L123.116 34.7639 L125.137 33.881 L127.158 33.0194 L129.179 32.1791 L131.2 31.36 L133.221 30.5622 L135.242 29.7857 L137.263 29.0305 L139.284 28.2965 L141.305 27.5838 L143.326 26.8924 L145.347 26.2223 L147.368 25.5734 L149.389 24.9458 L151.411 24.3395 L153.432 23.7545 L155.453 23.1907 L157.474 22.6482 L159.495 22.127 L161.516 21.627 L163.537 21.1484 L165.558 20.691 L167.579 20.2548 L169.6 19.84 L171.621 19.4464 L173.642 19.0741 L175.663 18.7231 L177.684 18.3933 L179.705 18.0849 L181.726 17.7977 L183.747 17.5317 L185.768 17.2871 L187.789 17.0637 L189.811 16.8616 L191.832 16.6808 L193.853 16.5212 L195.874 16.3829 L197.895 16.2659 L199.916 16.1702 L201.937 16.0957 L203.958 16.0425 L205.979 16.0106 L208 16"/>
<path fill="none" stroke="#737373" stroke-width="1" d="M16 112 L18.0211 109 L20.0421 106.064 L22.0632 103.189 L24.0842 100.377 L26.1053 97.6259 L28.1263 94.9351 L30.1474 92.3042 L32.1684 89.7324 L34.1895 87.219 L36.2105 84.7634 L38.2316 82.3649 L40.2526 80.0228 L42.2737 77.7365 L44.2947 75.5053 L46.3158 73.3285 L48.3368 71.2054 L50.3579 69.1354 L52.3789 67.1179 L54.4 65.152 L56.4211 63.2372 L58.4421 61.3728 L60.4632 59.5581 L62.4842 57.7925 L64.5053 56.0752 L66.5263 54.4056 L68.5474 52.7831 L70.5684 51.2068 L72.5895 49.6763 L74.6105 48.1908 L76.6316 46.7497 L78.6526 45.3522 L80.6737 43.9977 L82.6947 42.6855 L84.7158 41.415 L86.7368 40.1854 L88.7579 38.9962 L90.7789 37.8466 L92.8 36.736 L94.8211 35.6637 L96.8421 34.629 L98.8632 33.6312 L100.884 32.6697 L102.905 31.7438 L104.926 30.8529 L106.947 29.9962 L108.968 29.1731 L110.989 28.3829 L113.011 27.625 L115.032 26.8987 L117.053 26.2032 L119.074 25.538 L121.095 24.9024 L123.116 24.2956 L125.137 23.7171 L127.158 23.1661 L129.179 22.6419 L131.2 22.144 L133.221 21.6716 L135.242 21.2241 L137.263 20.8007 L139.284 20.4009 L141.305 20.0239 L143.326 19.669 L145.347 19.3357 L147.368 19.0232 L149.389 18.7308 L151.411 18.458 L153.432 18.2039 L155.453 17.968 L157.474 17.7495 L159.495 17.5479 L161.516 17.3623 L163.537 17.1923 L165.558 17.037 L167.579 16.8958 L169.6 16.768 L171.621 16.653 L173.642 16.5501 L175.663 16.4586 L177.684 16.3779 L179.705 16.3072 L181.726 16.246 L183.747 16.1935 L185.768 16.149 L187.789 16.112 L189.811 16.0816 L191.832 16.0573 L193.853 16.0384 L195.874 16.0242 L197.895 16.014 L199.916 16.0072 L201.937 16.003 L203.958 16.0009 L205.979 16.0001 L208 16"/>
<path fill="none" stroke="#737373" stroke-width="1" d="M16 112 L18.0211 107.053 L20.0421 102.311 L22.0632 97.7697 L24.0842 93.4213 L26.1053 89.2598 L28.1263 85.2793 L30.1474 81.4736 L32.1684 77.8372 L34.1895 74.3641 L36.2105 71.0488 L38.2316 67.8859 L40.2526 64.8702 L42.2737 61.9962 L44.2947 59.2592 L46.3158 56.654 L48.3368 54.1759 L50.3579 51.82 L52.3789 49.582 L54.4 47.4573 L56.4211 45.4415 L58.4421 43.5303 L60.4632 41.7198 L62.4842 40.0058 L64.5053 38.3844 L66.5263 36.8518 L68.5474 35.4043 L70.5684 34.0384 L72.5895 32.7505 L74.6105 31.5372 L76.6316 30.3953 L78.6526 29.3215 L80.6737 28.3128 L82.6947 27.3661 L84.7158 26.4786 L86.7368 25.6474 L88.7579 24.8698 L90.7789 24.1432 L92.8 23.465 L94.8211 22.8327 L96.8421 22.244 L98.8632 21.6967 L100.884 21.1884 L102.905 20.717 L104.926 20.2806 L106.947 19.8771 L108.968 19.5046 L110.989 19.1612 L113.011 18.8454 L115.032 18.5553 L117.053 18.2894 L119.074 18.046 L121.095 17.8239 L123.116 17.6214 L125.137 17.4374 L127.158 17.2704 L129.179 17.1194 L131.2 16.983 L133.221 16.8603 L135.242 16.7502 L137.263 16.6516 L139.284 16.5637 L141.305 16.4855 L143.326 16.4163 L145.347 16.3552 L147.368 16.3015 L149.389 16.2545 L151.411 16.2135 L153.432 16.178 L155.453 16.1474 L157.474 16.1212 L159.495 16.0988 L161.516 16.0799 L163.537 16.0639 L165.558 16.0507 L167.579 16.0397 L169.6 16.0307 L171.621 16.0234 L173.642 16.0176 L175.663 16.013 L177.684 16.0094 L179.705 16.0067 L181.726 16.0046 L183.747 16.0031 L185.768 16.002 L187.789 16.0012 L189.811 16.0007 L191.832 16.0004 L193.853 16.0002 L195.874 16.0001 L197.895 16 L199.916 16 L201.937 16 L203.958 16 L205.979 16 L208 16"/>
<path fill="none" stroke="#dcdcdc" stroke-width="1.75" d="M16 112 L18.0211 108.021 L20.0421 104.168 L22.0632 100.436 L24.0842 96.8244 L26.1053 93.3298 L28.1263 89.9498 L30.1474 86.6818 L32.1684 83.5233 L34.1895 80.4719 L36.2105 77.5251 L38.2316 74.6805 L40.2526 71.9357 L42.2737 69.2883 L44.2947 66.7361 L46.3158 64.2766 L48.3368 61.9077 L50.3579 59.627 L52.3789 57.4324 L54.4 55.3216 L56.4211 53.2925 L58.4421 51.343 L60.4632 49.471 L62.4842 47.6743 L64.5053 45.9509 L66.5263 44.2989 L68.5474 42.7161 L70.5684 41.2007 L72.5895 39.7507 L74.6105 38.3642 L76.6316 37.0392 L78.6526 35.7741 L80.6737 34.5669 L82.6947 33.4158 L84.7158 32.3191 L86.7368 31.275 L88.7579 30.2819 L90.7789 29.3379 L92.8 28.4416 L94.8211 27.5912 L96.8421 26.7852 L98.8632 26.0219 L100.884 25.2999 L102.905 24.6177 L104.926 23.9737 L106.947 23.3664 L108.968 22.7946 L110.989 22.2567 L113.011 21.7513 L115.032 21.2773 L117.053 20.8331 L119.074 20.4176 L121.095 20.0295 L123.116 19.6675 L125.137 19.3305 L127.158 19.0173 L129.179 18.7267 L131.2 18.4576 L133.221 18.2089 L135.242 17.9796 L137.263 17.7687 L139.284 17.5751 L141.305 17.3978 L143.326 17.2359 L145.347 17.0885 L147.368 16.9547 L149.389 16.8336 L151.411 16.7244 L153.432 16.6264 L155.453 16.5386 L157.474 16.4604 L159.495 16.391 L161.516 16.3298 L163.537 16.2761 L165.558 16.2292 L167.579 16.1886 L169.6 16.1536 L171.621 16.1237 L173.642 16.0984 L175.663 16.0772 L177.684 16.0597 L179.705 16.0453 L181.726 16.0337 L183.747 16.0244 L185.768 16.0173 L187.789 16.0118 L189.811 16.0077 L191.832 16.0048 L193.853 16.0028 L195.874 16.0015 L197.895 16.0007 L199.916 16.0003 L201.937 16.0001 L203.958 16 L205.979 16 L208 16"/>
</svg>

After

Width:  |  Height:  |  Size: 7.0 KiB

6
doc/snippets/easings-quinticin-thumb.svg

@ -0,0 +1,6 @@
<svg class="m-image m-nopadb" style="width: 128px; height: 128px; margin-top: -16px; margin-bottom: -16px;" viewBox="0 0 128 128">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M0 32 L128 32 M0 96 L128 96
M0 92 l0 8 M128 28 l0 8"/>
<path fill="none" stroke="#dcdcdc" stroke-width="1.5" d="M0 96 L2.03175 96 L4.06349 96 L6.09524 96 L8.12698 95.9999 L10.1587 95.9998 L12.1905 95.9995 L14.2222 95.9989 L16.254 95.9979 L18.2857 95.9962 L20.3175 95.9936 L22.3492 95.9896 L24.381 95.984 L26.4127 95.9761 L28.4444 95.9653 L30.4762 95.951 L32.5079 95.9324 L34.5397 95.9084 L36.5714 95.8781 L38.6032 95.8403 L40.6349 95.7936 L42.6667 95.7366 L44.6984 95.6677 L46.7302 95.5849 L48.7619 95.4865 L50.7937 95.3702 L52.8254 95.2338 L54.8571 95.0747 L56.8889 94.8901 L58.9206 94.6773 L60.9524 94.4329 L62.9841 94.1538 L65.0159 93.8362 L67.0476 93.4762 L69.0794 93.07 L71.1111 92.613 L73.1429 92.1007 L75.1746 91.5282 L77.2064 90.8903 L79.2381 90.1816 L81.2698 89.3965 L83.3016 88.5287 L85.3333 87.572 L87.3651 86.5198 L89.3968 85.3649 L91.4286 84.1002 L93.4603 82.7179 L95.4921 81.2101 L97.5238 79.5683 L99.5556 77.7838 L101.587 75.8476 L103.619 73.7501 L105.651 71.4815 L107.683 69.0315 L109.714 66.3895 L111.746 63.5443 L113.778 60.4846 L115.81 57.1982 L117.841 53.673 L119.873 49.8961 L121.905 45.8543 L123.937 41.5339 L125.968 36.9207 L128 32"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

11
doc/snippets/easings-quinticin.svg

@ -0,0 +1,11 @@
<svg class="m-image" style="width: 224px; height: 128px;" viewBox="0 0 224 128">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M16 16 L208 16 M16 112 L208 112
M16 106 l0 12 M208 10 l0 12"/>
<path fill="none" stroke="#cd3330" stroke-width="1.5" d="M1.85263 112 L3.87368 112 L5.89474 112 L7.91579 112 L9.93684 112 L11.9579 112 L13.9789 112 L16 112"/>
<path fill="none" stroke="#3ad267" stroke-width="1.5" d="M208 16 L210.021 10.8399 L212.042 5.46022 L214.063 -0.145935 L216.084 -5.98569 L218.105 -12.0661 L220.126 -18.3948 L222.147 -24.979"/>
<path fill="none" stroke="#737373" stroke-width="1" d="M16 112 L18.0211 111.989 L20.0421 111.957 L22.0632 111.904 L24.0842 111.83 L26.1053 111.734 L28.1263 111.617 L30.1474 111.479 L32.1684 111.319 L34.1895 111.138 L36.2105 110.936 L38.2316 110.713 L40.2526 110.468 L42.2737 110.202 L44.2947 109.915 L46.3158 109.607 L48.3368 109.277 L50.3579 108.926 L52.3789 108.554 L54.4 108.16 L56.4211 107.745 L58.4421 107.309 L60.4632 106.852 L62.4842 106.373 L64.5053 105.873 L66.5263 105.352 L68.5474 104.809 L70.5684 104.246 L72.5895 103.66 L74.6105 103.054 L76.6316 102.427 L78.6526 101.778 L80.6737 101.108 L82.6947 100.416 L84.7158 99.7035 L86.7368 98.9695 L88.7579 98.2143 L90.7789 97.4378 L92.8 96.64 L94.8211 95.8209 L96.8421 94.9806 L98.8632 94.119 L100.884 93.2361 L102.905 92.332 L104.926 91.4065 L106.947 90.4598 L108.968 89.4919 L110.989 88.5026 L113.011 87.4921 L115.032 86.4603 L117.053 85.4072 L119.074 84.3329 L121.095 83.2372 L123.116 82.1203 L125.137 80.9822 L127.158 79.8227 L129.179 78.642 L131.2 77.44 L133.221 76.2167 L135.242 74.9722 L137.263 73.7064 L139.284 72.4193 L141.305 71.1109 L143.326 69.7813 L145.347 68.4304 L147.368 67.0582 L149.389 65.6647 L151.411 64.25 L153.432 62.814 L155.453 61.3567 L157.474 59.8781 L159.495 58.3783 L161.516 56.8572 L163.537 55.3148 L165.558 53.7511 L167.579 52.1662 L169.6 50.56 L171.621 48.9325 L173.642 47.2838 L175.663 45.6137 L177.684 43.9224 L179.705 42.2099 L181.726 40.476 L183.747 38.7209 L185.768 36.9445 L187.789 35.1468 L189.811 33.3279 L191.832 31.4876 L193.853 29.6261 L195.874 27.7434 L197.895 25.8393 L199.916 23.914 L201.937 21.9674 L203.958 19.9996 L205.979 18.0104 L208 16"/>
<path fill="none" stroke="#737373" stroke-width="1" d="M16 112 L18.0211 112 L20.0421 111.999 L22.0632 111.997 L24.0842 111.993 L26.1053 111.986 L28.1263 111.976 L30.1474 111.962 L32.1684 111.943 L34.1895 111.918 L36.2105 111.888 L38.2316 111.851 L40.2526 111.807 L42.2737 111.754 L44.2947 111.693 L46.3158 111.622 L48.3368 111.541 L50.3579 111.45 L52.3789 111.347 L54.4 111.232 L56.4211 111.104 L58.4421 110.963 L60.4632 110.808 L62.4842 110.638 L64.5053 110.452 L66.5263 110.25 L68.5474 110.032 L70.5684 109.796 L72.5895 109.542 L74.6105 109.269 L76.6316 108.977 L78.6526 108.664 L80.6737 108.331 L82.6947 107.976 L84.7158 107.599 L86.7368 107.199 L88.7579 106.776 L90.7789 106.328 L92.8 105.856 L94.8211 105.358 L96.8421 104.834 L98.8632 104.283 L100.884 103.704 L102.905 103.098 L104.926 102.462 L106.947 101.797 L108.968 101.101 L110.989 100.375 L113.011 99.6171 L115.032 98.8269 L117.053 98.0038 L119.074 97.1471 L121.095 96.2562 L123.116 95.3303 L125.137 94.3688 L127.158 93.371 L129.179 92.3363 L131.2 91.264 L133.221 90.1534 L135.242 89.0038 L137.263 87.8146 L139.284 86.585 L141.305 85.3145 L143.326 84.0023 L145.347 82.6478 L147.368 81.2503 L149.389 79.8092 L151.411 78.3237 L153.432 76.7932 L155.453 75.2169 L157.474 73.5944 L159.495 71.9248 L161.516 70.2075 L163.537 68.4419 L165.558 66.6272 L167.579 64.7628 L169.6 62.848 L171.621 60.8821 L173.642 58.8646 L175.663 56.7946 L177.684 54.6715 L179.705 52.4947 L181.726 50.2635 L183.747 47.9772 L185.768 45.6351 L187.789 43.2366 L189.811 40.781 L191.832 38.2676 L193.853 35.6958 L195.874 33.0648 L197.895 30.3741 L199.916 27.6229 L201.937 24.8106 L203.958 21.9364 L205.979 18.9998 L208 16"/>
<path fill="none" stroke="#737373" stroke-width="1" d="M16 112 L18.0211 112 L20.0421 112 L22.0632 112 L24.0842 112 L26.1053 111.999 L28.1263 111.998 L30.1474 111.997 L32.1684 111.995 L34.1895 111.992 L36.2105 111.988 L38.2316 111.983 L40.2526 111.976 L42.2737 111.966 L44.2947 111.955 L46.3158 111.94 L48.3368 111.923 L50.3579 111.902 L52.3789 111.876 L54.4 111.846 L56.4211 111.811 L58.4421 111.771 L60.4632 111.724 L62.4842 111.67 L64.5053 111.609 L66.5263 111.54 L68.5474 111.461 L70.5684 111.374 L72.5895 111.276 L74.6105 111.166 L76.6316 111.045 L78.6526 110.912 L80.6737 110.764 L82.6947 110.602 L84.7158 110.425 L86.7368 110.231 L88.7579 110.02 L90.7789 109.791 L92.8 109.542 L94.8211 109.273 L96.8421 108.983 L98.8632 108.669 L100.884 108.332 L102.905 107.971 L104.926 107.582 L106.947 107.167 L108.968 106.723 L110.989 106.249 L113.011 105.743 L115.032 105.205 L117.053 104.634 L119.074 104.026 L121.095 103.382 L123.116 102.7 L125.137 101.978 L127.158 101.215 L129.179 100.409 L131.2 99.5584 L133.221 98.6621 L135.242 97.7181 L137.263 96.725 L139.284 95.6809 L141.305 94.5842 L143.326 93.4331 L145.347 92.2259 L147.368 90.9608 L149.389 89.6358 L151.411 88.2493 L153.432 86.7993 L155.453 85.2839 L157.474 83.7011 L159.495 82.0491 L161.516 80.3257 L163.537 78.529 L165.558 76.657 L167.579 74.7075 L169.6 72.6784 L171.621 70.5676 L173.642 68.373 L175.663 66.0923 L177.684 63.7234 L179.705 61.2639 L181.726 58.7117 L183.747 56.0643 L185.768 53.3195 L187.789 50.4749 L189.811 47.5281 L191.832 44.4767 L193.853 41.3182 L195.874 38.0502 L197.895 34.6702 L199.916 31.1756 L201.937 27.5639 L203.958 23.8325 L205.979 19.9787 L208 16"/>
<path fill="none" stroke="#dcdcdc" stroke-width="1.75" d="M16 112 L18.0211 112 L20.0421 112 L22.0632 112 L24.0842 112 L26.1053 112 L28.1263 112 L30.1474 112 L32.1684 112 L34.1895 111.999 L36.2105 111.999 L38.2316 111.998 L40.2526 111.997 L42.2737 111.995 L44.2947 111.993 L46.3158 111.991 L48.3368 111.987 L50.3579 111.982 L52.3789 111.977 L54.4 111.969 L56.4211 111.96 L58.4421 111.949 L60.4632 111.936 L62.4842 111.92 L64.5053 111.901 L66.5263 111.879 L68.5474 111.853 L70.5684 111.822 L72.5895 111.786 L74.6105 111.746 L76.6316 111.699 L78.6526 111.645 L80.6737 111.584 L82.6947 111.514 L84.7158 111.436 L86.7368 111.348 L88.7579 111.25 L90.7789 111.14 L92.8 111.017 L94.8211 110.881 L96.8421 110.73 L98.8632 110.563 L100.884 110.379 L102.905 110.176 L104.926 109.954 L106.947 109.711 L108.968 109.445 L110.989 109.155 L113.011 108.839 L115.032 108.495 L117.053 108.123 L119.074 107.719 L121.095 107.283 L123.116 106.812 L125.137 106.303 L127.158 105.756 L129.179 105.167 L131.2 104.535 L133.221 103.857 L135.242 103.13 L137.263 102.353 L139.284 101.521 L141.305 100.634 L143.326 99.6872 L145.347 98.6785 L147.368 97.6047 L149.389 96.4628 L151.411 95.2495 L153.432 93.9616 L155.453 92.5957 L157.474 91.1482 L159.495 89.6156 L161.516 87.9942 L163.537 86.2802 L165.558 84.4697 L167.579 82.5585 L169.6 80.5427 L171.621 78.418 L173.642 76.18 L175.663 73.8241 L177.684 71.346 L179.705 68.7408 L181.726 66.0038 L183.747 63.1298 L185.768 60.1141 L187.789 56.9512 L189.811 53.6359 L191.832 50.1628 L193.853 46.5264 L195.874 42.7207 L197.895 38.7402 L199.916 34.5787 L201.937 30.2303 L203.958 25.6887 L205.979 20.9474 L208 16"/>
</svg>

After

Width:  |  Height:  |  Size: 7.0 KiB

6
doc/snippets/easings-quinticinout-thumb.svg

@ -0,0 +1,6 @@
<svg class="m-image m-nopadb" style="width: 128px; height: 128px; margin-top: -16px; margin-bottom: -16px;" viewBox="0 0 128 128">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M0 32 L128 32 M0 96 L128 96
M0 92 l0 8 M128 28 l0 8"/>
<path fill="none" stroke="#dcdcdc" stroke-width="1.5" d="M0 96 L2.03175 96 L4.06349 96 L6.09524 95.9997 L8.12698 95.9989 L10.1587 95.9968 L12.1905 95.992 L14.2222 95.9827 L16.254 95.9662 L18.2857 95.9391 L20.3175 95.8968 L22.3492 95.8338 L24.381 95.7433 L26.4127 95.6169 L28.4444 95.4451 L30.4762 95.2165 L32.5079 94.9181 L34.5397 94.535 L36.5714 94.0503 L38.6032 93.4451 L40.6349 92.6982 L42.6667 91.786 L44.6984 90.6825 L46.7302 89.359 L48.7619 87.7841 L50.7937 85.9238 L52.8254 83.7408 L54.8571 81.1947 L56.8889 78.2423 L58.9206 74.8365 L60.9524 70.9272 L62.9841 66.4603 L65.0159 61.5397 L67.0476 57.0728 L69.0794 53.1635 L71.1111 49.7577 L73.1429 46.8053 L75.1746 44.2592 L77.2064 42.0762 L79.2381 40.2159 L81.2698 38.641 L83.3016 37.3175 L85.3333 36.214 L87.3651 35.3018 L89.3968 34.5549 L91.4286 33.9497 L93.4603 33.465 L95.4921 33.0819 L97.5238 32.7835 L99.5556 32.5549 L101.587 32.3831 L103.619 32.2567 L105.651 32.1662 L107.683 32.1032 L109.714 32.0609 L111.746 32.0338 L113.778 32.0173 L115.81 32.008 L117.841 32.0032 L119.873 32.0011 L121.905 32.0003 L123.937 32 L125.968 32 L128 32"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

11
doc/snippets/easings-quinticinout.svg

@ -0,0 +1,11 @@
<svg class="m-image" style="width: 224px; height: 128px;" viewBox="0 0 224 128">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M16 16 L208 16 M16 112 L208 112
M16 106 l0 12 M208 10 l0 12"/>
<path fill="none" stroke="#cd3330" stroke-width="1.5" d="M1.85263 112.003 L3.87368 112.002 L5.89474 112.001 L7.91579 112 L9.93684 112 L11.9579 112 L13.9789 112 L16 112"/>
<path fill="none" stroke="#cd3330" stroke-width="1.5" d="M208 16 L210.021 16 L212.042 16 L214.063 16 L216.084 15.9998 L218.105 15.9994 L220.126 15.9985 L222.147 15.9967"/>
<path fill="none" stroke="#737373" stroke-width="1" d="M16 112 L18.0211 111.979 L20.0421 111.915 L22.0632 111.809 L24.0842 111.66 L26.1053 111.468 L28.1263 111.234 L30.1474 110.958 L32.1684 110.638 L34.1895 110.277 L36.2105 109.873 L38.2316 109.426 L40.2526 108.937 L42.2737 108.405 L44.2947 107.83 L46.3158 107.213 L48.3368 106.554 L50.3579 105.852 L52.3789 105.107 L54.4 104.32 L56.4211 103.49 L58.4421 102.618 L60.4632 101.703 L62.4842 100.746 L64.5053 99.746 L66.5263 98.7036 L68.5474 97.6186 L70.5684 96.4911 L72.5895 95.321 L74.6105 94.1084 L76.6316 92.8532 L78.6526 91.5555 L80.6737 90.2152 L82.6947 88.8324 L84.7158 87.407 L86.7368 85.9391 L88.7579 84.4286 L90.7789 82.8756 L92.8 81.28 L94.8211 79.6419 L96.8421 77.9612 L98.8632 76.238 L100.884 74.4722 L102.905 72.6639 L104.926 70.8131 L106.947 68.9197 L108.968 66.9837 L110.989 65.0052 L113.011 62.9948 L115.032 61.0163 L117.053 59.0803 L119.074 57.1869 L121.095 55.3361 L123.116 53.5278 L125.137 51.762 L127.158 50.0388 L129.179 48.3581 L131.2 46.72 L133.221 45.1244 L135.242 43.5714 L137.263 42.0609 L139.284 40.593 L141.305 39.1676 L143.326 37.7848 L145.347 36.4445 L147.368 35.1468 L149.389 33.8916 L151.411 32.679 L153.432 31.5089 L155.453 30.3814 L157.474 29.2964 L159.495 28.254 L161.516 27.2541 L163.537 26.2967 L165.558 25.3819 L167.579 24.5097 L169.6 23.68 L171.621 22.8929 L173.642 22.1483 L175.663 21.4462 L177.684 20.7867 L179.705 20.1697 L181.726 19.5953 L183.747 19.0635 L185.768 18.5742 L187.789 18.1274 L189.811 17.7232 L191.832 17.3615 L193.853 17.0424 L195.874 16.7659 L197.895 16.5319 L199.916 16.3404 L201.937 16.1915 L203.958 16.0851 L205.979 16.0213 L208 16"/>
<path fill="none" stroke="#737373" stroke-width="1" d="M16 112 L18.0211 112 L20.0421 111.996 L22.0632 111.988 L24.0842 111.971 L26.1053 111.944 L28.1263 111.903 L30.1474 111.846 L32.1684 111.771 L34.1895 111.673 L36.2105 111.552 L38.2316 111.404 L40.2526 111.226 L42.2737 111.016 L44.2947 110.771 L46.3158 110.488 L48.3368 110.165 L50.3579 109.8 L52.3789 109.388 L54.4 108.928 L56.4211 108.417 L58.4421 107.852 L60.4632 107.231 L62.4842 106.551 L64.5053 105.809 L66.5263 105.002 L68.5474 104.128 L70.5684 103.184 L72.5895 102.168 L74.6105 101.077 L76.6316 99.9073 L78.6526 98.6572 L80.6737 97.3239 L82.6947 95.9046 L84.7158 94.3966 L86.7368 92.7972 L88.7579 91.1038 L90.7789 89.3136 L92.8 87.424 L94.8211 85.4323 L96.8421 83.3358 L98.8632 81.1318 L100.884 78.8176 L102.905 76.3905 L104.926 73.8479 L106.947 71.1871 L108.968 68.4053 L110.989 65.4999 L113.011 62.5001 L115.032 59.5947 L117.053 56.8129 L119.074 54.1521 L121.095 51.6095 L123.116 49.1824 L125.137 46.8682 L127.158 44.6642 L129.179 42.5677 L131.2 40.576 L133.221 38.6864 L135.242 36.8962 L137.263 35.2028 L139.284 33.6034 L141.305 32.0954 L143.326 30.6761 L145.347 29.3428 L147.368 28.0927 L149.389 26.9233 L151.411 25.8318 L153.432 24.8156 L155.453 23.8719 L157.474 22.9981 L159.495 22.1915 L161.516 21.4493 L163.537 20.769 L165.558 20.1478 L167.579 19.583 L169.6 19.072 L171.621 18.612 L173.642 18.2004 L175.663 17.8345 L177.684 17.5116 L179.705 17.229 L181.726 16.984 L183.747 16.7739 L185.768 16.5961 L187.789 16.4479 L189.811 16.3265 L191.832 16.2293 L193.853 16.1536 L195.874 16.0967 L197.895 16.056 L199.916 16.0287 L201.937 16.0121 L203.958 16.0036 L205.979 16.0004 L208 16"/>
<path fill="none" stroke="#737373" stroke-width="1" d="M16 112 L18.0211 112 L20.0421 112 L22.0632 111.999 L24.0842 111.998 L26.1053 111.994 L28.1263 111.988 L30.1474 111.977 L32.1684 111.961 L34.1895 111.938 L36.2105 111.906 L38.2316 111.862 L40.2526 111.804 L42.2737 111.731 L44.2947 111.638 L46.3158 111.523 L48.3368 111.382 L50.3579 111.212 L52.3789 111.01 L54.4 110.771 L56.4211 110.491 L58.4421 110.166 L60.4632 109.791 L62.4842 109.361 L64.5053 108.872 L66.5263 108.317 L68.5474 107.691 L70.5684 106.989 L72.5895 106.204 L74.6105 105.331 L76.6316 104.362 L78.6526 103.292 L80.6737 102.113 L82.6947 100.818 L84.7158 99.3997 L86.7368 97.8506 L88.7579 96.1629 L90.7789 94.3285 L92.8 92.3392 L94.8211 90.1865 L96.8421 87.8617 L98.8632 85.3558 L100.884 82.6597 L102.905 79.764 L104.926 76.6591 L106.947 73.3351 L108.968 69.782 L110.989 65.9894 L113.011 62.0106 L115.032 58.2181 L117.053 54.6649 L119.074 51.3409 L121.095 48.236 L123.116 45.3402 L125.137 42.6442 L127.158 40.1383 L129.179 37.8135 L131.2 35.6608 L133.221 33.6715 L135.242 31.8371 L137.263 30.1494 L139.284 28.6003 L141.305 27.1821 L143.326 25.887 L145.347 24.7079 L147.368 23.6375 L149.389 22.669 L151.411 21.7956 L153.432 21.011 L155.453 20.3088 L157.474 19.6832 L159.495 19.1283 L161.516 18.6386 L163.537 18.2088 L165.558 17.8338 L167.579 17.5086 L169.6 17.2288 L171.621 16.9898 L173.642 16.7875 L175.663 16.6179 L177.684 16.4773 L179.705 16.3622 L181.726 16.2693 L183.747 16.1955 L185.768 16.138 L187.789 16.0943 L189.811 16.0619 L191.832 16.0386 L193.853 16.0226 L195.874 16.0122 L197.895 16.0059 L199.916 16.0024 L201.937 16.0008 L203.958 16.0002 L205.979 16 L208 16"/>
<path fill="none" stroke="#dcdcdc" stroke-width="1.75" d="M16 112 L18.0211 112 L20.0421 112 L22.0632 112 L24.0842 112 L26.1053 111.999 L28.1263 111.998 L30.1474 111.997 L32.1684 111.993 L34.1895 111.988 L36.2105 111.98 L38.2316 111.968 L40.2526 111.951 L42.2737 111.926 L44.2947 111.893 L46.3158 111.849 L48.3368 111.792 L50.3579 111.718 L52.3789 111.625 L54.4 111.508 L56.4211 111.365 L58.4421 111.189 L60.4632 110.977 L62.4842 110.722 L64.5053 110.419 L66.5263 110.061 L68.5474 109.641 L70.5684 109.152 L72.5895 108.584 L74.6105 107.928 L76.6316 107.176 L78.6526 106.317 L80.6737 105.339 L82.6947 104.231 L84.7158 102.981 L86.7368 101.574 L88.7579 99.9971 L90.7789 98.2348 L92.8 96.2714 L94.8211 94.09 L96.8421 91.673 L98.8632 89.0019 L100.884 86.057 L102.905 82.818 L104.926 79.2632 L106.947 75.3701 L108.968 71.1152 L110.989 66.4737 L113.011 61.5263 L115.032 56.8849 L117.053 52.6299 L119.074 48.7368 L121.095 45.182 L123.116 41.943 L125.137 38.9981 L127.158 36.327 L129.179 33.91 L131.2 31.7286 L133.221 29.7652 L135.242 28.0029 L137.263 26.4259 L139.284 25.0192 L141.305 23.7686 L143.326 22.6608 L145.347 21.6831 L147.368 20.8237 L149.389 20.0716 L151.411 19.4164 L153.432 18.8483 L155.453 18.3585 L157.474 17.9385 L159.495 17.5806 L161.516 17.2776 L163.537 17.023 L165.558 16.8107 L167.579 16.6352 L169.6 16.4915 L171.621 16.3751 L173.642 16.2819 L175.663 16.2082 L177.684 16.1507 L179.705 16.1068 L181.726 16.0737 L183.747 16.0494 L185.768 16.032 L187.789 16.0198 L189.811 16.0117 L191.832 16.0065 L193.853 16.0033 L195.874 16.0015 L197.895 16.0006 L199.916 16.0002 L201.937 16 L203.958 16 L205.979 16 L208 16"/>
</svg>

After

Width:  |  Height:  |  Size: 6.9 KiB

6
doc/snippets/easings-quinticout-thumb.svg

@ -0,0 +1,6 @@
<svg class="m-image m-nopadb" style="width: 128px; height: 128px; margin-top: -16px; margin-bottom: -16px;" viewBox="0 0 128 128">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M0 32 L128 32 M0 96 L128 96
M0 92 l0 8 M128 28 l0 8"/>
<path fill="none" stroke="#dcdcdc" stroke-width="1.5" d="M0 96 L2.03175 91.0793 L4.06349 86.4661 L6.09524 82.1457 L8.12698 78.1039 L10.1587 74.327 L12.1905 70.8018 L14.2222 67.5154 L16.254 64.4557 L18.2857 61.6105 L20.3175 58.9685 L22.3492 56.5185 L24.381 54.2499 L26.4127 52.1524 L28.4444 50.2162 L30.4762 48.4317 L32.5079 46.7899 L34.5397 45.2821 L36.5714 43.8998 L38.6032 42.6351 L40.6349 41.4802 L42.6667 40.428 L44.6984 39.4713 L46.7302 38.6035 L48.7619 37.8184 L50.7937 37.1097 L52.8254 36.4718 L54.8571 35.8993 L56.8889 35.387 L58.9206 34.93 L60.9524 34.5238 L62.9841 34.1638 L65.0159 33.8462 L67.0476 33.5671 L69.0794 33.3227 L71.1111 33.1098 L73.1429 32.9253 L75.1746 32.7662 L77.2064 32.6298 L79.2381 32.5135 L81.2698 32.4151 L83.3016 32.3323 L85.3333 32.2634 L87.3651 32.2064 L89.3968 32.1597 L91.4286 32.1218 L93.4603 32.0916 L95.4921 32.0676 L97.5238 32.049 L99.5556 32.0347 L101.587 32.0239 L103.619 32.016 L105.651 32.0104 L107.683 32.0064 L109.714 32.0038 L111.746 32.0021 L113.778 32.0011 L115.81 32.0005 L117.841 32.0002 L119.873 32.0001 L121.905 32 L123.937 32 L125.968 32 L128 32"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

11
doc/snippets/easings-quinticout.svg

@ -0,0 +1,11 @@
<svg class="m-image" style="width: 224px; height: 128px;" viewBox="0 0 224 128">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M16 16 L208 16 M16 112 L208 112
M16 106 l0 12 M208 10 l0 12"/>
<path fill="none" stroke="#3ad267" stroke-width="1.5" d="M1.85263 152.979 L3.87368 146.395 L5.89474 140.066 L7.91579 133.986 L9.93684 128.146 L11.9579 122.54 L13.9789 117.16 L16 112"/>
<path fill="none" stroke="#cd3330" stroke-width="1.5" d="M208 16 L210.021 16 L212.042 16 L214.063 16 L216.084 16 L218.105 16 L220.126 15.9999 L222.147 15.9998"/>
<path fill="none" stroke="#737373" stroke-width="1" d="M16 112 L18.0211 109.99 L20.0421 108 L22.0632 106.033 L24.0842 104.086 L26.1053 102.161 L28.1263 100.257 L30.1474 98.3738 L32.1684 96.5124 L34.1895 94.6721 L36.2105 92.8532 L38.2316 91.0555 L40.2526 89.2791 L42.2737 87.524 L44.2947 85.7901 L46.3158 84.0776 L48.3368 82.3863 L50.3579 80.7162 L52.3789 79.0675 L54.4 77.44 L56.4211 75.8338 L58.4421 74.2489 L60.4632 72.6852 L62.4842 71.1428 L64.5053 69.6217 L66.5263 68.1219 L68.5474 66.6433 L70.5684 65.186 L72.5895 63.75 L74.6105 62.3353 L76.6316 60.9418 L78.6526 59.5696 L80.6737 58.2187 L82.6947 56.8891 L84.7158 55.5807 L86.7368 54.2936 L88.7579 53.0278 L90.7789 51.7833 L92.8 50.56 L94.8211 49.358 L96.8421 48.1773 L98.8632 47.0178 L100.884 45.8797 L102.905 44.7628 L104.926 43.6671 L106.947 42.5928 L108.968 41.5397 L110.989 40.5079 L113.011 39.4974 L115.032 38.5081 L117.053 37.5402 L119.074 36.5935 L121.095 35.668 L123.116 34.7639 L125.137 33.881 L127.158 33.0194 L129.179 32.1791 L131.2 31.36 L133.221 30.5622 L135.242 29.7857 L137.263 29.0305 L139.284 28.2965 L141.305 27.5838 L143.326 26.8924 L145.347 26.2223 L147.368 25.5734 L149.389 24.9458 L151.411 24.3395 L153.432 23.7545 L155.453 23.1907 L157.474 22.6482 L159.495 22.127 L161.516 21.627 L163.537 21.1484 L165.558 20.691 L167.579 20.2548 L169.6 19.84 L171.621 19.4464 L173.642 19.0741 L175.663 18.7231 L177.684 18.3933 L179.705 18.0849 L181.726 17.7977 L183.747 17.5317 L185.768 17.2871 L187.789 17.0637 L189.811 16.8616 L191.832 16.6808 L193.853 16.5212 L195.874 16.3829 L197.895 16.2659 L199.916 16.1702 L201.937 16.0957 L203.958 16.0425 L205.979 16.0106 L208 16"/>
<path fill="none" stroke="#737373" stroke-width="1" d="M16 112 L18.0211 109 L20.0421 106.064 L22.0632 103.189 L24.0842 100.377 L26.1053 97.6259 L28.1263 94.9351 L30.1474 92.3042 L32.1684 89.7324 L34.1895 87.219 L36.2105 84.7634 L38.2316 82.3649 L40.2526 80.0228 L42.2737 77.7365 L44.2947 75.5053 L46.3158 73.3285 L48.3368 71.2054 L50.3579 69.1354 L52.3789 67.1179 L54.4 65.152 L56.4211 63.2372 L58.4421 61.3728 L60.4632 59.5581 L62.4842 57.7925 L64.5053 56.0752 L66.5263 54.4056 L68.5474 52.7831 L70.5684 51.2068 L72.5895 49.6763 L74.6105 48.1908 L76.6316 46.7497 L78.6526 45.3522 L80.6737 43.9977 L82.6947 42.6855 L84.7158 41.415 L86.7368 40.1854 L88.7579 38.9962 L90.7789 37.8466 L92.8 36.736 L94.8211 35.6637 L96.8421 34.629 L98.8632 33.6312 L100.884 32.6697 L102.905 31.7438 L104.926 30.8529 L106.947 29.9962 L108.968 29.1731 L110.989 28.3829 L113.011 27.625 L115.032 26.8987 L117.053 26.2032 L119.074 25.538 L121.095 24.9024 L123.116 24.2956 L125.137 23.7171 L127.158 23.1661 L129.179 22.6419 L131.2 22.144 L133.221 21.6716 L135.242 21.2241 L137.263 20.8007 L139.284 20.4009 L141.305 20.0239 L143.326 19.669 L145.347 19.3357 L147.368 19.0232 L149.389 18.7308 L151.411 18.458 L153.432 18.2039 L155.453 17.968 L157.474 17.7495 L159.495 17.5479 L161.516 17.3623 L163.537 17.1923 L165.558 17.037 L167.579 16.8958 L169.6 16.768 L171.621 16.653 L173.642 16.5501 L175.663 16.4586 L177.684 16.3779 L179.705 16.3072 L181.726 16.246 L183.747 16.1935 L185.768 16.149 L187.789 16.112 L189.811 16.0816 L191.832 16.0573 L193.853 16.0384 L195.874 16.0242 L197.895 16.014 L199.916 16.0072 L201.937 16.003 L203.958 16.0009 L205.979 16.0001 L208 16"/>
<path fill="none" stroke="#737373" stroke-width="1" d="M16 112 L18.0211 108.021 L20.0421 104.168 L22.0632 100.436 L24.0842 96.8244 L26.1053 93.3298 L28.1263 89.9498 L30.1474 86.6818 L32.1684 83.5233 L34.1895 80.4719 L36.2105 77.5251 L38.2316 74.6805 L40.2526 71.9357 L42.2737 69.2883 L44.2947 66.7361 L46.3158 64.2766 L48.3368 61.9077 L50.3579 59.627 L52.3789 57.4324 L54.4 55.3216 L56.4211 53.2925 L58.4421 51.343 L60.4632 49.471 L62.4842 47.6743 L64.5053 45.9509 L66.5263 44.2989 L68.5474 42.7161 L70.5684 41.2007 L72.5895 39.7507 L74.6105 38.3642 L76.6316 37.0392 L78.6526 35.7741 L80.6737 34.5669 L82.6947 33.4158 L84.7158 32.3191 L86.7368 31.275 L88.7579 30.2819 L90.7789 29.3379 L92.8 28.4416 L94.8211 27.5912 L96.8421 26.7852 L98.8632 26.0219 L100.884 25.2999 L102.905 24.6177 L104.926 23.9737 L106.947 23.3664 L108.968 22.7946 L110.989 22.2567 L113.011 21.7513 L115.032 21.2773 L117.053 20.8331 L119.074 20.4176 L121.095 20.0295 L123.116 19.6675 L125.137 19.3305 L127.158 19.0173 L129.179 18.7267 L131.2 18.4576 L133.221 18.2089 L135.242 17.9796 L137.263 17.7687 L139.284 17.5751 L141.305 17.3978 L143.326 17.2359 L145.347 17.0885 L147.368 16.9547 L149.389 16.8336 L151.411 16.7244 L153.432 16.6264 L155.453 16.5386 L157.474 16.4604 L159.495 16.391 L161.516 16.3298 L163.537 16.2761 L165.558 16.2292 L167.579 16.1886 L169.6 16.1536 L171.621 16.1237 L173.642 16.0984 L175.663 16.0772 L177.684 16.0597 L179.705 16.0453 L181.726 16.0337 L183.747 16.0244 L185.768 16.0173 L187.789 16.0118 L189.811 16.0077 L191.832 16.0048 L193.853 16.0028 L195.874 16.0015 L197.895 16.0007 L199.916 16.0003 L201.937 16.0001 L203.958 16 L205.979 16 L208 16"/>
<path fill="none" stroke="#dcdcdc" stroke-width="1.75" d="M16 112 L18.0211 107.053 L20.0421 102.311 L22.0632 97.7697 L24.0842 93.4213 L26.1053 89.2598 L28.1263 85.2793 L30.1474 81.4736 L32.1684 77.8372 L34.1895 74.3641 L36.2105 71.0488 L38.2316 67.8859 L40.2526 64.8702 L42.2737 61.9962 L44.2947 59.2592 L46.3158 56.654 L48.3368 54.1759 L50.3579 51.82 L52.3789 49.582 L54.4 47.4573 L56.4211 45.4415 L58.4421 43.5303 L60.4632 41.7198 L62.4842 40.0058 L64.5053 38.3844 L66.5263 36.8518 L68.5474 35.4043 L70.5684 34.0384 L72.5895 32.7505 L74.6105 31.5372 L76.6316 30.3953 L78.6526 29.3215 L80.6737 28.3128 L82.6947 27.3661 L84.7158 26.4786 L86.7368 25.6474 L88.7579 24.8698 L90.7789 24.1432 L92.8 23.465 L94.8211 22.8327 L96.8421 22.244 L98.8632 21.6967 L100.884 21.1884 L102.905 20.717 L104.926 20.2806 L106.947 19.8771 L108.968 19.5046 L110.989 19.1612 L113.011 18.8454 L115.032 18.5553 L117.053 18.2894 L119.074 18.046 L121.095 17.8239 L123.116 17.6214 L125.137 17.4374 L127.158 17.2704 L129.179 17.1194 L131.2 16.983 L133.221 16.8603 L135.242 16.7502 L137.263 16.6516 L139.284 16.5637 L141.305 16.4855 L143.326 16.4163 L145.347 16.3552 L147.368 16.3015 L149.389 16.2545 L151.411 16.2135 L153.432 16.178 L155.453 16.1474 L157.474 16.1212 L159.495 16.0988 L161.516 16.0799 L163.537 16.0639 L165.558 16.0507 L167.579 16.0397 L169.6 16.0307 L171.621 16.0234 L173.642 16.0176 L175.663 16.013 L177.684 16.0094 L179.705 16.0067 L181.726 16.0046 L183.747 16.0031 L185.768 16.002 L187.789 16.0012 L189.811 16.0007 L191.832 16.0004 L193.853 16.0002 L195.874 16.0001 L197.895 16 L199.916 16 L201.937 16 L203.958 16 L205.979 16 L208 16"/>
</svg>

After

Width:  |  Height:  |  Size: 6.9 KiB

6
doc/snippets/easings-sinein-thumb.svg

@ -0,0 +1,6 @@
<svg class="m-image m-nopadb" style="width: 128px; height: 128px; margin-top: -16px; margin-bottom: -16px;" viewBox="0 0 128 128">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M0 32 L128 32 M0 96 L128 96
M0 92 l0 8 M128 28 l0 8"/>
<path fill="none" stroke="#dcdcdc" stroke-width="1.5" d="M0 96 L2.03175 95.9801 L4.06349 95.9204 L6.09524 95.821 L8.12698 95.682 L10.1587 95.5033 L12.1905 95.2852 L14.2222 95.0277 L16.254 94.731 L18.2857 94.3954 L20.3175 94.021 L22.3492 93.608 L24.381 93.1567 L26.4127 92.6674 L28.4444 92.1403 L30.4762 91.5759 L32.5079 90.9745 L34.5397 90.3364 L36.5714 89.662 L38.6032 88.9518 L40.6349 88.2062 L42.6667 87.4256 L44.6984 86.6106 L46.7302 85.7617 L48.7619 84.8793 L50.7937 83.964 L52.8254 83.0165 L54.8571 82.0372 L56.8889 81.0268 L58.9206 79.986 L60.9524 78.9153 L62.9841 77.8155 L65.0159 76.6872 L67.0476 75.5311 L69.0794 74.3479 L71.1111 73.1384 L73.1429 71.9033 L75.1746 70.6435 L77.2064 69.3596 L79.2381 68.0525 L81.2698 66.723 L83.3016 65.3718 L85.3333 64 L87.3651 62.6083 L89.3968 61.1975 L91.4286 59.7686 L93.4603 58.3224 L95.4921 56.8598 L97.5238 55.3818 L99.5556 53.8893 L101.587 52.3831 L103.619 50.8643 L105.651 49.3338 L107.683 47.7925 L109.714 46.2413 L111.746 44.6814 L113.778 43.1135 L115.81 41.5387 L117.841 39.958 L119.873 38.3723 L121.905 36.7827 L123.937 35.1901 L125.968 33.5956 L128 32"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

9
doc/snippets/easings-sinein.svg

@ -0,0 +1,9 @@
<svg class="m-image" style="width: 224px; height: 128px;" viewBox="0 0 224 128">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M16 16 L208 16 M16 112 L208 112
M16 106 l0 12 M208 10 l0 12"/>
<path fill="none" stroke="#cd3330" stroke-width="1.5" d="M1.85263 111.358 L3.87368 111.528 L5.89474 111.672 L7.91579 111.79 L9.93684 111.882 L11.9579 111.948 L13.9789 111.987 L16 112"/>
<path fill="none" stroke="#cd3330" stroke-width="1.5" d="M208 16 L210.021 14.4127 L212.042 12.8259 L214.063 11.24 L216.084 9.65529 L218.105 8.07239 L220.126 6.49164 L222.147 4.91348"/>
<path fill="none" stroke="#737373" stroke-width="1" d="M16 112 L18.0211 111.995 L20.0421 111.979 L22.0632 111.952 L24.0842 111.915 L26.1053 111.867 L28.1263 111.808 L30.1474 111.739 L32.1684 111.659 L34.1895 111.568 L36.2105 111.467 L38.2316 111.354 L40.2526 111.231 L42.2737 111.097 L44.2947 110.952 L46.3158 110.796 L48.3368 110.629 L50.3579 110.45 L52.3789 110.261 L54.4 110.06 L56.4211 109.848 L58.4421 109.625 L60.4632 109.39 L62.4842 109.144 L64.5053 108.886 L66.5263 108.616 L68.5474 108.335 L70.5684 108.041 L72.5895 107.736 L74.6105 107.418 L76.6316 107.088 L78.6526 106.745 L80.6737 106.39 L82.6947 106.022 L84.7158 105.641 L86.7368 105.247 L88.7579 104.84 L90.7789 104.42 L92.8 103.985 L94.8211 103.537 L96.8421 103.075 L98.8632 102.599 L100.884 102.108 L102.905 101.603 L104.926 101.082 L106.947 100.547 L108.968 99.9953 L110.989 99.4281 L113.011 98.8447 L115.032 98.2447 L117.053 97.6278 L119.074 96.9935 L121.095 96.3416 L123.116 95.6715 L125.137 94.9828 L127.158 94.275 L129.179 93.5476 L131.2 92.8 L133.221 92.0316 L135.242 91.2418 L137.263 90.4299 L139.284 89.5952 L141.305 88.7368 L143.326 87.854 L145.347 86.9459 L147.368 86.0113 L149.389 85.0493 L151.411 84.0588 L153.432 83.0383 L155.453 81.9867 L157.474 80.9022 L159.495 79.7833 L161.516 78.6282 L163.537 77.4347 L165.558 76.2006 L167.579 74.9233 L169.6 73.6 L171.621 72.2274 L173.642 70.8018 L175.663 69.319 L177.684 67.7741 L179.705 66.1612 L181.726 64.4737 L183.747 62.7034 L185.768 60.8405 L187.789 58.873 L189.811 56.7857 L191.832 54.5592 L193.853 52.1678 L195.874 49.5763 L197.895 46.7339 L199.916 43.5635 L201.937 39.9348 L203.958 35.5948 L205.979 29.8924 L208 16"/>
<path fill="none" stroke="#dcdcdc" stroke-width="1.75" d="M16 112 L18.0211 111.987 L20.0421 111.948 L22.0632 111.882 L24.0842 111.79 L26.1053 111.672 L28.1263 111.528 L30.1474 111.358 L32.1684 111.161 L34.1895 110.939 L36.2105 110.691 L38.2316 110.416 L40.2526 110.116 L42.2737 109.791 L44.2947 109.439 L46.3158 109.062 L48.3368 108.66 L50.3579 108.232 L52.3789 107.779 L54.4 107.301 L56.4211 106.798 L58.4421 106.271 L60.4632 105.718 L62.4842 105.141 L64.5053 104.54 L66.5263 103.914 L68.5474 103.265 L70.5684 102.591 L72.5895 101.894 L74.6105 101.173 L76.6316 100.429 L78.6526 99.6625 L80.6737 98.8726 L82.6947 98.0601 L84.7158 97.2251 L86.7368 96.368 L88.7579 95.4888 L90.7789 94.588 L92.8 93.6656 L94.8211 92.7221 L96.8421 91.7575 L98.8632 90.7722 L100.884 89.7665 L102.905 88.7406 L104.926 87.6949 L106.947 86.6295 L108.968 85.5448 L110.989 84.4411 L113.011 83.3187 L115.032 82.1779 L117.053 81.019 L119.074 79.8424 L121.095 78.6482 L123.116 77.437 L125.137 76.2089 L127.158 74.9644 L129.179 73.7038 L131.2 72.4274 L133.221 71.1356 L135.242 69.8286 L137.263 68.507 L139.284 67.1711 L141.305 65.8211 L143.326 64.4575 L145.347 63.0807 L147.368 61.6909 L149.389 60.2887 L151.411 58.8745 L153.432 57.4484 L155.453 56.0111 L157.474 54.5628 L159.495 53.1039 L161.516 51.6349 L163.537 50.1562 L165.558 48.6681 L167.579 47.1711 L169.6 45.6656 L171.621 44.152 L173.642 42.6307 L175.663 41.1021 L177.684 39.5666 L179.705 38.0247 L181.726 36.4768 L183.747 34.9232 L185.768 33.3645 L187.789 31.8011 L189.811 30.2333 L191.832 28.6616 L193.853 27.0865 L195.874 25.5084 L197.895 23.9276 L199.916 22.3447 L201.937 20.76 L203.958 19.1741 L205.979 17.5873 L208 16"/>
</svg>

After

Width:  |  Height:  |  Size: 3.8 KiB

6
doc/snippets/easings-sineinout-thumb.svg

@ -0,0 +1,6 @@
<svg class="m-image m-nopadb" style="width: 128px; height: 128px; margin-top: -16px; margin-bottom: -16px;" viewBox="0 0 128 128">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M0 32 L128 32 M0 96 L128 96
M0 92 l0 8 M128 28 l0 8"/>
<path fill="none" stroke="#dcdcdc" stroke-width="1.5" d="M0 96 L2.03175 95.9602 L4.06349 95.841 L6.09524 95.6426 L8.12698 95.3655 L10.1587 95.0105 L12.1905 94.5783 L14.2222 94.0702 L16.254 93.4872 L18.2857 92.831 L20.3175 92.1031 L22.3492 91.3053 L24.381 90.4396 L26.4127 89.5082 L28.4444 88.5134 L30.4762 87.4577 L32.5079 86.3436 L34.5397 85.174 L36.5714 83.9517 L38.6032 82.6798 L40.6349 81.3615 L42.6667 80 L44.6984 78.5987 L46.7302 77.1612 L48.7619 75.6909 L50.7937 74.1916 L52.8254 72.6669 L54.8571 71.1207 L56.8889 69.5567 L58.9206 67.979 L60.9524 66.3914 L62.9841 64.7978 L65.0159 63.2022 L67.0476 61.6086 L69.0794 60.021 L71.1111 58.4433 L73.1429 56.8793 L75.1746 55.3331 L77.2064 53.8084 L79.2381 52.3091 L81.2698 50.8388 L83.3016 49.4013 L85.3333 48 L87.3651 46.6385 L89.3968 45.3202 L91.4286 44.0483 L93.4603 42.826 L95.4921 41.6564 L97.5238 40.5423 L99.5556 39.4866 L101.587 38.4918 L103.619 37.5604 L105.651 36.6947 L107.683 35.8969 L109.714 35.169 L111.746 34.5128 L113.778 33.9298 L115.81 33.4217 L117.841 32.9895 L119.873 32.6345 L121.905 32.3574 L123.937 32.159 L125.968 32.0398 L128 32"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

9
doc/snippets/easings-sineinout.svg

@ -0,0 +1,9 @@
<svg class="m-image" style="width: 224px; height: 128px;" viewBox="0 0 224 128">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M16 16 L208 16 M16 112 L208 112
M16 106 l0 12 M208 10 l0 12"/>
<path fill="none" stroke="#cd3330" stroke-width="1.5" d="M1.85263 110.72 L3.87368 111.058 L5.89474 111.345 L7.91579 111.581 L9.93684 111.764 L11.9579 111.895 L13.9789 111.974 L16 112"/>
<path fill="none" stroke="#cd3330" stroke-width="1.5" d="M208 16 L210.021 16.0262 L212.042 16.1049 L214.063 16.236 L216.084 16.4193 L218.105 16.6547 L220.126 16.9418 L222.147 17.2803"/>
<path fill="none" stroke="#737373" stroke-width="1" d="M16 112 L18.0211 111.989 L20.0421 111.957 L22.0632 111.904 L24.0842 111.829 L26.1053 111.733 L28.1263 111.616 L30.1474 111.476 L32.1684 111.314 L34.1895 111.131 L36.2105 110.924 L38.2316 110.695 L40.2526 110.443 L42.2737 110.167 L44.2947 109.868 L46.3158 109.544 L48.3368 109.195 L50.3579 108.821 L52.3789 108.42 L54.4 107.993 L56.4211 107.538 L58.4421 107.054 L60.4632 106.541 L62.4842 105.998 L64.5053 105.422 L66.5263 104.814 L68.5474 104.171 L70.5684 103.491 L72.5895 102.774 L74.6105 102.016 L76.6316 101.215 L78.6526 100.368 L80.6737 99.4729 L82.6947 98.5247 L84.7158 97.5192 L86.7368 96.4511 L88.7579 95.3141 L90.7789 94.1003 L92.8 92.8 L94.8211 91.4009 L96.8421 89.887 L98.8632 88.2368 L100.884 86.4202 L102.905 84.3929 L104.926 82.0839 L106.947 79.367 L108.968 75.9674 L110.989 70.9462 L113.011 57.0538 L115.032 52.0326 L117.053 48.633 L119.074 45.9161 L121.095 43.6071 L123.116 41.5797 L125.137 39.7632 L127.158 38.113 L129.179 36.5991 L131.2 35.2 L133.221 33.8997 L135.242 32.6859 L137.263 31.5489 L139.284 30.4808 L141.305 29.4753 L143.326 28.5271 L145.347 27.6316 L147.368 26.785 L149.389 25.9842 L151.411 25.2262 L153.432 24.5086 L155.453 23.8292 L157.474 23.1861 L159.495 22.5777 L161.516 22.0023 L163.537 21.4588 L165.558 20.9458 L167.579 20.4622 L169.6 20.0073 L171.621 19.5799 L173.642 19.1794 L175.663 18.8051 L177.684 18.4562 L179.705 18.1322 L181.726 17.8327 L183.747 17.557 L185.768 17.3048 L187.789 17.0758 L189.811 16.8695 L191.832 16.6857 L193.853 16.5241 L195.874 16.3845 L197.895 16.2667 L199.916 16.1705 L201.937 16.0958 L203.958 16.0426 L205.979 16.0106 L208 16"/>
<path fill="none" stroke="#dcdcdc" stroke-width="1.75" d="M16 112 L18.0211 111.974 L20.0421 111.895 L22.0632 111.764 L24.0842 111.581 L26.1053 111.345 L28.1263 111.058 L30.1474 110.72 L32.1684 110.33 L34.1895 109.89 L36.2105 109.399 L38.2316 108.859 L40.2526 108.27 L42.2737 107.632 L44.2947 106.947 L46.3158 106.215 L48.3368 105.436 L50.3579 104.613 L52.3789 103.744 L54.4 102.833 L56.4211 101.879 L58.4421 100.883 L60.4632 99.8474 L62.4842 98.7724 L64.5053 97.6594 L66.5263 96.5095 L68.5474 95.3241 L70.5684 94.1045 L72.5895 92.8519 L74.6105 91.5678 L76.6316 90.2535 L78.6526 88.9105 L80.6737 87.5403 L82.6947 86.1444 L84.7158 84.7242 L86.7368 83.2814 L88.7579 81.8175 L90.7789 80.3341 L92.8 78.8328 L94.8211 77.3153 L96.8421 75.7833 L98.8632 74.2384 L100.884 72.6823 L102.905 71.1167 L104.926 69.5433 L106.947 67.9638 L108.968 66.38 L110.989 64.7936 L113.011 63.2064 L115.032 61.62 L117.053 60.0362 L119.074 58.4567 L121.095 56.8833 L123.116 55.3177 L125.137 53.7616 L127.158 52.2167 L129.179 50.6847 L131.2 49.1672 L133.221 47.6659 L135.242 46.1825 L137.263 44.7186 L139.284 43.2758 L141.305 41.8556 L143.326 40.4597 L145.347 39.0895 L147.368 37.7465 L149.389 36.4322 L151.411 35.1481 L153.432 33.8955 L155.453 32.6759 L157.474 31.4905 L159.495 30.3406 L161.516 29.2276 L163.537 28.1526 L165.558 27.1167 L167.579 26.1213 L169.6 25.1672 L171.621 24.2556 L173.642 23.3874 L175.663 22.5637 L177.684 21.7852 L179.705 21.053 L181.726 20.3677 L183.747 19.7301 L185.768 19.1409 L187.789 18.6008 L189.811 18.1103 L191.832 17.67 L193.853 17.2803 L195.874 16.9418 L197.895 16.6547 L199.916 16.4193 L201.937 16.236 L203.958 16.1049 L205.979 16.0262 L208 16"/>
</svg>

After

Width:  |  Height:  |  Size: 3.8 KiB

6
doc/snippets/easings-sineout-thumb.svg

@ -0,0 +1,6 @@
<svg class="m-image m-nopadb" style="width: 128px; height: 128px; margin-top: -16px; margin-bottom: -16px;" viewBox="0 0 128 128">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M0 32 L128 32 M0 96 L128 96
M0 92 l0 8 M128 28 l0 8"/>
<path fill="none" stroke="#dcdcdc" stroke-width="1.5" d="M0 96 L2.03175 94.4044 L4.06349 92.8099 L6.09524 91.2173 L8.12698 89.6277 L10.1587 88.042 L12.1905 86.4613 L14.2222 84.8865 L16.254 83.3186 L18.2857 81.7587 L20.3175 80.2075 L22.3492 78.6662 L24.381 77.1357 L26.4127 75.6169 L28.4444 74.1107 L30.4762 72.6182 L32.5079 71.1402 L34.5397 69.6776 L36.5714 68.2314 L38.6032 66.8025 L40.6349 65.3917 L42.6667 64 L44.6984 62.6282 L46.7302 61.277 L48.7619 59.9475 L50.7937 58.6404 L52.8254 57.3565 L54.8571 56.0966 L56.8889 54.8616 L58.9206 53.6521 L60.9524 52.4689 L62.9841 51.3128 L65.0159 50.1845 L67.0476 49.0847 L69.0794 48.014 L71.1111 46.9732 L73.1429 45.9628 L75.1746 44.9835 L77.2064 44.036 L79.2381 43.1207 L81.2698 42.2383 L83.3016 41.3894 L85.3333 40.5744 L87.3651 39.7938 L89.3968 39.0482 L91.4286 38.338 L93.4603 37.6636 L95.4921 37.0255 L97.5238 36.4241 L99.5556 35.8597 L101.587 35.3327 L103.619 34.8433 L105.651 34.3921 L107.683 33.9791 L109.714 33.6046 L111.746 33.269 L113.778 32.9723 L115.81 32.7148 L117.841 32.4967 L119.873 32.318 L121.905 32.179 L123.937 32.0796 L125.968 32.0199 L128 32"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

9
doc/snippets/easings-sineout.svg

@ -0,0 +1,9 @@
<svg class="m-image" style="width: 224px; height: 128px;" viewBox="0 0 224 128">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M16 16 L208 16 M16 112 L208 112
M16 106 l0 12 M208 10 l0 12"/>
<path fill="none" stroke="#cd3330" stroke-width="1.5" d="M1.85263 123.087 L3.87368 121.508 L5.89474 119.928 L7.91579 118.345 L9.93684 116.76 L11.9579 115.174 L13.9789 113.587 L16 112"/>
<path fill="none" stroke="#cd3330" stroke-width="1.5" d="M208 16 L210.021 16.0131 L212.042 16.0525 L214.063 16.1181 L216.084 16.2099 L218.105 16.3279 L220.126 16.472 L222.147 16.6423"/>
<path fill="none" stroke="#737373" stroke-width="1" d="M16 112 L18.0211 98.1076 L20.0421 92.4052 L22.0632 88.0652 L24.0842 84.4365 L26.1053 81.266 L28.1263 78.4238 L30.1474 75.8322 L32.1684 73.4408 L34.1895 71.2143 L36.2105 69.127 L38.2316 67.1595 L40.2526 65.2966 L42.2737 63.5263 L44.2947 61.8388 L46.3158 60.2259 L48.3368 58.681 L50.3579 57.1982 L52.3789 55.7726 L54.4 54.4 L56.4211 53.0767 L58.4421 51.7994 L60.4632 50.5653 L62.4842 49.3718 L64.5053 48.2167 L66.5263 47.0978 L68.5474 46.0133 L70.5684 44.9616 L72.5895 43.9412 L74.6105 42.9507 L76.6316 41.9887 L78.6526 41.0541 L80.6737 40.146 L82.6947 39.2632 L84.7158 38.4048 L86.7368 37.5701 L88.7579 36.7582 L90.7789 35.9684 L92.8 35.2 L94.8211 34.4524 L96.8421 33.725 L98.8632 33.0172 L100.884 32.3285 L102.905 31.6584 L104.926 31.0065 L106.947 30.3722 L108.968 29.7553 L110.989 29.1553 L113.011 28.5719 L115.032 28.0047 L117.053 27.4533 L119.074 26.9175 L121.095 26.397 L123.116 25.8915 L125.137 25.4008 L127.158 24.9245 L129.179 24.4625 L131.2 24.0145 L133.221 23.5804 L135.242 23.1599 L137.263 22.7527 L139.284 22.3589 L141.305 21.978 L143.326 21.6101 L145.347 21.255 L147.368 20.9124 L149.389 20.5823 L151.411 20.2645 L153.432 19.9589 L155.453 19.6653 L157.474 19.3837 L159.495 19.114 L161.516 18.856 L163.537 18.6096 L165.558 18.3749 L167.579 18.1515 L169.6 17.9396 L171.621 17.739 L173.642 17.5496 L175.663 17.3713 L177.684 17.2042 L179.705 17.0482 L181.726 16.9031 L183.747 16.769 L185.768 16.6457 L187.789 16.5333 L189.811 16.4318 L191.832 16.341 L193.853 16.261 L195.874 16.1917 L197.895 16.133 L199.916 16.0851 L201.937 16.0479 L203.958 16.0213 L205.979 16.0053 L208 16"/>
<path fill="none" stroke="#dcdcdc" stroke-width="1.75" d="M16 112 L18.0211 110.413 L20.0421 108.826 L22.0632 107.24 L24.0842 105.655 L26.1053 104.072 L28.1263 102.492 L30.1474 100.913 L32.1684 99.3383 L34.1895 97.7667 L36.2105 96.1989 L38.2316 94.6355 L40.2526 93.0768 L42.2737 91.5232 L44.2947 89.9753 L46.3158 88.4334 L48.3368 86.8979 L50.3579 85.3693 L52.3789 83.848 L54.4 82.3344 L56.4211 80.8288 L58.4421 79.3318 L60.4632 77.8438 L62.4842 76.3651 L64.5053 74.8961 L66.5263 73.4372 L68.5474 71.9889 L70.5684 70.5516 L72.5895 69.1255 L74.6105 67.7112 L76.6316 66.3091 L78.6526 64.9193 L80.6737 63.5425 L82.6947 62.1789 L84.7158 60.8289 L86.7368 59.493 L88.7579 58.1714 L90.7789 56.8644 L92.8 55.5726 L94.8211 54.2962 L96.8421 53.0356 L98.8632 51.7911 L100.884 50.563 L102.905 49.3518 L104.926 48.1576 L106.947 46.981 L108.968 45.8221 L110.989 44.6813 L113.011 43.5589 L115.032 42.4552 L117.053 41.3705 L119.074 40.3051 L121.095 39.2594 L123.116 38.2335 L125.137 37.2278 L127.158 36.2425 L129.179 35.278 L131.2 34.3344 L133.221 33.412 L135.242 32.5111 L137.263 31.632 L139.284 30.7748 L141.305 29.9399 L143.326 29.1274 L145.347 28.3375 L147.368 27.5705 L149.389 26.8266 L151.411 26.106 L153.432 25.4088 L155.453 24.7354 L157.474 24.0858 L159.495 23.4602 L161.516 22.8588 L163.537 22.2818 L165.558 21.7293 L167.579 21.2015 L169.6 20.6986 L171.621 20.2206 L173.642 19.7676 L175.663 19.3399 L177.684 18.9376 L179.705 18.5607 L181.726 18.2093 L183.747 17.8835 L185.768 17.5835 L187.789 17.3093 L189.811 17.061 L191.832 16.8386 L193.853 16.6423 L195.874 16.472 L197.895 16.3279 L199.916 16.2099 L201.937 16.1181 L203.958 16.0525 L205.979 16.0131 L208 16"/>
</svg>

After

Width:  |  Height:  |  Size: 3.8 KiB

6
doc/snippets/easings-smootherstep-thumb.svg

@ -0,0 +1,6 @@
<svg class="m-image m-nopadb" style="width: 128px; height: 128px; margin-top: -16px; margin-bottom: -16px;" viewBox="0 0 128 128">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M0 32 L128 32 M0 96 L128 96
M0 92 l0 8 M128 28 l0 8"/>
<path fill="none" stroke="#dcdcdc" stroke-width="1.5" d="M0 96 L2.03175 95.9975 L4.06349 95.9805 L6.09524 95.9357 L8.12698 95.8514 L10.1587 95.7169 L12.1905 95.5231 L14.2222 95.2619 L16.254 94.9265 L18.2857 94.5111 L20.3175 94.0112 L22.3492 93.4232 L24.381 92.7445 L26.4127 91.9736 L28.4444 91.1097 L30.4762 90.1529 L32.5079 89.1043 L34.5397 87.9656 L36.5714 86.7391 L38.6032 85.4281 L40.6349 84.0362 L42.6667 82.5679 L44.6984 81.0279 L46.7302 79.4217 L48.7619 77.755 L50.7937 76.034 L52.8254 74.2652 L54.8571 72.4555 L56.8889 70.612 L58.9206 68.7419 L60.9524 66.8528 L62.9841 64.9522 L65.0159 63.0478 L67.0476 61.1472 L69.0794 59.258 L71.1111 57.388 L73.1429 55.5445 L75.1746 53.7348 L77.2064 51.966 L79.2381 50.245 L81.2698 48.5783 L83.3016 46.9721 L85.3333 45.4321 L87.3651 43.9638 L89.3968 42.5719 L91.4286 41.2609 L93.4603 40.0344 L95.4921 38.8957 L97.5238 37.8471 L99.5556 36.8903 L101.587 36.0264 L103.619 35.2554 L105.651 34.5768 L107.683 33.9888 L109.714 33.4889 L111.746 33.0735 L113.778 32.7381 L115.81 32.4769 L117.841 32.283 L119.873 32.1486 L121.905 32.0643 L123.937 32.0195 L125.968 32.0025 L128 32"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

9
doc/snippets/easings-smootherstep.svg

@ -0,0 +1,9 @@
<svg class="m-image" style="width: 224px; height: 128px;" viewBox="0 0 224 128">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M16 16 L208 16 M16 112 L208 112
M16 106 l0 12 M208 10 l0 12"/>
<path fill="none" stroke="#3ad267" stroke-width="1.5" d="M1.85263 112 L3.87368 112 L5.89474 112 L7.91579 112 L9.93684 112 L11.9579 112 L13.9789 112 L16 112"/>
<path fill="none" stroke="#3ad267" stroke-width="1.5" d="M208 16 L210.021 16 L212.042 16 L214.063 16 L216.084 16 L218.105 16 L220.126 16 L222.147 16"/>
<path fill="none" stroke="#737373" stroke-width="1" d="M16 112 L18.0211 111.968 L20.0421 111.874 L22.0632 111.719 L24.0842 111.504 L26.1053 111.23 L28.1263 110.9 L30.1474 110.513 L32.1684 110.072 L34.1895 109.578 L36.2105 109.033 L38.2316 108.437 L40.2526 107.792 L42.2737 107.099 L44.2947 106.36 L46.3158 105.576 L48.3368 104.748 L50.3579 103.878 L52.3789 102.967 L54.4 102.016 L56.4211 101.027 L58.4421 100.001 L60.4632 98.9394 L62.4842 97.8436 L64.5053 96.7148 L66.5263 95.5545 L68.5474 94.3639 L70.5684 93.1444 L72.5895 91.8974 L74.6105 90.6242 L76.6316 89.3261 L78.6526 88.0046 L80.6737 86.6608 L82.6947 85.2962 L84.7158 83.9122 L86.7368 82.51 L88.7579 81.091 L90.7789 79.6566 L92.8 78.208 L94.8211 76.7467 L96.8421 75.2739 L98.8632 73.7911 L100.884 72.2996 L102.905 70.8006 L104.926 69.2957 L106.947 67.786 L108.968 66.2729 L110.989 64.7579 L113.011 63.2421 L115.032 61.7271 L117.053 60.214 L119.074 58.7043 L121.095 57.1994 L123.116 55.7004 L125.137 54.2089 L127.158 52.7261 L129.179 51.2533 L131.2 49.792 L133.221 48.3434 L135.242 46.909 L137.263 45.49 L139.284 44.0878 L141.305 42.7038 L143.326 41.3392 L145.347 39.9954 L147.368 38.6739 L149.389 37.3758 L151.411 36.1026 L153.432 34.8556 L155.453 33.6361 L157.474 32.4456 L159.495 31.2852 L161.516 30.1564 L163.537 29.0606 L165.558 27.999 L167.579 26.973 L169.6 25.984 L171.621 25.0333 L173.642 24.1222 L175.663 23.252 L177.684 22.4243 L179.705 21.6401 L181.726 20.901 L183.747 20.2083 L185.768 19.5632 L187.789 18.9672 L189.811 18.4216 L191.832 17.9277 L193.853 17.4868 L195.874 17.1004 L197.895 16.7698 L199.916 16.4962 L201.937 16.2812 L203.958 16.1259 L205.979 16.0317 L208 16"/>
<path fill="none" stroke="#dcdcdc" stroke-width="1.75" d="M16 112 L18.0211 111.999 L20.0421 111.991 L22.0632 111.971 L24.0842 111.933 L26.1053 111.871 L28.1263 111.78 L30.1474 111.657 L32.1684 111.497 L34.1895 111.295 L36.2105 111.05 L38.2316 110.757 L40.2526 110.413 L42.2737 110.017 L44.2947 109.567 L46.3158 109.06 L48.3368 108.494 L50.3579 107.87 L52.3789 107.185 L54.4 106.44 L56.4211 105.633 L58.4421 104.765 L60.4632 103.835 L62.4842 102.845 L64.5053 101.794 L66.5263 100.684 L68.5474 99.5148 L70.5684 98.2885 L72.5895 97.0061 L74.6105 95.6692 L76.6316 94.2796 L78.6526 92.8393 L80.6737 91.3502 L82.6947 89.8146 L84.7158 88.2349 L86.7368 86.6135 L88.7579 84.953 L90.7789 83.2561 L92.8 81.5258 L94.8211 79.7648 L96.8421 77.9761 L98.8632 76.1629 L100.884 74.3283 L102.905 72.4754 L104.926 70.6076 L106.947 68.7281 L108.968 66.8402 L110.989 64.9473 L113.011 63.0527 L115.032 61.1598 L117.053 59.2719 L119.074 57.3924 L121.095 55.5246 L123.116 53.6717 L125.137 51.8371 L127.158 50.0239 L129.179 48.2352 L131.2 46.4742 L133.221 44.7438 L135.242 43.047 L137.263 41.3865 L139.284 39.7651 L141.305 38.1854 L143.326 36.6498 L145.347 35.1607 L147.368 33.7204 L149.389 32.3308 L151.411 30.994 L153.432 29.7116 L155.453 28.4852 L157.474 27.3162 L159.495 26.2058 L161.516 25.155 L163.537 24.1647 L165.558 23.2352 L167.579 22.3671 L169.6 21.5603 L171.621 20.8148 L173.642 20.1302 L175.663 19.5057 L177.684 18.9405 L179.705 18.4333 L181.726 17.9826 L183.747 17.5867 L185.768 17.2435 L187.789 16.9503 L189.811 16.7046 L191.832 16.5034 L193.853 16.3429 L195.874 16.2195 L197.895 16.1291 L199.916 16.0672 L201.937 16.0289 L203.958 16.0087 L205.979 16.0011 L208 16"/>
</svg>

After

Width:  |  Height:  |  Size: 3.7 KiB

6
doc/snippets/easings-smoothstep-thumb.svg

@ -0,0 +1,6 @@
<svg class="m-image m-nopadb" style="width: 128px; height: 128px; margin-top: -16px; margin-bottom: -16px;" viewBox="0 0 128 128">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M0 32 L128 32 M0 96 L128 96
M0 92 l0 8 M128 28 l0 8"/>
<path fill="none" stroke="#dcdcdc" stroke-width="1.5" d="M0 96 L2.03175 95.9521 L4.06349 95.8106 L6.09524 95.5784 L8.12698 95.2588 L10.1587 94.8546 L12.1905 94.3691 L14.2222 93.8052 L16.254 93.1661 L18.2857 92.4548 L20.3175 91.6744 L22.3492 90.828 L24.381 89.9186 L26.4127 88.9493 L28.4444 87.9232 L30.4762 86.8433 L32.5079 85.7128 L34.5397 84.5346 L36.5714 83.312 L38.6032 82.0478 L40.6349 80.7453 L42.6667 79.4074 L44.6984 78.0373 L46.7302 76.638 L48.7619 75.2126 L50.7937 73.7642 L52.8254 72.2958 L54.8571 70.8105 L56.8889 69.3114 L58.9206 67.8015 L60.9524 66.284 L62.9841 64.7618 L65.0159 63.2382 L67.0476 61.716 L69.0794 60.1985 L71.1111 58.6886 L73.1429 57.1895 L75.1746 55.7042 L77.2064 54.2358 L79.2381 52.7874 L81.2698 51.362 L83.3016 49.9627 L85.3333 48.5926 L87.3651 47.2547 L89.3968 45.9522 L91.4286 44.688 L93.4603 43.4654 L95.4921 42.2872 L97.5238 41.1567 L99.5556 40.0768 L101.587 39.0507 L103.619 38.0814 L105.651 37.172 L107.683 36.3256 L109.714 35.5452 L111.746 34.8339 L113.778 34.1948 L115.81 33.6309 L117.841 33.1454 L119.873 32.7412 L121.905 32.4215 L123.937 32.1894 L125.968 32.0479 L128 32"/>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

12
doc/snippets/easings-smoothstep.svg

@ -0,0 +1,12 @@
<svg class="m-image" style="width: 224px; height: 128px;" viewBox="0 0 224 128">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M16 16 L208 16 M16 112 L208 112
M16 106 l0 12 M208 10 l0 12"/>
<path fill="none" stroke="#3ad267" stroke-width="1.5" d="M1.85263 112 L3.87368 112 L5.89474 112 L7.91579 112 L9.93684 112 L11.9579 112 L13.9789 112 L16 112"/>
<path fill="none" stroke="#3ad267" stroke-width="1.5" d="M208 16 L210.021 16 L212.042 16 L214.063 16 L216.084 16 L218.105 16 L220.126 16 L222.147 16"/>
<path fill="none" stroke="#737373" stroke-width="1" d="M16 112 L18.0211 111.999 L20.0421 111.991 L22.0632 111.971 L24.0842 111.933 L26.1053 111.871 L28.1263 111.78 L30.1474 111.657 L32.1684 111.497 L34.1895 111.295 L36.2105 111.05 L38.2316 110.757 L40.2526 110.413 L42.2737 110.017 L44.2947 109.567 L46.3158 109.06 L48.3368 108.494 L50.3579 107.87 L52.3789 107.185 L54.4 106.44 L56.4211 105.633 L58.4421 104.765 L60.4632 103.835 L62.4842 102.845 L64.5053 101.794 L66.5263 100.684 L68.5474 99.5148 L70.5684 98.2885 L72.5895 97.0061 L74.6105 95.6692 L76.6316 94.2796 L78.6526 92.8393 L80.6737 91.3502 L82.6947 89.8146 L84.7158 88.2349 L86.7368 86.6135 L88.7579 84.953 L90.7789 83.2561 L92.8 81.5258 L94.8211 79.7648 L96.8421 77.9761 L98.8632 76.1629 L100.884 74.3283 L102.905 72.4754 L104.926 70.6076 L106.947 68.7281 L108.968 66.8402 L110.989 64.9473 L113.011 63.0527 L115.032 61.1598 L117.053 59.2719 L119.074 57.3924 L121.095 55.5246 L123.116 53.6717 L125.137 51.8371 L127.158 50.0239 L129.179 48.2352 L131.2 46.4742 L133.221 44.7438 L135.242 43.047 L137.263 41.3865 L139.284 39.7651 L141.305 38.1854 L143.326 36.6498 L145.347 35.1607 L147.368 33.7204 L149.389 32.3308 L151.411 30.994 L153.432 29.7116 L155.453 28.4852 L157.474 27.3162 L159.495 26.2058 L161.516 25.155 L163.537 24.1647 L165.558 23.2352 L167.579 22.3671 L169.6 21.5603 L171.621 20.8148 L173.642 20.1302 L175.663 19.5057 L177.684 18.9405 L179.705 18.4333 L181.726 17.9826 L183.747 17.5867 L185.768 17.2435 L187.789 16.9503 L189.811 16.7046 L191.832 16.5034 L193.853 16.3429 L195.874 16.2195 L197.895 16.1291 L199.916 16.0672 L201.937 16.0289 L203.958 16.0087 L205.979 16.0011 L208 16"/>
<path fill="none" stroke="#2f83cc" stroke-width="1.0" d="M78 112 L16 112 C80 112, 144 16, 208 16 L146 16"/>
<circle cx="80" cy="112" r="2" stroke="#2f83cc" stroke-width="1.0" fill="none" />
<circle cx="144" cy="16" r="2" stroke="#2f83cc" stroke-width="1.0" fill="none" />
<path fill="none" stroke="#dcdcdc" stroke-width="1.75" d="M16 112 L18.0211 111.968 L20.0421 111.874 L22.0632 111.719 L24.0842 111.504 L26.1053 111.23 L28.1263 110.9 L30.1474 110.513 L32.1684 110.072 L34.1895 109.578 L36.2105 109.033 L38.2316 108.437 L40.2526 107.792 L42.2737 107.099 L44.2947 106.36 L46.3158 105.576 L48.3368 104.748 L50.3579 103.878 L52.3789 102.967 L54.4 102.016 L56.4211 101.027 L58.4421 100.001 L60.4632 98.9394 L62.4842 97.8436 L64.5053 96.7148 L66.5263 95.5545 L68.5474 94.3639 L70.5684 93.1444 L72.5895 91.8974 L74.6105 90.6242 L76.6316 89.3261 L78.6526 88.0046 L80.6737 86.6608 L82.6947 85.2962 L84.7158 83.9122 L86.7368 82.51 L88.7579 81.091 L90.7789 79.6566 L92.8 78.208 L94.8211 76.7467 L96.8421 75.2739 L98.8632 73.7911 L100.884 72.2996 L102.905 70.8006 L104.926 69.2957 L106.947 67.786 L108.968 66.2729 L110.989 64.7579 L113.011 63.2421 L115.032 61.7271 L117.053 60.214 L119.074 58.7043 L121.095 57.1994 L123.116 55.7004 L125.137 54.2089 L127.158 52.7261 L129.179 51.2533 L131.2 49.792 L133.221 48.3434 L135.242 46.909 L137.263 45.49 L139.284 44.0878 L141.305 42.7038 L143.326 41.3392 L145.347 39.9954 L147.368 38.6739 L149.389 37.3758 L151.411 36.1026 L153.432 34.8556 L155.453 33.6361 L157.474 32.4456 L159.495 31.2852 L161.516 30.1564 L163.537 29.0606 L165.558 27.999 L167.579 26.973 L169.6 25.984 L171.621 25.0333 L173.642 24.1222 L175.663 23.252 L177.684 22.4243 L179.705 21.6401 L181.726 20.901 L183.747 20.2083 L185.768 19.5632 L187.789 18.9672 L189.811 18.4216 L191.832 17.9277 L193.853 17.4868 L195.874 17.1004 L197.895 16.7698 L199.916 16.4962 L201.937 16.2812 L203.958 16.1259 L205.979 16.0317 L208 16"/>
</svg>

After

Width:  |  Height:  |  Size: 4.0 KiB

6
doc/snippets/easings-step-thumb.svg

@ -0,0 +1,6 @@
<svg class="m-image m-nopadb" style="width: 128px; height: 128px; margin-top: -16px; margin-bottom: -16px;" viewBox="0 0 128 128">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M0 32 L128 32 M0 96 L128 96
M0 92 l0 8 M128 28 l0 8"/>
<path fill="none" stroke="#dcdcdc" stroke-width="1.5" d="M0 96 L2.03175 96 L4.06349 96 L6.09524 96 L8.12698 96 L10.1587 96 L12.1905 96 L14.2222 96 L16.254 96 L18.2857 96 L20.3175 96 L22.3492 96 L24.381 96 L26.4127 96 L28.4444 96 L30.4762 96 L32.5079 96 L34.5397 96 L36.5714 96 L38.6032 96 L40.6349 96 L42.6667 96 L44.6984 96 L46.7302 96 L48.7619 96 L50.7937 96 L52.8254 96 L54.8571 96 L56.8889 96 L58.9206 96 L60.9524 96 L62.9841 96 L65.0159 32 L67.0476 32 L69.0794 32 L71.1111 32 L73.1429 32 L75.1746 32 L77.2064 32 L79.2381 32 L81.2698 32 L83.3016 32 L85.3333 32 L87.3651 32 L89.3968 32 L91.4286 32 L93.4603 32 L95.4921 32 L97.5238 32 L99.5556 32 L101.587 32 L103.619 32 L105.651 32 L107.683 32 L109.714 32 L111.746 32 L113.778 32 L115.81 32 L117.841 32 L119.873 32 L121.905 32 L123.937 32 L125.968 32 L128 32"/>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

8
doc/snippets/easings-step.svg

@ -0,0 +1,8 @@
<svg class="m-image" style="width: 224px; height: 128px;" viewBox="0 0 224 128">
<path fill="none" stroke="#405363" stroke-width="1.0" d="
M16 16 L208 16 M16 112 L208 112
M16 106 l0 12 M208 10 l0 12"/>
<path fill="none" stroke="#3ad267" stroke-width="1.5" d="M1.85263 112 L3.87368 112 L5.89474 112 L7.91579 112 L9.93684 112 L11.9579 112 L13.9789 112 L16 112"/>
<path fill="none" stroke="#3ad267" stroke-width="1.5" d="M208 16 L210.021 16 L212.042 16 L214.063 16 L216.084 16 L218.105 16 L220.126 16 L222.147 16"/>
<path fill="none" stroke="#dcdcdc" stroke-width="1.75" d="M16 112 L18.0211 112 L20.0421 112 L22.0632 112 L24.0842 112 L26.1053 112 L28.1263 112 L30.1474 112 L32.1684 112 L34.1895 112 L36.2105 112 L38.2316 112 L40.2526 112 L42.2737 112 L44.2947 112 L46.3158 112 L48.3368 112 L50.3579 112 L52.3789 112 L54.4 112 L56.4211 112 L58.4421 112 L60.4632 112 L62.4842 112 L64.5053 112 L66.5263 112 L68.5474 112 L70.5684 112 L72.5895 112 L74.6105 112 L76.6316 112 L78.6526 112 L80.6737 112 L82.6947 112 L84.7158 112 L86.7368 112 L88.7579 112 L90.7789 112 L92.8 112 L94.8211 112 L96.8421 112 L98.8632 112 L100.884 112 L102.905 112 L104.926 112 L106.947 112 L108.968 112 L110.989 112 L113.011 16 L115.032 16 L117.053 16 L119.074 16 L121.095 16 L123.116 16 L125.137 16 L127.158 16 L129.179 16 L131.2 16 L133.221 16 L135.242 16 L137.263 16 L139.284 16 L141.305 16 L143.326 16 L145.347 16 L147.368 16 L149.389 16 L151.411 16 L153.432 16 L155.453 16 L157.474 16 L159.495 16 L161.516 16 L163.537 16 L165.558 16 L167.579 16 L169.6 16 L171.621 16 L173.642 16 L175.663 16 L177.684 16 L179.705 16 L181.726 16 L183.747 16 L185.768 16 L187.789 16 L189.811 16 L191.832 16 L193.853 16 L195.874 16 L197.895 16 L199.916 16 L201.937 16 L203.958 16 L205.979 16 L208 16"/>
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

1
src/Magnum/Animation/CMakeLists.txt

@ -25,6 +25,7 @@
set(MagnumAnimation_HEADERS set(MagnumAnimation_HEADERS
Animation.h Animation.h
Easing.h
Interpolation.h Interpolation.h
Player.h Player.h
Player.hpp Player.hpp

947
src/Magnum/Animation/Easing.h

@ -0,0 +1,947 @@
#ifndef Magnum_Animation_Easing_h
#define Magnum_Animation_Easing_h
/*
This file is part of Magnum.
Copyright © 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018
Vladimír Vondruš <mosra@centrum.cz>
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
*/
/** @file
* @brief Namespace @ref Magnum::Animation::Easing
*/
#include "Magnum/Magnum.h"
#include "Magnum/Math/Constants.h"
#include "Magnum/Animation/Animation.h"
namespace Magnum { namespace Animation {
/**
@brief Easing functions
A collection of predefined [easing / tweening](https://en.wikipedia.org/wiki/Inbetweening)
functions for adding life to animation interpolation.
@m_class{m-row m-container-inflate}
@parblock
@m_div{m-col-l-2 m-push-l-2 m-col-m-3 m-col-t-6 m-text-center m-nopadt m-nopadx}
@htmlinclude easings-linear-thumb.svg
@ref linear() @m_class{m-label m-primary} **B** @m_class{m-label m-success} **E**
@m_enddiv
@m_div{m-col-l-2 m-push-l-2 m-col-m-3 m-col-t-6 m-text-center m-nopadt m-nopadx}
@htmlinclude easings-step-thumb.svg
@ref step() @m_class{m-label m-success} **E**
@m_enddiv
@m_div{m-col-l-2 m-push-l-2 m-col-m-3 m-col-t-6 m-text-center m-nopadt m-nopadx}
@htmlinclude easings-smoothstep-thumb.svg
@ref smoothstep() @m_class{m-label m-primary} **B** @m_class{m-label m-success} **E**
@m_enddiv
@m_div{m-col-l-2 m-push-l-2 m-col-m-3 m-col-t-6 m-text-center m-nopadt m-nopadx}
@htmlinclude easings-smootherstep-thumb.svg
@ref smootherstep() @m_class{m-label m-success} **E**
@m_enddiv
@endparblock
@m_class{m-row m-container-inflate}
@parblock
@m_div{m-col-l-2 m-col-t-4 m-text-center m-nopadt m-nopadx}
@htmlinclude easings-quadraticin-thumb.svg
@ref quadraticIn() @m_class{m-label m-primary} **B** @m_class{m-label m-danger} **E**
@m_enddiv
@m_div{m-col-l-2 m-col-t-4 m-text-center m-nopadt m-nopadx}
@htmlinclude easings-quadraticout-thumb.svg
@ref quadraticOut() @m_class{m-label m-primary} **B** @m_class{m-label m-danger} **E**
@m_enddiv
@m_div{m-col-l-2 m-col-t-4 m-text-center m-nopadt m-nopadx}
@htmlinclude easings-quadraticinout-thumb.svg
@ref quadraticInOut() @m_class{m-label m-info} **B** @m_class{m-label m-danger} **E**
@m_enddiv
@m_div{m-col-l-2 m-col-t-4 m-text-center m-nopadt m-nopadx}
@htmlinclude easings-cubicin-thumb.svg
@ref cubicIn() @m_class{m-label m-primary} **B** @m_class{m-label m-danger} **E**
@m_enddiv
@m_div{m-col-l-2 m-col-t-4 m-text-center m-nopadt m-nopadx}
@htmlinclude easings-cubicout-thumb.svg
@ref cubicOut() @m_class{m-label m-primary} **B** @m_class{m-label m-danger} **E**
@m_enddiv
@m_div{m-col-l-2 m-col-t-4 m-text-center m-nopadt m-nopadx}
@htmlinclude easings-cubicinout-thumb.svg
@ref cubicInOut() @m_class{m-label m-info} **B** @m_class{m-label m-danger} **E**
@m_enddiv
@m_div{m-col-l-2 m-col-t-4 m-text-center m-nopadt m-nopadx}
@htmlinclude easings-quarticin-thumb.svg
@ref quarticIn() @m_class{m-label m-danger} **E**
@m_enddiv
@m_div{m-col-l-2 m-col-t-4 m-text-center m-nopadt m-nopadx}
@htmlinclude easings-quarticout-thumb.svg
@ref quarticOut() @m_class{m-label m-danger} **E**
@m_enddiv
@m_div{m-col-l-2 m-col-t-4 m-text-center m-nopadt m-nopadx}
@htmlinclude easings-quarticinout-thumb.svg
@ref quarticInOut() @m_class{m-label m-danger} **E**
@m_enddiv
@m_div{m-col-l-2 m-col-t-4 m-text-center m-nopadt m-nopadx}
@htmlinclude easings-quinticin-thumb.svg
@ref quinticIn() @m_class{m-label m-danger} **E**
@m_enddiv
@m_div{m-col-l-2 m-col-t-4 m-text-center m-nopadt m-nopadx}
@htmlinclude easings-quinticout-thumb.svg
@ref quinticOut() @m_class{m-label m-danger} **E**
@m_enddiv
@m_div{m-col-l-2 m-col-t-4 m-text-center m-nopadt m-nopadx}
@htmlinclude easings-quinticinout-thumb.svg
@ref quinticInOut() @m_class{m-label m-danger} **E**
@m_enddiv
@m_div{m-col-l-2 m-col-t-4 m-text-center m-nopadt m-nopadx}
@htmlinclude easings-sinein-thumb.svg
@ref sineIn() @m_class{m-label m-danger} **E**
@m_enddiv
@m_div{m-col-l-2 m-col-t-4 m-text-center m-nopadt m-nopadx}
@htmlinclude easings-sineout-thumb.svg
@ref sineOut() @m_class{m-label m-danger} **E**
@m_enddiv
@m_div{m-col-l-2 m-col-t-4 m-text-center m-nopadt m-nopadx}
@htmlinclude easings-sineinout-thumb.svg
@ref sineInOut() @m_class{m-label m-danger} **E**
@m_enddiv
@m_div{m-col-l-2 m-col-t-4 m-text-center m-nopadt m-nopadx}
@htmlinclude easings-circularin-thumb.svg
@ref circularIn()
@m_enddiv
@m_div{m-col-l-2 m-col-t-4 m-text-center m-nopadt m-nopadx}
@htmlinclude easings-circularout-thumb.svg
@ref circularOut()
@m_enddiv
@m_div{m-col-l-2 m-col-t-4 m-text-center m-nopadt m-nopadx}
@htmlinclude easings-circularinout-thumb.svg
@ref circularInOut() @m_class{m-label m-danger} **E**
@m_enddiv
@m_div{m-col-l-2 m-col-t-4 m-text-center m-nopadt m-nopadx}
@htmlinclude easings-exponentialin-thumb.svg
@ref exponentialIn() @m_class{m-label m-success} **E**
@m_enddiv
@m_div{m-col-l-2 m-col-t-4 m-text-center m-nopadt m-nopadx}
@htmlinclude easings-exponentialout-thumb.svg
@ref exponentialOut() @m_class{m-label m-success} **E**
@m_enddiv
@m_div{m-col-l-2 m-col-t-4 m-text-center m-nopadt m-nopadx}
@htmlinclude easings-exponentialinout-thumb.svg
@ref exponentialInOut() @m_class{m-label m-success} **E**
@m_enddiv
@m_div{m-col-l-2 m-col-t-4 m-text-center m-nopadt m-nopadx}
@htmlinclude easings-elasticin-thumb.svg
@ref elasticIn() @m_class{m-label m-danger} **E**
@m_enddiv
@m_div{m-col-l-2 m-col-t-4 m-text-center m-nopadt m-nopadx}
@htmlinclude easings-elasticout-thumb.svg
@ref elasticOut() @m_class{m-label m-danger} **E**
@m_enddiv
@m_div{m-col-l-2 m-col-t-4 m-text-center m-nopadt m-nopadx}
@htmlinclude easings-elasticinout-thumb.svg
@ref elasticInOut() @m_class{m-label m-success} **E**
@m_enddiv
@m_div{m-col-l-2 m-col-t-4 m-text-center m-nopadt m-nopadx}
@htmlinclude easings-backin-thumb.svg
@ref backIn() @m_class{m-label m-danger} **E**
@m_enddiv
@m_div{m-col-l-2 m-col-t-4 m-text-center m-nopadt m-nopadx}
@htmlinclude easings-backout-thumb.svg
@ref backOut() @m_class{m-label m-danger} **E**
@m_enddiv
@m_div{m-col-l-2 m-col-t-4 m-text-center m-nopadt m-nopadx}
@htmlinclude easings-backinout-thumb.svg
@ref backInOut() @m_class{m-label m-danger} **E**
@m_enddiv
@m_div{m-col-l-2 m-col-t-4 m-text-center m-nopadt m-nopadx}
@htmlinclude easings-bouncein-thumb.svg
@ref bounceIn() @m_class{m-label m-danger} **E**
@m_enddiv
@m_div{m-col-l-2 m-col-t-4 m-text-center m-nopadt m-nopadx}
@htmlinclude easings-bounceout-thumb.svg
@ref bounceOut() @m_class{m-label m-danger} **E**
@m_enddiv
@m_div{m-col-l-2 m-col-t-4 m-text-center m-nopadt m-nopadx}
@htmlinclude easings-bounceinout-thumb.svg
@ref bounceInOut() @m_class{m-label m-danger} **E**
@m_enddiv
@endparblock
The easing function is meant to be used to modify the interpolation factor, such as:
@snippet MagnumAnimation.cpp Easing-factor
The @ref Animation library also provides the @ref ease() utility that combines
the interpolator together with the easing function:
@snippet MagnumAnimation.cpp Easing-ease
@section Animation-Easing-equations Equations
Every function documentation shows a plot of its behavior, together with a
direction in which it extrapolates. Green color means the extrapolation goes in
a reasonable monotonic direction outside of the range (also denoted by
@m_class{m-label m-success} **E** in the above list), red color means the
extrapolation is defined, but behaves in a probably unwanted or non-monotonic
way (denoted by @m_class{m-label m-danger} **E** in the above list). If neither
is present, it means the function is not defined outside of the @f$ [ 0; 1 ] @f$
range and produces a NaN. You may want to ensure the factor stays in bounds,
using either @ref Math::clamp() or the @ref easeClamped() function --- the
following two expressions are equivalent:
@snippet MagnumAnimation.cpp Easing-clamp
Out-function @f$ f_\text{out} @f$ for a corresponding in-function @f$ f_\text{in} @f$
is defined as the following, the equations in the docs usually just show the
final derived form. Similarly goes for combined in-/out-function
@f$ f_\text{inout} @f$: @f[
\begin{array}{rcl}
f_\text{out}(x) & = & 1 - f_\text{in}(1 - x) \\[5pt]
f_\text{inout}(x) & = & \left. \begin{cases}
\frac{1}{2} f_\text{in}(2x), & x < 0.5 \\
\frac{1}{2} (1 + f_\text{out}(2x - 1)), & x \ge 0.5
\end{cases} \right\} = \begin{cases}
\frac{1}{2} f_\text{in}(2x), & x < 0.5 \\
1 - \frac{1}{2} f_\text{in}(2 - 2x), & x \ge 0.5
\end{cases}
\end{array}
@f]
Easing functions defined by simple polynomials can have an *exact* (denoted
by @m_class{m-label m-primary} **B** in the above list) or approximate (denoted
by @m_class{m-label m-info} **B** in the above list) cubic @ref Math::Bezier
curve representation (and thus, in turn, convertible to Cubic Hermite splines
using @ref Math::CubicHermite::fromBezier()). If that's the case, given
function documentation also lists the corresponding Bézier representation and
plots it with a thin blue line. The curve is always normalized to go from
@f$ (0, 0)^T @f$ to @f$ (1, 1)^T @f$, apply arbitrary transformation to each
point as needed:
@snippet MagnumAnimation.cpp Easing-bezier-transform
@section Animation-Easing-references References
Functions follow the common naming from Robert Penner's Easing functions,
http://robertpenner.com/easing/. Implementation based on and inspired by
https://easings.net/,
[https://github.com/warrenm/AHEasing](https://github.com/warrenm/AHEasing/blob/master/AHEasing/easing.c),
[https://github.com/bkaradzic/bx](https://github.com/bkaradzic/bx/blob/master/include/bx/inline/easing.inl),
https://blog.demofox.org/2014/08/28/one-dimensional-bezier-curves/.
*/
namespace Easing {
/**
@brief Linear
@htmlinclude easings-linear.svg
@f[
y = x
@f]
One possible *exact* Bézier representation:
@snippet easings.cpp linear
*/
inline Float linear(Float t) { return t; }
/**
@brief Step
Similar to @ref Math::select(), but does the step in the middle of the range
instead of at the end. Implementation matching the GLSL @glsl step() @ce
function with @cpp edge = 0.5f @ce.
@htmlinclude easings-step.svg
@f[
y = \begin{cases}
0, & x < 0.5 \\
1, & x \ge 0.5
\end{cases}
@f]
@m_keyword{step(),GLSL step(),}
@see @ref smoothstep(), @ref smootherstep()
*/
inline Float step(Float t) { return t < 0.5f ? 0.0f : 1.0f; }
/**
@brief [Smoothstep](https://en.wikipedia.org/wiki/Smoothstep).
Implementation matching the GLSL @glsl smoothstep() @ce function. Combine with
@ref Math::lerp() to get the equivalent result:
@snippet MagnumAnimation.cpp Easing-smoothstep
@htmlinclude easings-smoothstep.svg
@f[
y = \begin{cases}
0, & x < 0 \\
3x^2 - 2x^3, & x \in [0, 1] \\
1, & x > 1
\end{cases}
@f]
* *Exact* Bézier representation:
@snippet easings.cpp smoothstep
@m_keyword{smoothstep(),GLSL smoothstep(),}
@see @ref smootherstep(), @ref Math::clamp()
*/
inline Float smoothstep(Float t) {
/* Deliberately *not* using Math::clamp() because that would drag in
unneeded vector headers */
if(t <= 0.0f) return 0.0f;
if(t >= 1.0f) return 1.0f;
return (3.0f - 2.0f*t)*t*t;
}
/**
@brief [Smootherstep](https://en.wikipedia.org/wiki/Smoothstep#Variations).
Improved version of @ref smoothstep() by [Ken Perlin](https://en.wikipedia.org/wiki/Ken_Perlin).
@htmlinclude easings-smootherstep.svg
@f[
y = \begin{cases}
0, & x < 0 \\
6x^5 - 15x^4 + 10x^3, & x \in [0, 1] \\
1, & x > 1
\end{cases}
@f]
@see @ref Math::clamp()
*/
inline Float smootherstep(Float t) {
/* Deliberately *not* using Math::clamp() because that would drag in
unneeded vector headers */
if(t <= 0.0f) return 0.0f;
if(t >= 1.0f) return 1.0f;
return t*t*t*(t*(t* 6.0f - 15.0f) + 10.0f);
}
/**
@brief Quadratic in
@htmlinclude easings-quadraticin.svg
@f[
y = x^2
@f]
* *Exact* Bézier representation:
@snippet easings.cpp quadraticIn
@see @ref cubicIn(), @ref quarticIn(), @ref quinticIn()
*/
inline Float quadraticIn(Float t) { return t*t; }
/**
@brief Quadratic out
@htmlinclude easings-quadraticout.svg
@f[
y = 1 - (1 - x)^2 = (2 - x) x
@f]
* *Exact* Bézier representation:
@snippet easings.cpp quadraticOut
@see @ref cubicOut(), @ref quarticOut(), @ref quinticOut()
*/
inline Float quadraticOut(Float t) { return -t*(t - 2.0f); }
/**
@brief Quadratic in and out
Combination of @ref quadraticIn() and @ref quadraticOut().
@htmlinclude easings-quadraticinout.svg
@f[
y = \begin{cases}
2 x^2, & x < 0.5 \\
1 - 2 (1 - x)^2, & x \ge 0.5
\end{cases}
@f]
Approximate Bézier representation:
@snippet easings.cpp quadraticInOut
@see @ref cubicInOut(), @ref quarticInOut(), @ref quinticInOut()
*/
inline Float quadraticInOut(Float t) {
if(t < 0.5f) return 2.0f*t*t;
const Float inv = 1.0f - t;
return 1.0f - 2.0f*inv*inv;
}
/**
@brief Cubic in
@htmlinclude easings-cubicin.svg
@f[
y = x^3
@f]
* *Exact* Bézier representation:
@snippet easings.cpp cubicIn
@see @ref quadraticIn(), @ref quarticIn(), @ref quinticIn()
*/
inline Float cubicIn(Float t) { return t*t*t; }
/**
@brief Cubic out
@htmlinclude easings-cubicout.svg
@f[
y = 1 - (1 - x)^3
@f]
* *Exact* Bézier representation:
@snippet easings.cpp cubicOut
@see @ref quadraticOut(), @ref quarticOut(), @ref quinticOut()
*/
inline Float cubicOut(Float t) {
const Float inv = t - 1.0f;
return inv*inv*inv + 1.0f;
}
/**
@brief Cubic in and out
Combination of @ref cubicIn() and @ref cubicOut().
@htmlinclude easings-cubicinout.svg
@f[
y = \begin{cases}
4 x^3, & x < 0.5 \\
1 - 4 (1 - x)^3, & x \ge 0.5
\end{cases}
@f]
Approximate Bézier representation:
@snippet easings.cpp cubicInOut
@see @ref quadraticInOut(), @ref quarticInOut(), @ref quinticInOut()
*/
inline Float cubicInOut(Float t) {
if(t < 0.5f) return 4.0f*t*t*t;
const Float inv = 1.0f - t;
return 1.0f - 4.0f*inv*inv*inv;
}
/**
@brief Quartic in
@htmlinclude easings-quarticin.svg
@f[
y = x^4
@f]
@see @ref quadraticIn(), @ref cubicIn(), @ref quinticIn()
*/
inline Float quarticIn(Float t) {
/* Not just t*t*t*t, since compile can't optimize it on its own to just two
multiplication without breaking precision. So doing that explicitly. */
const Float tt = t*t;
return tt*tt;
}
/**
@brief Quartic out
@htmlinclude easings-quarticout.svg
@f[
y = 1 - (1 - x)^4
@f]
@see @ref quadraticOut(), @ref cubicOut(), @ref quinticOut()
*/
inline Float quarticOut(Float t) {
/* Instead of t*t*t*t suggesting the optimization as described above */
const Float inv = 1.0f - t;
const Float quad = inv*inv;
return 1.0f - quad*quad;
}
/**
@brief Quartic in and out
Combination of @ref quarticIn() and @ref quarticOut().
@htmlinclude easings-quarticinout.svg
@f[
y = \begin{cases}
8 x^4, & x < 0.5 \\
1 - 8 (1 - x)^4, & x \ge 0.5
\end{cases}
@f]
@see @ref quadraticInOut(), @ref cubicInOut(), @ref quinticInOut()
*/
inline Float quarticInOut(Float t) {
/* Instead of t*t*t*t suggesting the optimization as described above */
if(t < 0.5f) {
const Float tt = t*t;
return 8*tt*tt;
}
const Float inv = 1.0f - t;
const Float quad = inv*inv;
return 1.0f - 8.0f*quad*quad;
}
/**
@brief Quintic in
@htmlinclude easings-quinticin.svg
@f[
y = x^5
@f]
@see @ref quadraticIn(), @ref cubicIn(), @ref quarticIn()
*/
inline Float quinticIn(Float t) {
/* Instead of t*t*t*t*t suggesting the optimization as described above */
const Float tt = t*t;
return tt*t*tt;
}
/**
@brief Quintic out
@htmlinclude easings-quinticout.svg
@f[
y = 1 - (1 - x)^5
@f]
@see @ref quadraticOut(), @ref cubicOut(), @ref quarticOut()
*/
inline Float quinticOut(Float t) {
/* Instead of t*t*t*t*t suggesting the optimization as described above */
const Float inv = t - 1.0f;
const Float quad = inv*inv;
return 1.0f + quad*inv*quad;
}
/**
@brief Quintic in and out
Combination of @ref quinticIn() and @ref quinticOut().
@htmlinclude easings-quinticinout.svg
@f[
y = \begin{cases}
16 x^5, & x < 0.5 \\
1 - 16 (1 - x)^5, & x \ge 0.5
\end{cases}
@f]
@see @ref quadraticInOut(), @ref cubicInOut(), @ref quarticInOut()
*/
inline Float quinticInOut(Float t) {
/* Instead of t*t*t*t*t suggesting the optimization as described above */
if(t < 0.5f) {
const Float tt = t*t;
return 16.0f*tt*t*tt;
}
const Float inv = 1.0f - t;
const Float quad = inv*inv;
return 1.0f - 16.0f*quad*inv*quad;
}
/**
@brief Sine in
@htmlinclude easings-sinein.svg
@f[
y = 1 + \sin(\frac{\pi}{2} (x - 1))
@f]
@see @ref circularIn()
*/
inline Float sineIn(Float t) {
return 1.0f + std::sin(Constants::piHalf()*(t - 1.0f));
}
/**
@brief Sine out
@htmlinclude easings-sineout.svg
@f[
y = \sin(\frac{\pi}{2} x)
@f]
@see @ref circularOut()
*/
inline Float sineOut(Float t) {
return std::sin(Constants::piHalf()*t);
}
/**
@brief Sine in and out
Combination of @ref sineIn() and @ref sineOut().
@htmlinclude easings-sineinout.svg
@f[
y = \frac{1}{2} (1 - \cos(\pi x))
@f]
@see @ref circularInOut()
*/
inline Float sineInOut(Float t) {
return 0.5f*(1.0f - std::cos(t*Constants::pi()));
}
/**
@brief Circular in
@htmlinclude easings-circularin.svg
@f[
y = 1 - \sqrt{1 - x^2}
@f]
@see @ref sineIn()
*/
inline Float circularIn(Float t) {
return 1.0f - std::sqrt(1.0f - t*t);
}
/**
@brief Circular out
@htmlinclude easings-circularout.svg
@f[
y = \sqrt{(2 - x) x}
@f]
@see @ref sineOut()
*/
inline Float circularOut(Float t) {
return std::sqrt((2.0f - t)*t);
}
/**
@brief Circular in and out
Combination of @ref circularIn() and @ref circularOut().
@htmlinclude easings-circularinout.svg
@f[
y = \begin{cases}
\frac{1}{2} (1 - \sqrt{1 - (2x)^2}), & x < 0.5 \\
\frac{1}{2} (1 + \sqrt{1 - (2x - 2)^2}), & x \ge 0.5
\end{cases}
@f]
@see @ref sineInOut()
*/
inline Float circularInOut(Float t) {
if(t < 0.5f) return 0.5f*(1.0f - std::sqrt(1.0f - 4*t*t));
return 0.5f*(1.0f + std::sqrt(-4.0f*t*t + 8.0f*t - 3.0f));
}
/**
@brief Exponential in
Contrary to Robert Penner's book but consistently with other implementations
has a special case for @f$ x \le 0 @f$, because @f$ 2^{-10} = 0.0009765625 @f$
otherwise.
@htmlinclude easings-exponentialin.svg
@f[
y = \begin{cases}
0, & x \le 0 \\
2^{10(x - 1)}, & x \ne 0
\end{cases}
@f]
@todo could be done better like with the sRGB curve, but should I bother?
*/
inline Float exponentialIn(Float t) {
return t <= 0.0f ? 0.0f : std::pow(2.0f, 10.0f * (t - 1.0f));
}
/**
@brief Exponential out
Contrary to Robert Penner's book but consistently with other implementations
has a special case for @f$ x \ge 1 @f$, because @f$ 2^{-10} = 0.0009765625 @f$
otherwise.
@htmlinclude easings-exponentialout.svg
@f[
y = \begin{cases}
2^{-10 x}, & x < 1 \\
1, & x \ge 1
\end{cases}
@f]
@todo could be done better like with the sRGB curve, but should I bother?
*/
inline Float exponentialOut(Float t) {
return t >= 1.0f ? 1.0f : 1.0f - std::pow(2.0f, -10.0f*t);
}
/**
@brief Exponential in and out
Combination of @ref exponentialIn() and @ref exponentialOut(). Contrary to
Robert Penner's book but consistently with other implementations has a special
case for @f$ x \notin \{0, 1\} @f$, because @f$ 2^{-10} = 0.0009765625 @f$
otherwise.
@htmlinclude easings-exponentialinout.svg
@f[
y = \begin{cases}
0, & x \le 0 \\
\frac{1}{2} 2^{20 x - 10}, & x \in (0, 0.5) \\
1 - \frac{1}{2} 2^{10 - 20 x}, & x \in [0.5, 1) \\
1, & x \ge 1
\end{cases}
@f]
*/
inline Float exponentialInOut(Float t) {
if(t <= 0.0f) return 0.0f;
if(t < 0.5f) return 0.5f*std::pow(2.0f, 20.0f*t - 10.0f);
if(t < 1.0f) return 1.0f - 0.5f*std::pow(2.0f, 10.0f - 20.0f*t);
return 1.0f;
}
/**
@brief Elastic in
Combines @ref sineIn() and @ref exponentialIn().
@htmlinclude easings-elasticin.svg
@f[
y = 2^{10 (p - 1)} \sin(13 \frac{\pi}{2} x)
@f]
*/
inline Float elasticIn(Float t) {
return std::pow(2.0f, 10.0f*(t - 1.0f))*std::sin(13.0f*Constants::piHalf()*t);
}
/**
@brief Elastic out
Combines @ref sineOut() and @ref exponentialOut().
@htmlinclude easings-elasticout.svg
@f[
y = 1 - 2^{-10 x} \sin(13 \frac{\pi}{2} (x + 1))
@f]
*/
inline Float elasticOut(Float t) {
return 1.0f - std::pow(2.0f, -10.0f*t)*std::sin(13.0f*Constants::piHalf()*(t + 1.0f));
}
/**
@brief Elastic in and out
Combination of @ref elasticIn() and @ref elasticOut() (or @ref sineInOut() and
@ref exponentialInOut()).
@htmlinclude easings-elasticinout.svg
@f[
y = \begin{cases}
\frac{1}{2} 2^{10 (2x - 1)} \sin(13 \pi x), & x < 0.5 \\
1 - \frac{1}{2} 2^{10 (1 - 2x)} \sin(13 \pi x), & x \ge 0.5
\end{cases}
@f]
*/
inline Float elasticInOut(Float t) {
if(t < 0.5f)
return 0.5f*std::pow(2.0f, 10.0f*(2.0f*t - 1.0f))*std::sin(13.0f*Constants::pi()*t);
return 1.0f - 0.5f*std::pow(2.0f, 10.0f*(1.0f - 2.0f*t))*std::sin(13.0f*Constants::pi()*t);
}
/**
@brief Back in
@htmlinclude easings-backin.svg
@f[
y = x^3 - x \sin(\pi x)
@f]
*/
inline Float backIn(Float t) {
return t*(t*t - std::sin(Constants::pi()*t));
}
/**
@brief Back out
@htmlinclude easings-backout.svg
@f[
y = 1 - ((1 - x)^3 - (1 - x) \sin(\pi (1 - x)))
@f]
*/
inline Float backOut(Float t) {
const Float inv = 1.0f - t;
return 1 - inv*(inv*inv - std::sin(Constants::pi()*inv));
}
/**
@brief Back in and out
Combination of @ref backIn() and @ref backOut().
@htmlinclude easings-backinout.svg
@f[
y = \begin{cases}
\frac{1}{2} ((2x)^3 - 2x \sin(2 \pi x)), & x < 0.5 \\
1 - \frac{1}{2} ((2 - 2x)^3 - (2 - 2x) \sin(\pi (2 - 2x)), & x \ge 0.5
\end{cases}
@f]
*/
inline Float backInOut(Float t) {
if(t < 0.5f) {
const Float t2 = 2.0f*t;
return 0.5f*t2*(t2*t2 - std::sin(Constants::pi()*t2));
}
const Float inv = 2.0f - 2.0f*t;
return 1.0f - 0.5f*inv*(inv*inv - std::sin(Constants::pi()*inv));
}
#ifndef DOXYGEN_GENERATING_OUTPUT
Float bounceOut(Float);
#endif
/**
@brief Bounce in
@htmlinclude easings-bouncein.svg
*/
inline Float bounceIn(Float t) {
return 1.0f - bounceOut(1.0f - t);
}
/**
@brief Bounce out
@htmlinclude easings-bounceout.svg
*/
inline Float bounceOut(Float t) {
if(t < 4.0f/11.0f) return (121.0f*t*t)/16.0f;
if(t < 8.0f/11.0f) return 363.0f/40.0f*t*t - 99.0f/10.0f*t + 17.0f/5.0f;
if(t < 9.0f/10.0f) return 4356.0f/361.0f*t*t - 35442.0f/1805.0f*t + 16061.0f/1805.0f;
return 54.0f/5.0f*t*t - 513.0f/25.0f*t + 268.0f/25.0f;
}
/**
@brief Bounce in and out
Combination of @ref bounceIn() and @ref bounceOut().
@htmlinclude easings-bounceinout.svg
*/
inline Float bounceInOut(Float t) {
if(t < 0.5f) return 0.5f*bounceIn(2.0f*t);
return 0.5f*bounceOut(2.0f*t - 1.0f) + 0.5f;
}
}}}
#endif

68
src/Magnum/Animation/Interpolation.h

@ -26,7 +26,7 @@
*/ */
/** @file /** @file
* @brief Alias @ref Magnum::Animation::ResultOf, enum @ref Magnum::Animation::Extrapolation, function @ref Magnum::Animation::interpolate(), @ref Magnum::Animation::interpolateStrict() * @brief Alias @ref Magnum::Animation::ResultOf, enum @ref Magnum::Animation::Interpolation. @ref Magnum::Animation::Extrapolation, function @ref Magnum::Animation::interpolatorFor(), @ref Magnum::Animation::interpolate(), @ref Magnum::Animation::interpolateStrict(), @ref Magnum::Animation::ease(), @ref Magnum::Animation::easeClamped() @ref Magnum::Animation::unpack(), @ref Magnum::Animation::unpackEase(), @ref Magnum::Animation::unpackEaseClamped()
*/ */
#include <Corrade/Containers/StridedArrayView.h> #include <Corrade/Containers/StridedArrayView.h>
@ -223,6 +223,72 @@ Used internally from @ref Track::atStrict() / @ref TrackView::atStrict(), see
*/ */
template<class K, class V, class R = ResultOf<V>> R interpolateStrict(const Containers::StridedArrayView<const K>& keys, const Containers::StridedArrayView<const V>& values, R(*interpolator)(const V&, const V&, Float), K frame, std::size_t& hint); template<class K, class V, class R = ResultOf<V>> R interpolateStrict(const Containers::StridedArrayView<const K>& keys, const Containers::StridedArrayView<const V>& values, R(*interpolator)(const V&, const V&, Float), K frame, std::size_t& hint);
/**
@brief Combine easing function and an interpolator
Useful to create a new function out of one of the interpolators from
@ref transformations-interpolation and an easing function from @ref Easing. For
example, the following two expressions give the same result:
@snippet MagnumAnimation.cpp ease
@see @ref unpack(), @ref unpackEase()
*/
template<class V, ResultOf<V>(*interpolator)(const V&, const V&, Float), Float(*easer)(Float)> constexpr auto ease() -> ResultOf<V>(*)(const V&, const V&, Float) {
return [](const V& a, const V& b, Float t) { return interpolator(a, b, easer(t)); };
}
/**
@brief Combine easing function and an interpolator
In addition to @ref ease() clamps value coming to @p easer to range
@f$ [0 ; 1] @f$. Useful when extrapolating using @ref Easing functions that
have bad behavior outside of this range.
*/
template<class V, ResultOf<V>(*interpolator)(const V&, const V&, Float), Float(*easer)(Float)> constexpr auto easeClamped() -> ResultOf<V>(*)(const V&, const V&, Float) {
return [](const V& a, const V& b, Float t) { return interpolator(a, b, easer(Math::clamp(t, 0.0f, 1.0f))); };
}
/**
@brief Combine unpacking function and an interpolator
Similar to @ref ease(), but for adding an unpacker function to interpolator
inputs instead of modifying the interpolator phase. The following two
expressions give the same result:
@snippet MagnumAnimation.cpp unpack
@see @ref unpackEase()
*/
template<class T, class V, ResultOf<V>(*interpolator)(const V&, const V&, Float), V(*unpacker)(const T&)> constexpr auto unpack() -> ResultOf<V>(*)(const V&, const V&, Float) {
return [](const V& a, const V& b, Float t) { return interpolator(unpacker(a), unpacker(b), t); };
}
/**
@brief Combine unpacking and easing functions with an interpolator
Combination of @ref ease() and @ref unpack(), creating a function that first
unpack the interpolator inputs, then modifies the interpolator phase and
finally passes that to the interpolator function. The following two expressions
give the same result:
@snippet MagnumAnimation.cpp unpackEase
*/
template<class T, class V, ResultOf<V>(*interpolator)(const V&, const V&, Float), V(*unpacker)(const T&), Float(*easer)(Float)> constexpr auto unpackEase() -> ResultOf<V>(*)(const V&, const V&, Float) {
return [](const V& a, const V& b, Float t) { return interpolator(unpacker(a), unpacker(b), easer(t)); };
}
/**
@brief Combine easing function and an interpolator
In addition to @ref unpackEase() clamps value coming to @p easer to range
@f$ [0 ; 1] @f$. Useful when extrapolating with @ref Easing functions that have
bad behavior outside of this range.
*/
template<class T, class V, ResultOf<V>(*interpolator)(const V&, const V&, Float), V(*unpacker)(const T&), Float(*easer)(Float)> constexpr auto unpackEaseClamped() -> ResultOf<V>(*)(const V&, const V&, Float) {
return [](const V& a, const V& b, Float t) { return interpolator(unpacker(a), unpacker(b), easer(Math::clamp(t, 0.0f, 1.0f))); };
}
namespace Implementation { namespace Implementation {
/* Generic types where result type is the same as value type */ /* Generic types where result type is the same as value type */

1
src/Magnum/Animation/Test/CMakeLists.txt

@ -24,6 +24,7 @@
# #
corrade_add_test(AnimationBenchmark Benchmark.cpp LIBRARIES Magnum) corrade_add_test(AnimationBenchmark Benchmark.cpp LIBRARIES Magnum)
corrade_add_test(AnimationEasingTest EasingTest.cpp LIBRARIES Magnum)
corrade_add_test(AnimationInterpolationTest InterpolationTest.cpp LIBRARIES MagnumTestLib) corrade_add_test(AnimationInterpolationTest InterpolationTest.cpp LIBRARIES MagnumTestLib)
corrade_add_test(AnimationPlayerTest PlayerTest.cpp LIBRARIES MagnumTestLib) corrade_add_test(AnimationPlayerTest PlayerTest.cpp LIBRARIES MagnumTestLib)
corrade_add_test(AnimationPlayerCustomTest PlayerCustomTest.cpp LIBRARIES MagnumTestLib) corrade_add_test(AnimationPlayerCustomTest PlayerCustomTest.cpp LIBRARIES MagnumTestLib)

289
src/Magnum/Animation/Test/EasingTest.cpp

@ -0,0 +1,289 @@
/*
This file is part of Magnum.
Copyright © 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018
Vladimír Vondruš <mosra@centrum.cz>
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
*/
#include <cstring>
#include <Corrade/Containers/ArrayView.h>
#include <Corrade/TestSuite/Tester.h>
#include <Corrade/TestSuite/Compare/Numeric.h>
#include <Corrade/Utility/Format.h>
#include "Magnum/Animation/Easing.h"
namespace Magnum { namespace Animation { namespace Test {
struct EasingTest: TestSuite::Tester {
explicit EasingTest();
void bounds();
void monotonicity();
void symmetry();
void values();
void benchmark();
};
namespace {
#define _c(name) #name, Easing::name
constexpr struct {
const char* name;
Float(*function)(Float);
} BoundsData[] {
{_c(linear)},
{_c(step)},
{_c(smoothstep)},
{_c(smootherstep)},
{_c(quadraticIn)},
{_c(quadraticOut)},
{_c(quadraticInOut)},
{_c(cubicIn)},
{_c(cubicOut)},
{_c(cubicInOut)},
{_c(quarticIn)},
{_c(quarticOut)},
{_c(quarticInOut)},
{_c(quinticIn)},
{_c(quinticOut)},
{_c(quinticInOut)},
{_c(sineIn)},
{_c(sineOut)},
{_c(sineInOut)},
{_c(circularIn)},
{_c(circularOut)},
{_c(circularInOut)},
{_c(exponentialIn)},
{_c(exponentialOut)},
{_c(exponentialInOut)},
/* elastic and back are out of [0, 1] bounds */
{_c(bounceIn)},
{_c(bounceOut)},
{_c(bounceInOut)}
};
constexpr struct {
const char* name;
Float(*function)(Float);
} MonotonicityData[] {
{_c(linear)},
{_c(step)},
{_c(smoothstep)},
{_c(smootherstep)},
{_c(quadraticIn)},
{_c(quadraticOut)},
{_c(quadraticInOut)},
{_c(cubicIn)},
{_c(cubicOut)},
{_c(cubicInOut)},
{_c(quarticIn)},
{_c(quarticOut)},
{_c(quarticInOut)},
{_c(quinticIn)},
{_c(quinticOut)},
{_c(quinticInOut)},
{_c(sineIn)},
{_c(sineOut)},
{_c(sineInOut)},
{_c(circularIn)},
{_c(circularOut)},
{_c(circularInOut)},
{_c(exponentialIn)},
{_c(exponentialOut)},
{_c(exponentialInOut)}
/* elastic, back and bounce are not monotonic */
};
constexpr struct {
const char* name;
Float(*function)(Float);
const char* symmetricName;
Float(*symmetric)(Float);
} SymmetryData[] {
{_c(linear), _c(linear)},
{_c(step), _c(step)},
{_c(smoothstep), _c(smoothstep)},
{_c(smootherstep), _c(smootherstep)},
{_c(quadraticIn), _c(quadraticOut)},
{_c(quadraticInOut), _c(quadraticInOut)},
{_c(cubicIn), _c(cubicOut)},
{_c(cubicInOut), _c(cubicInOut)},
{_c(quarticIn), _c(quarticOut)},
{_c(quarticInOut), _c(quarticInOut)},
{_c(quinticIn), _c(quinticOut)},
{_c(quinticInOut), _c(quinticInOut)},
{_c(sineIn), _c(sineOut)},
{_c(sineInOut), _c(sineInOut)},
{_c(circularIn), _c(circularOut)},
{_c(circularInOut), _c(circularInOut)},
{_c(exponentialIn), _c(exponentialOut)},
{_c(exponentialInOut), _c(exponentialInOut)},
{_c(elasticIn), _c(elasticOut)},
{_c(elasticInOut), _c(elasticInOut)},
{_c(backIn), _c(backOut)},
{_c(backInOut), _c(backInOut)},
{_c(bounceIn), _c(bounceOut)},
{_c(bounceInOut), _c(bounceInOut)}
};
constexpr struct {
const char* name;
Float(*function)(Float);
Float values[3];
} ValueData[] {
{_c(linear), {0.25f, 0.5f, 0.75f}},
{_c(step), {0.0f, 1.0f, 1.0f}},
{_c(smoothstep), {0.15625f, 0.5f, 0.84375f}},
{_c(smootherstep), {0.103516f, 0.5f, 0.896484f}},
{_c(quadraticIn), {0.0625f, 0.25f, 0.5625f}},
{_c(quadraticOut), {0.4375f, 0.75f, 0.9375f}},
{_c(quadraticInOut), {0.125f, 0.5f, 0.875f}},
{_c(cubicIn), {0.015625f, 0.125f, 0.421875f}},
{_c(cubicOut), {0.578125f, 0.875f, 0.984375f}},
{_c(cubicInOut), {0.0625f, 0.5f, 0.9375f}},
{_c(quarticIn), {0.00390625f, 0.0625f, 0.316406f}},
{_c(quarticOut), {0.683594f, 0.9375f, 0.996094f}},
{_c(quarticInOut), {0.03125f, 0.5f, 0.96875f}},
{_c(quinticIn), {0.000976562f, 0.03125f, 0.237305f}},
{_c(quinticOut), {0.762695f, 0.96875f, 0.999023f}},
{_c(quinticInOut), {0.015625f, 0.5f, 0.984375f}},
{_c(sineIn), {0.0761205f, 0.292893f, 0.617317f}},
{_c(sineOut), {0.382683f, 0.707107f, 0.92388f}},
{_c(sineInOut), {0.146447f, 0.5f, 0.853553f}},
{_c(circularIn), {0.0317541f, 0.133975f, 0.338562f}},
{_c(circularOut), {0.661438f, 0.866025f, 0.968246f}},
{_c(circularInOut), {0.0669873f, 0.5f, 0.933013f}},
{_c(exponentialIn), {0.00552427f, 0.03125f, 0.176777f}},
{_c(exponentialOut), {0.823223f, 0.96875f, 0.994476f}},
{_c(exponentialInOut), {0.015625f, 0.5f, 0.984375f}},
{_c(elasticIn), {-0.00510376f, -0.0220971f, 0.0676494f}},
{_c(elasticOut), {0.932351f, 1.022097f, 1.005104f}},
{_c(elasticInOut), {-0.0110485f, 0.5f, 1.01105f}},
{_c(backIn), {-0.161152f, -0.375f, -0.108455f}},
{_c(backOut), {1.108455f, 1.375f, 1.161152f}},
{_c(backInOut), {-0.1875f, 0.5f, 1.1875f}},
{_c(bounceIn), {0.0411367f, 0.28125f, 0.527344f}},
{_c(bounceOut), {0.472656f, 0.71875f, 0.958863f}},
{_c(bounceInOut), {0.140625f, 0.5f, 0.859375f}}
};
#undef _c
}
EasingTest::EasingTest() {
addInstancedTests({&EasingTest::bounds},
Containers::arraySize(BoundsData));
addInstancedTests({&EasingTest::monotonicity},
Containers::arraySize(MonotonicityData));
addInstancedTests({&EasingTest::symmetry},
Containers::arraySize(SymmetryData));
addInstancedTests({&EasingTest::values},
Containers::arraySize(ValueData));
addInstancedBenchmarks({&EasingTest::benchmark}, 100,
Containers::arraySize(ValueData));
}
namespace {
constexpr std::size_t PropertyVerificationStepCount = 50;
}
void EasingTest::bounds() {
auto&& data = BoundsData[testCaseInstanceId()];
setTestCaseDescription(data.name);
Float scale = 1.0f/Float(PropertyVerificationStepCount - 1);
for(std::size_t i = 0; i != PropertyVerificationStepCount; ++i) {
Float t = i*scale;
CORRADE_COMPARE_AS(data.function(t), 0.0f, TestSuite::Compare::GreaterOrEqual);
CORRADE_COMPARE_AS(data.function(t), 1.0f, TestSuite::Compare::LessOrEqual);
}
}
void EasingTest::monotonicity() {
auto&& data = MonotonicityData[testCaseInstanceId()];
setTestCaseDescription(data.name);
Float scale = 1.0f/Float(PropertyVerificationStepCount - 1);
Float prev = data.function(0);
for(std::size_t i = 1; i != PropertyVerificationStepCount; ++i) {
Float cur = data.function(i*scale);
CORRADE_COMPARE_AS(cur, prev, TestSuite::Compare::GreaterOrEqual);
prev = cur;
}
}
void EasingTest::symmetry() {
auto&& data = SymmetryData[testCaseInstanceId()];
if(std::strcmp(data.name, data.symmetricName) == 0)
setTestCaseDescription(data.name);
else
setTestCaseDescription(Utility::formatString("{} : {}", data.name, data.symmetricName));
/* Not testing the edges, as these are tested in values() anyway (and are
problematic in functions that have explicit handling for them) */
Float scale = 1.0f/Float(PropertyVerificationStepCount + 1);
std::size_t max = PropertyVerificationStepCount/(data.function == data.symmetric ? 2 : 1);
for(std::size_t i = 1; i != max; ++i) {
Float t = i*scale;
CORRADE_COMPARE(data.function(t), 1.0f - data.symmetric(1.0f - t));
}
}
void EasingTest::values() {
auto&& data = ValueData[testCaseInstanceId()];
setTestCaseDescription(data.name);
CORRADE_COMPARE(data.function(0.0f), 0.0f);
CORRADE_COMPARE(data.function(1.0f), 1.0f);
CORRADE_COMPARE(data.function(0.25f), data.values[0]);
CORRADE_COMPARE(data.function(0.50f), data.values[1]);
CORRADE_COMPARE(data.function(0.75f), data.values[2]);
}
namespace {
constexpr Int BenchmarkStepCount = 5000;
}
void EasingTest::benchmark() {
auto&& data = ValueData[testCaseInstanceId()];
setTestCaseDescription(data.name);
/* Skip edges because the cumulated number may exceed 1 (on asm.js
Emscripten), producing NaN on some functions and failing the test */
Float scale = 1.0f/Float(BenchmarkStepCount + 1);
Float result = 0.0f;
std::size_t i = 0;
CORRADE_BENCHMARK(BenchmarkStepCount)
result += data.function(++i*scale);
/* backIn() has -340 */
CORRADE_COMPARE_AS(result, -350.0f, TestSuite::Compare::Greater);
}
}}}
CORRADE_TEST_MAIN(Magnum::Animation::Test::EasingTest)

61
src/Magnum/Animation/Test/InterpolationTest.cpp

@ -26,6 +26,7 @@
#include <sstream> #include <sstream>
#include <Corrade/TestSuite/Tester.h> #include <Corrade/TestSuite/Tester.h>
#include "Magnum/Animation/Easing.h"
#include "Magnum/Animation/Interpolation.h" #include "Magnum/Animation/Interpolation.h"
#include "Magnum/Math/Complex.h" #include "Magnum/Math/Complex.h"
#include "Magnum/Math/CubicHermite.h" #include "Magnum/Math/CubicHermite.h"
@ -65,6 +66,12 @@ struct InterpolationTest: TestSuite::Tester {
void interpolateIntegerKey(); void interpolateIntegerKey();
void interpolateStrictIntegerKey(); void interpolateStrictIntegerKey();
void ease();
void easeClamped();
void unpack();
void unpackEase();
void unpackEaseClamped();
void debugInterpolation(); void debugInterpolation();
void debugExtrapolation(); void debugExtrapolation();
}; };
@ -175,6 +182,12 @@ InterpolationTest::InterpolationTest() {
&InterpolationTest::interpolateIntegerKey, &InterpolationTest::interpolateIntegerKey,
&InterpolationTest::interpolateStrictIntegerKey, &InterpolationTest::interpolateStrictIntegerKey,
&InterpolationTest::ease,
&InterpolationTest::easeClamped,
&InterpolationTest::unpack,
&InterpolationTest::unpackEase,
&InterpolationTest::unpackEaseClamped,
&InterpolationTest::debugInterpolation, &InterpolationTest::debugInterpolation,
&InterpolationTest::debugExtrapolation}); &InterpolationTest::debugExtrapolation});
} }
@ -506,6 +519,54 @@ void InterpolationTest::interpolateStrictError() {
"Animation::interpolateStrict(): keys and values don't have the same size\n"); "Animation::interpolateStrict(): keys and values don't have the same size\n");
} }
void InterpolationTest::ease() {
auto lerpQuadratic = Animation::ease<Float, Math::lerp, Easing::quadraticIn>();
CORRADE_COMPARE(Math::lerp(0.5f, 0.95f, Easing::quadraticIn(0.3f)), 0.5405f);
CORRADE_COMPARE(lerpQuadratic(0.5f, 0.95f, 0.3f), 0.5405f);
}
void InterpolationTest::easeClamped() {
auto lerpBackInClamped = Animation::easeClamped<Float, Math::lerp, Easing::backIn>();
/* Verify it doesn't return garbage outside the range */
CORRADE_COMPARE(lerpBackInClamped(0.5f, 0.95f, -0.3f), 0.5f);
CORRADE_COMPARE(lerpBackInClamped(0.5f, 0.95f, 1.3f), 0.95f);
/* Verify it doesn't clamp the easer output (should be less than 0.5) */
CORRADE_COMPARE(Math::lerp(0.5f, 0.95f, Easing::backIn(0.3f)), 0.402933f);
CORRADE_COMPARE(lerpBackInClamped(0.5f, 0.95f, 0.3f), 0.402933f);
}
void InterpolationTest::unpack() {
auto lerpPacked = Animation::unpack<UnsignedShort, Float, Math::lerp, Math::unpack<Float>>();
CORRADE_COMPARE(Math::lerp(Math::unpack<Float, UnsignedShort>(32767), Math::unpack<Float, UnsignedShort>(62258), 0.3f), 0.634994f);
CORRADE_COMPARE(lerpPacked(32767, 62258, 0.3f), 0.634994f);
}
void InterpolationTest::unpackEase() {
auto lerpPackedQuadratic = Animation::unpackEase<UnsignedShort, Float, Math::lerp, Math::unpack<Float>, Easing::quadraticIn>();
/* Some minor imprecision compared to ease() due to lossy packing */
CORRADE_COMPARE(Math::lerp(Math::unpack<Float, UnsignedShort>(32767), Math::unpack<Float, UnsignedShort>(62258), Easing::quadraticIn(0.3f)), 0.540493f);
CORRADE_COMPARE(lerpPackedQuadratic(32767, 62258, 0.3f), 0.540493f);
}
void InterpolationTest::unpackEaseClamped() {
auto lerpPackedBackInClamped = Animation::unpackEaseClamped<UnsignedShort, Float, Math::lerp, Math::unpack<Float>, Easing::backIn>();
/* Some minor imprecision compared to easeClamped() due to lossy packing */
/* Verify it doesn't return garbage outside the range */
CORRADE_COMPARE(lerpPackedBackInClamped(32767, 62258, -0.3f), 0.499992f);
CORRADE_COMPARE(lerpPackedBackInClamped(32767, 62258, 1.3f), 0.949996f);
/* Verify it doesn't clamp the easer output (should be less than 0.5) */
CORRADE_COMPARE(Math::lerp(Math::unpack<Float, UnsignedShort>(32767), Math::unpack<Float, UnsignedShort>(62258), Easing::backIn(0.3f)), 0.402924f);
CORRADE_COMPARE(lerpPackedBackInClamped(32767, 62258, 0.3f), 0.402924f);
}
void InterpolationTest::debugInterpolation() { void InterpolationTest::debugInterpolation() {
std::ostringstream out; std::ostringstream out;

4
src/Magnum/Math/Packing.h

@ -84,14 +84,14 @@ Float b = Math::unpack<Float, 14>(8191); // 1.0f
*/ */
template<class FloatingPoint, class Integral, UnsignedInt bits> inline FloatingPoint unpack(const Integral& value); template<class FloatingPoint, class Integral, UnsignedInt bits> inline FloatingPoint unpack(const Integral& value);
#else #else
template<class FloatingPoint, class Integral, UnsignedInt bits = sizeof(Integral)*8> inline typename std::enable_if<std::is_arithmetic<Integral>::value && std::is_unsigned<Integral>::value, FloatingPoint>::type unpack(Integral value) { template<class FloatingPoint, class Integral, UnsignedInt bits = sizeof(Integral)*8> inline typename std::enable_if<std::is_arithmetic<Integral>::value && std::is_unsigned<Integral>::value, FloatingPoint>::type unpack(const Integral& value) {
static_assert(std::is_floating_point<FloatingPoint>::value && std::is_integral<Integral>::value, static_assert(std::is_floating_point<FloatingPoint>::value && std::is_integral<Integral>::value,
"unpacking must be done from integral to floating-point type"); "unpacking must be done from integral to floating-point type");
static_assert(bits <= sizeof(Integral)*8, static_assert(bits <= sizeof(Integral)*8,
"bit count larger than size of the integral type"); "bit count larger than size of the integral type");
return value/FloatingPoint(Implementation::bitMax<Integral, bits>()); return value/FloatingPoint(Implementation::bitMax<Integral, bits>());
} }
template<class FloatingPoint, class Integral, UnsignedInt bits = sizeof(Integral)*8> inline typename std::enable_if<std::is_arithmetic<Integral>::value && std::is_signed<Integral>::value, FloatingPoint>::type unpack(Integral value) { template<class FloatingPoint, class Integral, UnsignedInt bits = sizeof(Integral)*8> inline typename std::enable_if<std::is_arithmetic<Integral>::value && std::is_signed<Integral>::value, FloatingPoint>::type unpack(const Integral& value) {
static_assert(std::is_floating_point<FloatingPoint>::value && std::is_integral<Integral>::value, static_assert(std::is_floating_point<FloatingPoint>::value && std::is_integral<Integral>::value,
"unpacking must be done from integral to floating-point type"); "unpacking must be done from integral to floating-point type");
static_assert(bits <= sizeof(Integral)*8, static_assert(bits <= sizeof(Integral)*8,

Loading…
Cancel
Save