Ease center (#238)

* New Center Ease methods

* New Version
This commit is contained in:
Michael Miller
2018-12-12 17:26:34 -08:00
committed by GitHub
parent 61d917bb4e
commit de143ce482
4 changed files with 97 additions and 2 deletions

View File

@@ -146,24 +146,31 @@ setTimeScale KEYWORD2
QuadraticIn KEYWORD2 QuadraticIn KEYWORD2
QuadraticOut KEYWORD2 QuadraticOut KEYWORD2
QuadraticInOut KEYWORD2 QuadraticInOut KEYWORD2
QuadraticCenter KEYWORD2
CubicIn KEYWORD2 CubicIn KEYWORD2
CubicOut KEYWORD2 CubicOut KEYWORD2
CubicInOut KEYWORD2 CubicInOut KEYWORD2
CubicCenter KEYWORD2
QuarticIn KEYWORD2 QuarticIn KEYWORD2
QuarticOut KEYWORD2 QuarticOut KEYWORD2
QuarticInOut KEYWORD2 QuarticInOut KEYWORD2
QuarticCenter KEYWORD2
QuinticIn KEYWORD2 QuinticIn KEYWORD2
QuinticOut KEYWORD2 QuinticOut KEYWORD2
QuinticInOut KEYWORD2 QuinticInOut KEYWORD2
QuinticCenter KEYWORD2
SinusoidalIn KEYWORD2 SinusoidalIn KEYWORD2
SinusoidalOut KEYWORD2 SinusoidalOut KEYWORD2
SinusoidalInOut KEYWORD2 SinusoidalInOut KEYWORD2
SinusoidalCenter KEYWORD2
ExponentialIn KEYWORD2 ExponentialIn KEYWORD2
ExponentialOut KEYWORD2 ExponentialOut KEYWORD2
ExponentialInOut KEYWORD2 ExponentialInOut KEYWORD2
ExponentialCenter KEYWORD2
CircularIn KEYWORD2 CircularIn KEYWORD2
CircularOut KEYWORD2 CircularOut KEYWORD2
CircularInOut KEYWORD2 CircularInOut KEYWORD2
CircularCenter KEYWORD2
Gamma KEYWORD2 Gamma KEYWORD2
Map KEYWORD2 Map KEYWORD2
MapProbe KEYWORD2 MapProbe KEYWORD2

View File

@@ -8,7 +8,7 @@
"type": "git", "type": "git",
"url": "https://github.com/Makuna/NeoPixelBus" "url": "https://github.com/Makuna/NeoPixelBus"
}, },
"version": "2.3.4", "version": "2.3.5",
"frameworks": "arduino", "frameworks": "arduino",
"platforms": "*" "platforms": "*"
} }

View File

@@ -1,5 +1,5 @@
name=NeoPixelBus by Makuna name=NeoPixelBus by Makuna
version=2.3.4 version=2.3.5
author=Michael C. Miller (makuna@live.com) author=Michael C. Miller (makuna@live.com)
maintainer=Michael C. Miller (makuna@live.com) maintainer=Michael C. Miller (makuna@live.com)
sentence=A library that makes controlling NeoPixels (WS2811, WS2812, WS2813 & SK6812) and DotStars (APA102) easy. sentence=A library that makes controlling NeoPixels (WS2811, WS2812, WS2813 & SK6812) and DotStars (APA102) easy.

View File

@@ -71,6 +71,20 @@ public:
} }
} }
static float QuadraticCenter(float unitValue)
{
unitValue *= 2.0f;
if (unitValue < 1.0f)
{
return (-0.5f * (unitValue * unitValue - 2.0f));
}
else
{
unitValue -= 1.0f;
return (0.5f * (unitValue * unitValue + 1.0f));
}
}
static float CubicIn(float unitValue) static float CubicIn(float unitValue)
{ {
return (unitValue * unitValue * unitValue); return (unitValue * unitValue * unitValue);
@@ -96,6 +110,13 @@ public:
} }
} }
static float CubicCenter(float unitValue)
{
unitValue *= 2.0f;
unitValue -= 1.0f;
return (0.5f * (unitValue * unitValue * unitValue) + 1);
}
static float QuarticIn(float unitValue) static float QuarticIn(float unitValue)
{ {
return (unitValue * unitValue * unitValue * unitValue); return (unitValue * unitValue * unitValue * unitValue);
@@ -121,6 +142,20 @@ public:
} }
} }
static float QuarticCenter(float unitValue)
{
unitValue *= 2.0f;
unitValue -= 1.0f;
if (unitValue < 0.0f)
{
return (-0.5f * (unitValue * unitValue * unitValue * unitValue - 1.0f));
}
else
{
return (0.5f * (unitValue * unitValue * unitValue * unitValue + 1.0f));
}
}
static float QuinticIn(float unitValue) static float QuinticIn(float unitValue)
{ {
return (unitValue * unitValue * unitValue * unitValue * unitValue); return (unitValue * unitValue * unitValue * unitValue * unitValue);
@@ -146,6 +181,13 @@ public:
} }
} }
static float QuinticCenter(float unitValue)
{
unitValue *= 2.0f;
unitValue -= 1.0f;
return (0.5f * (unitValue * unitValue * unitValue * unitValue * unitValue + 1.0f));
}
static float SinusoidalIn(float unitValue) static float SinusoidalIn(float unitValue)
{ {
return (-cos(unitValue * HALF_PI) + 1.0f); return (-cos(unitValue * HALF_PI) + 1.0f);
@@ -161,6 +203,19 @@ public:
return -0.5 * (cos(PI * unitValue) - 1.0f); return -0.5 * (cos(PI * unitValue) - 1.0f);
} }
static float SinusoidalCenter(float unitValue)
{
if (unitValue < 0.5f)
{
return (0.5 * sin(PI * unitValue));
}
else
{
return (-0.5 * (cos(PI * (unitValue-0.5f)) + 1.0f));
}
}
static float ExponentialIn(float unitValue) static float ExponentialIn(float unitValue)
{ {
return (pow(2, 10.0f * (unitValue - 1.0f))); return (pow(2, 10.0f * (unitValue - 1.0f)));
@@ -185,6 +240,20 @@ public:
} }
} }
static float ExponentialCenter(float unitValue)
{
unitValue *= 2.0f;
if (unitValue < 1.0f)
{
return (0.5f * (-pow(2, -10.0f * unitValue) + 1.0f));
}
else
{
unitValue -= 2.0f;
return (0.5f * (pow(2, 10.0f * unitValue) + 1.0f));
}
}
static float CircularIn(float unitValue) static float CircularIn(float unitValue)
{ {
if (unitValue == 1.0f) if (unitValue == 1.0f)
@@ -217,6 +286,25 @@ public:
} }
} }
static float CircularCenter(float unitValue)
{
unitValue *= 2.0f;
unitValue -= 1.0f;
if (unitValue == 0.0f)
{
return 1.0f;
}
else if (unitValue < 0.0f)
{
return (0.5f * sqrt(1.0f - unitValue * unitValue));
}
else
{
unitValue -= 2.0f;
return (-0.5f * (sqrt(1.0f - unitValue * unitValue) - 1.0f ) + 0.5f);
}
}
static float Gamma(float unitValue) static float Gamma(float unitValue)
{ {
return pow(unitValue, 1.0f / 0.45f); return pow(unitValue, 1.0f / 0.45f);