diff options
| -rw-r--r-- | led_test.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/led_test.c b/led_test.c index ed65a0baa..d358ef81e 100644 --- a/led_test.c +++ b/led_test.c | |||
| @@ -86,10 +86,13 @@ static uint8_t crossfade_start_frame[NUM_ROWS][NUM_COLS]; | |||
| 86 | static uint8_t crossfade_end_frame[NUM_ROWS][NUM_COLS]; | 86 | static uint8_t crossfade_end_frame[NUM_ROWS][NUM_COLS]; |
| 87 | 87 | ||
| 88 | static uint8_t compute_gradient_color(float t, float index, float num) { | 88 | static uint8_t compute_gradient_color(float t, float index, float num) { |
| 89 | float d = fabs(index - t); | 89 | const float target = t * (num - 1.0f); |
| 90 | if (d > num / 2.0f) { | 90 | const float half_num = num / 2.0f; |
| 91 | float d = fabs(index - target); | ||
| 92 | if (d > half_num) { | ||
| 91 | d = num - d; | 93 | d = num - d; |
| 92 | } | 94 | } |
| 95 | d = 1.0f - (d / half_num); | ||
| 93 | return (uint8_t)(255.0f * d); | 96 | return (uint8_t)(255.0f * d); |
| 94 | } | 97 | } |
| 95 | 98 | ||
