12constexpr float kPi = 3.14159265358979323846f;
13constexpr float kPi2 = kPi / 2.f;
40 return -(p * (p - 2.f));
47 return p < 0.5f ? 2.f * p * p : (-2.f * p * p) + (4.f * p) - 1.f;
57 const float f = (p - 1.f);
58 return f * f * f + 1.f;
66 return 4.f * p * p * p;
68 const float f = ((2.f * p) - 2.f);
69 return 0.5f * f * f * f + 1.f;
79 const float f = (p - 1.f);
80 return f * f * f * (1.f - p) + 1.f;
88 return 8.f * p * p * p * p;
90 const float f = (p - 1.f);
91 return -8.f * f * f * f * f + 1.f;
96 return p * p * p * p * p;
101 const float f = (p - 1.f);
102 return f * f * f * f * f + 1.f;
110 return 16.f * p * p * p * p * p;
112 const float f = ((2.f * p) - 2.f);
113 return 0.5f * f * f * f * f * f + 1.f;
118 return std::sin((p - 1.f) * kPi2) + 1.f;
123 return std::sin(p * kPi2);
128 return 0.5f * (1.f - std::cos(p * kPi));
133 return 1.f - std::sqrt(1.f - (p * p));
138 return std::sqrt((2.f - p) * p);
146 return 0.5f * (1.f - std::sqrt(1.f - 4.f * (p * p)));
148 return 0.5f * (std::sqrt(-((2.f * p) - 3.f) * ((2.f * p) - 1.f)) + 1.f);
153 return (p == 0.f) ? p : std::pow(2.f, 10.f * (p - 1.f));
158 return (p == 1.f) ? p : 1.f - std::pow(2.f, -10.f * p);
165 if (p == 0.f || p == 1.f) {
170 return 0.5f * std::pow(2.f, (20.f * p) - 10.f);
172 return -0.5f * std::pow(2.f, (-20.f * p) + 10.f) + 1.f;
177 return std::sin(13.f * kPi2 * p) * std::pow(2.f, 10.f * (p - 1.f));
182 return std::sin(-13.f * kPi2 * (p + 1.f)) * std::pow(2.f, -10.f * p) + 1.f;
190 return 0.5f * std::sin(13.f * kPi2 * (2.f * p)) *
191 std::pow(2.f, 10.f * ((2.f * p) - 1.f));
193 return 0.5f * (std::sin(-13.f * kPi2 * ((2.f * p - 1.f) + 1.f)) *
194 std::pow(2.f, -10.f * (2.f * p - 1.f)) +
200 return p * p * p - p * std::sin(p * kPi);
205 const float f = (1.f - p);
206 return 1.f - (f * f * f - f * std::sin(f * kPi));
214 const float f = 2.f * p;
215 return 0.5f * (f * f * f - f * std::sin(f * kPi));
217 const float f = (1.f - (2.f * p - 1.f));
218 return 0.5f * (1.f - (f * f * f - f * std::sin(f * kPi))) + 0.5f;
226 if (p < 4.f / 11.f) {
227 return (121.f * p * p) / 16.f;
230 if (p < 8.f / 11.f) {
231 return (363.f / 40.f * p * p) - (99.f / 10.f * p) + 17.f / 5.f;
234 if (p < 9.f / 10.f) {
235 return (4356.f / 361.f * p * p) - (35442.f / 1805.f * p) + 16061.f / 1805.f;
238 return (54.f / 5.f * p * p) - (513 / 25.f * p) + 268 / 25.f;
245 return 0.5f *
BounceOut(p * 2.f - 1.f) + 0.5f;
259 easing_function_(std::move(easing_function)),
267 if (current_ >= duration_) {
275 *value_ = from_ + (to_ - from_) * easing_function_(current_ / duration_);
Animator(float *from, float to=0.f, Duration duration=std::chrono::milliseconds(250), easing::Function easing_function=easing::Linear, Duration delay=std::chrono::milliseconds(0))
void OnAnimation(Params &)
Duration duration() const
La durée que représente cette étape d'animation.
void RequestAnimationFrame()
RequestAnimationFrame est une fonction qui demande à ce qu'une nouvelle trame soit dessinée lors du p...
Le namespace FTXUI ftxui::animation::easing::
float CircularInOut(float p)
float BounceInOut(float p)
float CubicInOut(float p)
float Linear(float p)
Modélisé d'après la ligne y = x.
float CircularOut(float p)
float ExponentialInOut(float p)
float ElasticInOut(float p)
float QuarticInOut(float p)
float QuadraticInOut(float p)
float QuarticOut(float p)
float CircularIn(float p)
float ExponentialOut(float p)
float QuadraticOut(float p)
float QuinticOut(float p)
float QuadraticIn(float p)
Modélisé d'après la parabole y = x^2.
float ExponentialIn(float p)
float ElasticOut(float p)
std::function< float(float)> Function
float QuinticInOut(float p)
Le namespace FTXUI ftxui::animation::
std::chrono::duration< float > Duration