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
QuadraticOut KEYWORD2
QuadraticInOut KEYWORD2
QuadraticCenter KEYWORD2
CubicIn KEYWORD2
CubicOut KEYWORD2
CubicInOut KEYWORD2
CubicCenter KEYWORD2
QuarticIn KEYWORD2
QuarticOut KEYWORD2
QuarticInOut KEYWORD2
QuarticCenter KEYWORD2
QuinticIn KEYWORD2
QuinticOut KEYWORD2
QuinticInOut KEYWORD2
QuinticCenter KEYWORD2
SinusoidalIn KEYWORD2
SinusoidalOut KEYWORD2
SinusoidalInOut KEYWORD2
SinusoidalCenter KEYWORD2
ExponentialIn KEYWORD2
ExponentialOut KEYWORD2
ExponentialInOut KEYWORD2
ExponentialCenter KEYWORD2
CircularIn KEYWORD2
CircularOut KEYWORD2
CircularInOut KEYWORD2
CircularCenter KEYWORD2
Gamma KEYWORD2
Map KEYWORD2
MapProbe KEYWORD2

View File

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

View File

@@ -1,5 +1,5 @@
name=NeoPixelBus by Makuna
version=2.3.4
version=2.3.5
author=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.

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)
{
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)
{
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)
{
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)
{
return (-cos(unitValue * HALF_PI) + 1.0f);
@@ -161,6 +203,19 @@ public:
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)
{
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)
{
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)
{
return pow(unitValue, 1.0f / 0.45f);