瀏覽代碼

Add a nicer sine based gradient for the LEDs

Fred Sundvik 9 年之前
父節點
當前提交
489288f674
共有 2 個文件被更改,包括 6 次插入9 次删除
  1. 5 8
      led_test.c
  2. 1 1
      ugfx

+ 5 - 8
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) {

+ 1 - 1
ugfx

@@ -1 +1 @@
-Subproject commit 7d7eeef0ad0f1b28f4fb86ad931cb6774c7b9e81
+Subproject commit dc5786acc246fb23503517647c386e43f1bfb247