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));
184 return std::sin(-13.f * kPi2 * (p + 1.f)) * std::pow(2.f, -10.f * p) + 1.f;
192 return 0.5f * std::sin(13.f * kPi2 * (2.f * p)) *
193 std::pow(2.f, 10.f * ((2.f * p) - 1.f));
195 return 0.5f * (std::sin(-13.f * kPi2 * ((2.f * p - 1.f) + 1.f)) *
196 std::pow(2.f, -10.f * (2.f * p - 1.f)) +
202 return p * p * p - p * std::sin(p * kPi);
207 const float f = (1.f - p);
208 return 1.f - (f * f * f - f * std::sin(f * kPi));
216 const float f = 2.f * p;
217 return 0.5f * (f * f * f - f * std::sin(f * kPi));
219 const float f = (1.f - (2.f * p - 1.f));
220 return 0.5f * (1.f - (f * f * f - f * std::sin(f * kPi))) + 0.5f;
228 if (p < 4.f / 11.f) {
229 return (121.f * p * p) / 16.f;
232 if (p < 8.f / 11.f) {
233 return (363.f / 40.f * p * p) - (99.f / 10.f * p) + 17.f / 5.f;
236 if (p < 9.f / 10.f) {
237 return (4356.f / 361.f * p * p) - (35442.f / 1805.f * p) + 16061.f / 1805.f;
240 return (54.f / 5.f * p * p) - (513 / 25.f * p) + 268 / 25.f;
247 return 0.5f *
BounceOut(p * 2.f - 1.f) + 0.5f;
261 easing_function_(std::move(easing_function)),
269 if (current_ >= duration_) {
277 *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 duración que representa este paso de animación.
void RequestAnimationFrame()
RequestAnimationFrame es una función que solicita que se dibuje un nuevo fotograma en el siguiente ci...
El espacio de nombres ftxui::animation::easing:: de FTXUI.
float CircularInOut(float p)
float BounceInOut(float p)
float CubicInOut(float p)
float Linear(float p)
Modelado según la línea 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)
Modelado según la parábola y = x^2.
float ExponentialIn(float p)
float ElasticOut(float p)
std::function< float(float)> Function
float QuinticInOut(float p)
El espacio de nombres ftxui::animation:: de FTXUI.
std::chrono::duration< float > Duration