summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFred Sundvik <fsundvik@gmail.com>2016-05-29 18:27:32 +0300
committerFred Sundvik <fsundvik@gmail.com>2016-05-29 21:59:27 +0300
commit489288f67462e0c6fae8e54644af2fa4593e4406 (patch)
tree7df2cab487a9abc2304010dfd9aeb69cc1c42b3c
parent0c3189055f049e6023471e75139d488b288aead9 (diff)
Add a nicer sine based gradient for the LEDs
-rw-r--r--led_test.c13
m---------ugfx0
2 files changed, 5 insertions, 8 deletions
diff --git a/led_test.c b/led_test.c
index d53f0b7fb7..c2ea30b55b 100644
--- a/led_test.c
+++ b/led_test.c
@@ -89,14 +89,11 @@ static uint8_t crossfade_start_frame[NUM_ROWS][NUM_COLS];
static uint8_t crossfade_end_frame[NUM_ROWS][NUM_COLS];
static uint8_t compute_gradient_color(float t, float index, float num) {
- const float target = t * (num - 1.0f);
- const float half_num = num / 2.0f;
- float d = fabs(index - target);
- if (d > half_num) {
- d = num - d;
- }
- d = 1.0f - (d / half_num);
- return (uint8_t)(255.0f * d);
+ const float two_pi = 2.0f * PI;
+ float normalized_index = (1.0f - index / (num - 1)) * two_pi;
+ float x = t * two_pi + normalized_index;
+ float v = 0.5 * (cosf(x) + 1.0f);
+ return (uint8_t)(255.0f * v);
}
bool keyframe_fade_in_all_leds(keyframe_animation_t* animation, visualizer_state_t* state) {
diff --git a/ugfx b/ugfx
-Subproject 7d7eeef0ad0f1b28f4fb86ad931cb6774c7b9e8
+Subproject dc5786acc246fb23503517647c386e43f1bfb24