diff --git a/esp8266-fastled-webserver/Map.cpp b/esp8266-fastled-webserver/Map.cpp index e266448f..f3f1403c 100644 --- a/esp8266-fastled-webserver/Map.cpp +++ b/esp8266-fastled-webserver/Map.cpp @@ -1,6 +1,6 @@ #include "common.h" -#if HAS_COORDINATE_MAP // IS_FIBONACCI and HAS_POLAR_COORDS each imply HAS_COORDINATE_MAP +#if HAS_COORDINATE_MAP // IS_FIBONACCI implies HAS_COORDINATE_MAP // Each Fibonacci board must define the following arrays: // @@ -59,54 +59,46 @@ const uint8_t coordsX[NUM_PIXELS] { 170, 178, 185, 191, 196, 199, 202, 202, 202, 200, 196, 191, 184, 175, 161, 132, 148, 166, 176, 183, 188, 190, 192, 191, 190, 186, 182, 176, 170, 162, 153, 125, 136, 145, 154, 161, 168, 173, 177, 180, 181, 181, 178, 174, 167, 155, 139, 157, 164, 169, 170, 170, 168, 165, 160, 154, 147, 139, 129, 119, 109, 82, 93, 104, 114, 124, 132, 140, 147, 152, 157, 159, 160, 159, 155, 145, 145, 150, 150, 149, 146, 141, 135, 127, 119, 110, 100, 90, 79, 68, 57, 45, 56, 66, 77, 87, 97, 107, 115, 123, 130, 135, 139, 142, 141, 136, 134, 134, 131, 126, 120, 113, 105, 96, 86, 76, 66, 56, 45, 35, 25, 18, 27, 37, 47, 57, 67, 77, 86, 95, 104, 112, 119, 124, 128, 129, 125, 120, 113, 105, 97, 88, 78, 69, 59, 50, 40, 31, 22, 14, 6, 0, 6, 12, 19, 27, 35, 44, 54, 63, 73, 82, 91, 101, 109, 118, 121, 108, 98, 88, 78, 69, 59, 50, 41, 33, 25, 18, 12, 7, 3, 6, 8, 11, 15, 20, 26, 33, 40, 48, 57, 67, 77, 87, 98, 111, 102, 89, 77, 67, 58, 49, 41, 34, 28, 23, 19, 16, 15, 14, 15, 26, 24, 23, 24, 26, 28, 33, 38, 44, 51, 60, 69, 80, 93, 111, 100, 85, 73, 64, 55, 49, 43, 39, 36, 34, 33, 34, 36, 39, 43, 58, 53, 49, 45, 44, 43, 44, 46, 50, 55, 61, 69, 79, 93, 116, 104, 87, 76, 68, 62, 58, 55, 54, 54, 55, 58, 62, 68, 74, 82, 108, 99, 90, 83, 77, 72, 68, 65, 64, 65, 67, 70, 76, 85, 97, 112, 94, 85, 80, 76, 75, 75, 77, 81, 85, 91, 98, 106, 115, 125, 153, 142, 131, 122, 113, 105, 99, 93, 89, 87, 85, 86, 89, 95, 106, 123, 105, 99, 96, 96, 98, 101, 106, 112, 119, 128, 137, 147, 157, 168, 180, 193, 182, 171, 161, 151, 141, 133, 125, 118, 113, 108, 106, 106, 108, 115, 116, 114, 115, 118, 123, 129, 137, 145, 154, 164, 174, 184, 195, 206, 216, 226, 216, 205, 195, 185, 175, 165, 156, 147, 139, 133, 127, 123, 121, 124, 127, 129, 134, 141, 148, 156, 165, 174, 184, 194, 204, 214, 224, 233, 242, 253, 246, 238, 229, 221, 211, 202, 192, 182, 173, 164, 155, 147, 140, 133, 134, 142, 151, 160, 169, 179, 188, 198, 207, 216, 225, 233, 241, 247, 253, 255, 251, 247, 241, 234, 227, 219, 210, 201, 192, 182, 173, 163, 153, 142, 134, 151, 163, 174, 184, 194, 203, 212, 220, 227, 233, 239, 243, 247, 249, 242, 242, 241, 238, 235, 230, 225, 218, 211, 203, 194, 184, 173, 161, 146, 155, 170, 182, 192, 201, 208, 215, 221, 226, 229, 231, 232, 232, 231, 228, 215, 219, 221, 223, 223, 221, 219, 215, 210, 204, 197, 188, 177, 164, 144, 154, 170, 182, 191, 198, 204, 208, 211, 212, 213, 212, 209, 205, 200, 194 }; const uint8_t coordsY[NUM_PIXELS] { 6, 14, 22, 31, 41, 50, 60, 70, 80, 89, 98, 106, 114, 120, 125, 128, 124, 116, 109, 101, 92, 82, 73, 63, 54, 44, 35, 27, 18, 11, 4, 0, 5, 10, 17, 24, 32, 40, 49, 59, 68, 78, 87, 97, 106, 116, 121, 106, 95, 85, 75, 65, 56, 47, 38, 31, 24, 17, 12, 7, 4, 10, 10, 13, 16, 20, 25, 31, 39, 46, 55, 64, 74, 85, 96, 111, 101, 87, 76, 65, 56, 48, 41, 34, 29, 25, 21, 20, 19, 19, 21, 33, 30, 29, 28, 29, 31, 34, 39, 45, 51, 59, 69, 79, 92, 111, 101, 85, 73, 64, 56, 50, 45, 41, 39, 38, 38, 40, 43, 47, 52, 68, 62, 56, 53, 50, 49, 49, 50, 53, 57, 63, 70, 80, 94, 119, 106, 89, 78, 70, 65, 61, 59, 59, 60, 62, 66, 71, 77, 84, 92, 119, 109, 100, 92, 85, 80, 75, 72, 70, 70, 71, 74, 79, 87, 99, 114, 97, 88, 83, 81, 80, 81, 84, 88, 94, 100, 108, 116, 126, 136, 163, 152, 142, 132, 123, 114, 107, 101, 96, 93, 91, 91, 93, 98, 108, 108, 102, 101, 101, 104, 108, 114, 120, 128, 137, 146, 157, 167, 178, 190, 203, 192, 181, 170, 160, 150, 141, 133, 126, 119, 115, 111, 110, 111, 118, 119, 118, 120, 124, 130, 136, 144, 153, 162, 172, 182, 193, 203, 214, 224, 232, 223, 213, 202, 192, 182, 172, 163, 154, 146, 139, 132, 128, 125, 126, 129, 133, 139, 146, 154, 162, 172, 181, 191, 201, 210, 220, 229, 238, 246, 255, 249, 242, 234, 225, 216, 207, 197, 188, 178, 169, 160, 151, 143, 136, 135, 145, 155, 164, 174, 183, 193, 202, 211, 220, 228, 236, 243, 249, 254, 253, 250, 246, 242, 236, 229, 222, 213, 205, 196, 186, 176, 166, 155, 143, 133, 153, 166, 177, 187, 196, 205, 214, 221, 228, 234, 238, 242, 245, 246, 246, 236, 237, 237, 236, 233, 229, 225, 219, 212, 204, 195, 186, 175, 162, 146, 156, 171, 182, 192, 201, 208, 214, 220, 223, 226, 228, 228, 227, 224, 221, 207, 211, 215, 217, 218, 218, 216, 213, 209, 203, 196, 187, 177, 164, 142, 153, 170, 181, 190, 196, 201, 205, 207, 208, 207, 205, 202, 197, 191, 184, 159, 168, 176, 182, 188, 192, 195, 197, 197, 196, 193, 189, 182, 173, 160, 146, 164, 173, 180, 184, 186, 186, 185, 183, 179, 174, 167, 160, 151, 142, 114, 125, 135, 144, 152, 159, 165, 170, 173, 175, 176, 174, 171, 164, 153, 136, 154, 161, 164, 165, 164, 162, 157, 152, 145, 138, 129, 119, 109, 98, 72, 83, 94, 105, 114, 124, 132, 139, 145, 150, 153, 155, 155, 152, 143, 142, 146, 146, 143, 139, 134, 127, 119, 110, 101, 91, 81, 70, 59, 48, 37, 48, 58, 69, 79, 89, 99, 108, 116, 123, 129, 134, 137, 138, 134, 132, 130, 126, 121, 114, 106, 98, 88, 79, 69, 59, 48, 38, 29, 19 }; const uint8_t angles[NUM_PIXELS] { 205, 208, 211, 215, 218, 221, 225, 228, 231, 235, 238, 242, 245, 248, 252, 255, 246, 243, 239, 236, 233, 229, 226, 223, 219, 216, 213, 209, 206, 203, 199, 190, 194, 197, 200, 204, 207, 211, 214, 217, 221, 224, 227, 231, 234, 237, 232, 229, 225, 222, 219, 215, 212, 208, 205, 202, 198, 195, 192, 188, 185, 176, 180, 183, 186, 190, 193, 196, 200, 203, 206, 210, 213, 216, 220, 223, 214, 211, 208, 204, 201, 198, 194, 191, 188, 184, 181, 177, 174, 171, 167, 162, 165, 169, 172, 175, 179, 182, 185, 189, 192, 196, 199, 202, 206, 209, 200, 197, 193, 190, 187, 183, 180, 177, 173, 170, 167, 163, 160, 157, 153, 148, 151, 154, 158, 161, 165, 168, 171, 175, 178, 181, 185, 188, 191, 195, 186, 183, 179, 176, 173, 169, 166, 162, 159, 156, 152, 149, 146, 142, 139, 130, 133, 137, 140, 144, 147, 150, 154, 157, 160, 164, 167, 170, 174, 177, 172, 168, 165, 162, 158, 155, 152, 148, 145, 141, 138, 135, 131, 128, 125, 116, 119, 123, 126, 129, 133, 136, 139, 143, 146, 149, 153, 156, 160, 163, 154, 151, 147, 144, 141, 137, 134, 131, 127, 124, 121, 117, 114, 110, 107, 102, 105, 108, 112, 115, 118, 122, 125, 129, 132, 135, 139, 142, 145, 149, 140, 137, 133, 130, 126, 123, 120, 116, 113, 110, 106, 103, 100, 96, 93, 87, 91, 94, 98, 101, 104, 108, 111, 114, 118, 121, 124, 128, 131, 134, 126, 122, 119, 116, 112, 109, 106, 102, 99, 95, 92, 89, 85, 82, 79, 70, 73, 77, 80, 83, 87, 90, 93, 97, 100, 103, 107, 110, 114, 117, 111, 108, 105, 101, 98, 95, 91, 88, 85, 81, 78, 74, 71, 68, 64, 56, 59, 62, 66, 69, 72, 76, 79, 82, 86, 89, 93, 96, 99, 103, 97, 94, 90, 87, 84, 80, 77, 74, 70, 67, 64, 60, 57, 54, 50, 47, 41, 45, 48, 51, 55, 58, 62, 65, 68, 72, 75, 78, 82, 85, 88, 80, 76, 73, 70, 66, 63, 59, 56, 53, 49, 46, 43, 39, 36, 33, 27, 31, 34, 37, 41, 44, 47, 51, 54, 57, 61, 64, 67, 71, 74, 65, 62, 59, 55, 52, 49, 45, 42, 39, 35, 32, 28, 25, 22, 18, 10, 13, 16, 20, 23, 26, 30, 33, 36, 40, 43, 47, 50, 53, 57, 51, 48, 44, 41, 38, 34, 31, 28, 24, 21, 18, 14, 11, 8, 4, 251, 254, 2, 5, 9, 12, 16, 19, 22, 26, 29, 32, 36, 39, 42, 37, 34, 30, 27, 24, 20, 17, 13, 10, 7, 3, 0, 252, 249, 245, 236, 240, 243, 247, 250, 253, 1, 5, 8, 11, 15, 18, 21, 25, 28, 19, 16, 13, 9, 6, 3, 255, 251, 248, 244, 241, 238, 234, 231, 228, 222, 226, 229, 232, 236, 239, 242, 246, 249, 252, 0, 4, 7, 11, 14, 5, 2, 254, 250, 247, 244, 240, 237, 234, 230, 227, 223, 220, 217, 213 }; - static const uint16_t (&radiusProxy)[NUM_PIXELS] = physicalToFibonacci; - static const uint8_t RADII_SCALE_DIVISOR { 2 }; - static const uint8_t RADII_SCALE_MULTIPLIER { 1 }; + const uint8_t radius[NUM_PIXELS] { 255, 238, 221, 204, 187, 170, 153, 136, 119, 102, 85, 68, 51, 34, 17, 0, 6, 23, 40, 57, 74, 91, 108, 125, 142, 159, 176, 193, 210, 227, 244, 251, 234, 217, 200, 183, 166, 149, 132, 115, 98, 81, 64, 47, 30, 13, 2, 19, 36, 53, 70, 87, 104, 121, 138, 155, 172, 189, 206, 223, 240, 247, 230, 213, 196, 179, 162, 145, 128, 111, 94, 77, 60, 43, 26, 9, 15, 32, 49, 66, 83, 100, 117, 134, 151, 168, 185, 202, 219, 236, 253, 243, 226, 209, 192, 175, 158, 141, 124, 107, 90, 73, 56, 39, 22, 5, 11, 28, 45, 62, 79, 96, 113, 130, 147, 164, 181, 198, 215, 232, 249, 239, 222, 205, 188, 171, 154, 137, 120, 103, 86, 69, 52, 35, 18, 1, 7, 24, 41, 58, 75, 92, 109, 126, 143, 160, 177, 194, 211, 228, 245, 252, 235, 218, 201, 184, 167, 150, 133, 116, 99, 82, 65, 48, 31, 14, 3, 20, 37, 54, 71, 88, 105, 122, 139, 156, 173, 190, 207, 224, 241, 248, 231, 214, 197, 180, 163, 146, 129, 112, 95, 78, 61, 44, 27, 10, 16, 33, 50, 67, 84, 101, 118, 135, 152, 169, 186, 203, 220, 237, 254, 244, 227, 210, 193, 176, 159, 142, 125, 108, 91, 74, 57, 40, 23, 6, 12, 29, 46, 63, 80, 97, 114, 131, 148, 165, 182, 199, 216, 233, 250, 240, 223, 206, 189, 172, 155, 138, 121, 104, 87, 70, 53, 36, 19, 2, 8, 25, 42, 59, 76, 93, 110, 127, 144, 161, 178, 195, 212, 229, 246, 253, 236, 219, 202, 185, 168, 151, 134, 117, 100, 83, 66, 49, 32, 15, 4, 21, 38, 55, 72, 89, 106, 123, 140, 157, 174, 191, 208, 225, 242, 249, 232, 215, 198, 181, 164, 147, 130, 113, 96, 79, 62, 45, 28, 11, 0, 17, 34, 51, 68, 85, 102, 119, 136, 153, 170, 187, 204, 221, 238, 255, 245, 228, 211, 194, 177, 160, 143, 126, 109, 92, 75, 58, 41, 24, 7, 13, 30, 47, 64, 81, 98, 115, 132, 149, 166, 183, 200, 217, 234, 251, 241, 224, 207, 190, 173, 156, 139, 122, 105, 88, 71, 54, 37, 20, 3, 9, 26, 43, 60, 77, 94, 111, 128, 145, 162, 179, 196, 213, 230, 247, 254, 237, 220, 203, 186, 169, 152, 135, 118, 101, 84, 67, 50, 33, 16, 5, 22, 39, 56, 73, 90, 107, 124, 141, 158, 175, 192, 209, 226, 243, 250, 233, 216, 199, 182, 165, 148, 131, 114, 97, 80, 63, 46, 29, 12, 1, 18, 35, 52, 69, 86, 103, 120, 137, 154, 171, 188, 205, 222, 239, 246, 229, 212, 195, 178, 161, 144, 127, 110, 93, 76, 59, 42, 25, 8, 14, 31, 48, 65, 82, 99, 116, 133, 150, 167, 184, 201, 218, 235, 252, 242, 225, 208, 191, 174, 157, 140, 123, 106, 89, 72, 55, 38, 21, 4, 10, 27, 44, 61, 78, 95, 112, 129, 146, 163, 180, 197, 214, 231, 248 }; + const uint8_t (&radiusProxy)[NUM_PIXELS] = radius; #elif defined(PRODUCT_FIBONACCI256) const uint8_t physicalToFibonacci[NUM_PIXELS] { 0, 13, 26, 39, 52, 65, 78, 91, 104, 117, 130, 143, 156, 169, 182, 195, 208, 221, 234, 247, 252, 239, 226, 213, 200, 187, 174, 161, 148, 135, 122, 109, 96, 83, 70, 57, 44, 31, 18, 5, 10, 23, 36, 49, 62, 75, 88, 101, 114, 127, 140, 153, 166, 179, 192, 205, 218, 231, 244, 249, 236, 223, 210, 197, 184, 171, 158, 145, 132, 119, 106, 93, 80, 67, 54, 41, 28, 15, 2, 7, 20, 33, 46, 59, 72, 85, 98, 111, 124, 137, 150, 163, 176, 189, 202, 215, 228, 241, 254, 246, 233, 220, 207, 194, 181, 168, 155, 142, 129, 116, 103, 90, 77, 64, 51, 38, 25, 12, 4, 17, 30, 43, 56, 69, 82, 95, 108, 121, 134, 147, 160, 173, 186, 199, 212, 225, 238, 251, 243, 230, 217, 204, 191, 178, 165, 152, 139, 126, 113, 100, 87, 74, 61, 48, 35, 22, 9, 1, 14, 27, 40, 53, 66, 79, 92, 105, 118, 131, 144, 157, 170, 183, 196, 209, 222, 235, 248, 253, 240, 227, 214, 201, 188, 175, 162, 149, 136, 123, 110, 97, 84, 71, 58, 45, 32, 19, 6, 11, 24, 37, 50, 63, 76, 89, 102, 115, 128, 141, 154, 167, 180, 193, 206, 219, 232, 245, 250, 237, 224, 211, 198, 185, 172, 159, 146, 133, 120, 107, 94, 81, 68, 55, 42, 29, 16, 3, 8, 21, 34, 47, 60, 73, 86, 99, 112, 125, 138, 151, 164, 177, 190, 203, 216, 229, 242, 255 }; const uint8_t fibonacciToPhysical[NUM_PIXELS] { 0, 157, 78, 235, 118, 39, 196, 79, 236, 156, 40, 197, 117, 1, 158, 77, 234, 119, 38, 195, 80, 237, 155, 41, 198, 116, 2, 159, 76, 233, 120, 37, 194, 81, 238, 154, 42, 199, 115, 3, 160, 75, 232, 121, 36, 193, 82, 239, 153, 43, 200, 114, 4, 161, 74, 231, 122, 35, 192, 83, 240, 152, 44, 201, 113, 5, 162, 73, 230, 123, 34, 191, 84, 241, 151, 45, 202, 112, 6, 163, 72, 229, 124, 33, 190, 85, 242, 150, 46, 203, 111, 7, 164, 71, 228, 125, 32, 189, 86, 243, 149, 47, 204, 110, 8, 165, 70, 227, 126, 31, 188, 87, 244, 148, 48, 205, 109, 9, 166, 69, 226, 127, 30, 187, 88, 245, 147, 49, 206, 108, 10, 167, 68, 225, 128, 29, 186, 89, 246, 146, 50, 207, 107, 11, 168, 67, 224, 129, 28, 185, 90, 247, 145, 51, 208, 106, 12, 169, 66, 223, 130, 27, 184, 91, 248, 144, 52, 209, 105, 13, 170, 65, 222, 131, 26, 183, 92, 249, 143, 53, 210, 104, 14, 171, 64, 221, 132, 25, 182, 93, 250, 142, 54, 211, 103, 15, 172, 63, 220, 133, 24, 181, 94, 251, 141, 55, 212, 102, 16, 173, 62, 219, 134, 23, 180, 95, 252, 140, 56, 213, 101, 17, 174, 61, 218, 135, 22, 179, 96, 253, 139, 57, 214, 100, 18, 175, 60, 217, 136, 21, 178, 97, 254, 138, 58, 215, 99, 19, 176, 59, 216, 137, 20, 177, 98, 255 }; const uint8_t coordsX[NUM_PIXELS] { 133, 156, 165, 168, 165, 158, 147, 132, 114, 95, 76, 57, 41, 28, 19, 15, 17, 24, 37, 56, 123, 96, 73, 53, 38, 28, 24, 25, 31, 41, 55, 71, 89, 106, 122, 136, 146, 152, 152, 143, 138, 136, 128, 115, 101, 85, 70, 56, 44, 37, 33, 34, 41, 53, 69, 90, 114, 140, 167, 226, 204, 180, 154, 129, 106, 85, 67, 54, 46, 43, 44, 50, 60, 72, 86, 100, 113, 123, 128, 117, 104, 90, 78, 67, 59, 54, 54, 59, 68, 82, 100, 121, 143, 167, 191, 212, 231, 246, 255, 251, 251, 245, 233, 218, 199, 178, 156, 134, 114, 96, 82, 73, 67, 66, 70, 78, 89, 103, 111, 94, 84, 80, 81, 86, 96, 109, 126, 145, 165, 185, 204, 220, 233, 241, 244, 241, 232, 217, 179, 201, 217, 229, 235, 235, 230, 220, 207, 190, 172, 154, 136, 121, 108, 99, 95, 96, 104, 120, 110, 111, 118, 130, 144, 160, 176, 192, 206, 217, 224, 227, 224, 216, 202, 184, 162, 137, 110, 44, 68, 94, 120, 145, 168, 187, 202, 212, 216, 216, 212, 203, 191, 177, 162, 148, 135, 126, 122, 136, 147, 161, 174, 186, 197, 204, 206, 205, 198, 187, 172, 152, 130, 106, 81, 58, 36, 17, 0, 5, 15, 30, 49, 71, 93, 116, 138, 157, 173, 185, 192, 195, 193, 187, 178, 166, 152, 137, 149, 164, 175, 180, 182, 179, 171, 159, 143, 125, 105, 83, 63, 44, 28, 16, 9, 7, 12, 23 }; const uint8_t coordsY[NUM_PIXELS] { 126, 120, 109, 96, 82, 69, 57, 49, 45, 45, 50, 59, 74, 92, 114, 138, 163, 188, 211, 231, 255, 248, 235, 218, 198, 175, 152, 129, 107, 89, 74, 63, 57, 56, 59, 66, 76, 88, 102, 116, 103, 88, 77, 71, 68, 70, 77, 88, 103, 121, 141, 163, 184, 205, 222, 236, 245, 249, 247, 208, 224, 235, 241, 240, 234, 223, 209, 191, 172, 152, 132, 115, 101, 90, 84, 82, 86, 95, 114, 107, 98, 98, 103, 112, 126, 142, 159, 177, 195, 210, 222, 230, 233, 230, 223, 209, 191, 168, 142, 98, 125, 151, 174, 194, 209, 219, 223, 223, 218, 208, 195, 180, 164, 148, 134, 122, 114, 112, 123, 128, 138, 151, 165, 180, 193, 203, 211, 214, 212, 206, 194, 178, 158, 134, 109, 83, 58, 35, 11, 28, 48, 71, 95, 120, 142, 163, 179, 192, 200, 203, 202, 196, 187, 175, 162, 148, 136, 133, 152, 166, 177, 186, 190, 191, 187, 178, 165, 148, 128, 107, 84, 62, 41, 24, 11, 2, 0, 28, 16, 9, 8, 13, 23, 37, 55, 75, 96, 116, 135, 151, 164, 173, 177, 177, 172, 162, 146, 153, 161, 163, 160, 152, 139, 124, 106, 87, 69, 51, 36, 25, 18, 16, 20, 29, 44, 64, 133, 106, 81, 60, 44, 32, 26, 25, 29, 38, 50, 65, 82, 99, 115, 129, 140, 147, 148, 138, 134, 131, 122, 110, 95, 80, 65, 52, 42, 36, 34, 37, 45, 59, 77, 98, 123, 149, 176, 202 }; const uint8_t angles[NUM_PIXELS] { 0, 247, 238, 229, 220, 211, 203, 194, 185, 176, 167, 159, 150, 141, 132, 123, 115, 106, 97, 88, 65, 74, 83, 92, 100, 109, 118, 127, 136, 144, 153, 162, 171, 180, 188, 197, 206, 215, 224, 232, 209, 201, 192, 183, 174, 165, 157, 148, 139, 130, 121, 113, 104, 95, 86, 77, 69, 60, 51, 28, 37, 46, 54, 63, 72, 81, 90, 98, 107, 116, 125, 134, 142, 151, 160, 169, 178, 186, 195, 172, 163, 155, 146, 137, 128, 119, 111, 102, 93, 84, 75, 67, 58, 49, 40, 31, 23, 14, 5, 246, 255, 8, 17, 26, 35, 44, 52, 61, 70, 79, 88, 96, 105, 114, 123, 132, 140, 149, 135, 126, 117, 108, 100, 91, 82, 73, 64, 56, 47, 38, 29, 20, 12, 3, 250, 241, 232, 223, 209, 218, 227, 235, 244, 253, 6, 15, 24, 33, 41, 50, 59, 68, 77, 85, 94, 103, 112, 98, 89, 80, 71, 62, 54, 45, 36, 27, 18, 10, 1, 247, 239, 230, 221, 212, 203, 195, 186, 163, 172, 180, 189, 198, 207, 216, 224, 233, 242, 251, 4, 13, 22, 31, 39, 48, 57, 66, 75, 52, 43, 34, 25, 16, 8, 254, 245, 237, 228, 219, 210, 201, 193, 184, 175, 166, 157, 149, 126, 134, 143, 152, 161, 170, 178, 187, 196, 205, 214, 222, 231, 240, 249, 2, 11, 20, 28, 37, 14, 5, 252, 243, 235, 226, 217, 208, 199, 191, 182, 173, 164, 155, 147, 138, 129, 120, 111, 103 }; - static const uint8_t (&radiusProxy)[NUM_PIXELS] = physicalToFibonacci; - static const uint8_t RADII_SCALE_DIVISOR { 1 }; - static const uint8_t RADII_SCALE_MULTIPLIER { 1 }; + const uint8_t (&radiusProxy)[NUM_PIXELS] = physicalToFibonacci; #elif defined(PRODUCT_FIBONACCI128) const uint8_t physicalToFibonacci[NUM_PIXELS] { 0, 13, 26, 39, 52, 65, 78, 91, 104, 117, 122, 109, 96, 83, 70, 57, 44, 31, 18, 5, 10, 23, 36, 49, 62, 75, 88, 101, 114, 127, 119, 106, 93, 80, 67, 54, 41, 28, 15, 2, 7, 20, 33, 46, 59, 72, 85, 98, 111, 124, 116, 103, 90, 77, 64, 51, 38, 25, 12, 4, 17, 30, 43, 56, 69, 82, 95, 108, 121, 126, 113, 100, 87, 74, 61, 48, 35, 22, 9, 1, 14, 27, 40, 53, 66, 79, 92, 105, 118, 123, 110, 97, 84, 71, 58, 45, 32, 19, 6, 11, 24, 37, 50, 63, 76, 89, 102, 115, 120, 107, 94, 81, 68, 55, 42, 29, 16, 3, 8, 21, 34, 47, 60, 73, 86, 99, 112, 125 }; const uint8_t fibonacciToPhysical[NUM_PIXELS] { 0, 79, 39, 117, 59, 19, 98, 40, 118, 78, 20, 99, 58, 1, 80, 38, 116, 60, 18, 97, 41, 119, 77, 21, 100, 57, 2, 81, 37, 115, 61, 17, 96, 42, 120, 76, 22, 101, 56, 3, 82, 36, 114, 62, 16, 95, 43, 121, 75, 23, 102, 55, 4, 83, 35, 113, 63, 15, 94, 44, 122, 74, 24, 103, 54, 5, 84, 34, 112, 64, 14, 93, 45, 123, 73, 25, 104, 53, 6, 85, 33, 111, 65, 13, 92, 46, 124, 72, 26, 105, 52, 7, 86, 32, 110, 66, 12, 91, 47, 125, 71, 27, 106, 51, 8, 87, 31, 109, 67, 11, 90, 48, 126, 70, 28, 107, 50, 9, 88, 30, 108, 68, 10, 89, 49, 127, 69, 29 }; const uint8_t coordsX[NUM_PIXELS] { 137, 170, 182, 186, 182, 172, 156, 135, 110, 83, 26, 49, 74, 99, 121, 141, 155, 164, 164, 151, 145, 141, 129, 112, 91, 69, 47, 27, 11, 0, 9, 11, 19, 33, 50, 70, 90, 108, 123, 130, 114, 96, 77, 58, 43, 32, 25, 25, 32, 45, 85, 65, 51, 43, 42, 47, 58, 74, 94, 105, 81, 68, 62, 63, 70, 84, 103, 127, 154, 218, 193, 167, 142, 119, 101, 89, 83, 84, 96, 118, 104, 106, 116, 132, 152, 175, 198, 221, 241, 255, 248, 236, 219, 199, 178, 158, 140, 126, 121, 140, 157, 176, 195, 213, 227, 237, 241, 239, 193, 210, 221, 225, 222, 214, 201, 184, 164, 142, 160, 181, 196, 204, 206, 202, 191, 174, 152, 125 }; const uint8_t coordsY[NUM_PIXELS] { 130, 121, 105, 86, 66, 47, 31, 19, 13, 13, 55, 39, 30, 28, 33, 43, 57, 75, 95, 115, 96, 75, 60, 50, 46, 49, 59, 74, 96, 122, 166, 139, 114, 93, 78, 69, 67, 72, 85, 112, 102, 90, 89, 96, 110, 129, 152, 177, 203, 227, 247, 228, 207, 184, 161, 140, 123, 112, 109, 126, 132, 146, 165, 185, 206, 225, 240, 251, 255, 224, 235, 240, 237, 229, 216, 199, 181, 161, 143, 139, 166, 186, 202, 215, 221, 222, 216, 204, 185, 115, 142, 166, 184, 197, 203, 202, 195, 181, 158, 167, 180, 182, 178, 166, 148, 126, 101, 74, 21, 42, 66, 91, 114, 134, 150, 159, 160, 147, 141, 137, 124, 106, 85, 63, 42, 24, 9, 0 }; const uint8_t angles[NUM_PIXELS] { 0, 247, 239, 230, 221, 212, 203, 194, 186, 177, 154, 163, 171, 180, 189, 198, 207, 216, 224, 233, 210, 201, 192, 184, 175, 166, 157, 148, 139, 131, 116, 125, 134, 143, 152, 160, 169, 178, 187, 196, 173, 164, 155, 146, 137, 129, 120, 111, 102, 93, 79, 88, 97, 105, 114, 123, 132, 141, 150, 135, 126, 118, 109, 100, 91, 82, 73, 65, 56, 33, 42, 50, 59, 68, 77, 86, 95, 103, 112, 98, 89, 80, 71, 63, 54, 45, 36, 27, 18, 252, 4, 13, 22, 31, 39, 48, 57, 66, 75, 52, 43, 34, 25, 16, 8, 255, 246, 237, 214, 223, 232, 241, 250, 2, 11, 20, 29, 37, 14, 5, 253, 244, 235, 226, 218, 209, 200, 191 }; - static const uint8_t (&radiusProxy)[NUM_PIXELS] = physicalToFibonacci; - static const uint8_t RADII_SCALE_DIVISOR { 1 }; - static const uint8_t RADII_SCALE_MULTIPLIER { 2 }; + const uint8_t radius[NUM_PIXELS] { 0, 26, 52, 78, 104, 131, 157, 183, 209, 235, 245, 219, 193, 167, 141, 114, 88, 62, 36, 10, 20, 46, 72, 98, 124, 151, 177, 203, 229, 255, 239, 213, 187, 161, 135, 108, 82, 56, 30, 4, 14, 40, 66, 92, 118, 145, 171, 197, 223, 249, 233, 207, 181, 155, 129, 102, 76, 50, 24, 8, 34, 60, 86, 112, 139, 165, 191, 217, 243, 253, 227, 201, 175, 149, 122, 96, 70, 44, 18, 2, 28, 54, 80, 106, 133, 159, 185, 211, 237, 247, 221, 195, 169, 143, 116, 90, 64, 38, 12, 22, 48, 74, 100, 126, 153, 179, 205, 231, 241, 215, 189, 163, 137, 110, 84, 58, 32, 6, 16, 42, 68, 94, 120, 147, 173, 199, 225, 251 }; + const uint8_t (&radiusProxy)[NUM_PIXELS] = radius; #elif defined(PRODUCT_FIBONACCI64_FULL) || defined(PRODUCT_FIBONACCI64_MINI) || defined(PRODUCT_FIBONACCI64_MICRO) || defined(PRODUCT_FIBONACCI64_NANO) const uint8_t physicalToFibonacci[NUM_PIXELS] { 0, 13, 26, 39, 52, 57, 44, 31, 18, 5, 10, 23, 36, 49, 62, 54, 41, 28, 15, 2, 7, 20, 33, 46, 59, 51, 38, 25, 12, 4, 17, 30, 43, 56, 61, 48, 35, 22, 9, 1, 14, 27, 40, 53, 58, 45, 32, 19, 6, 11, 24, 37, 50, 63, 55, 42, 29, 16, 3, 8, 21, 34, 47, 60 }; const uint8_t fibonacciToPhysical[NUM_PIXELS] { 0, 39, 19, 58, 29, 9, 48, 20, 59, 38, 10, 49, 28, 1, 40, 18, 57, 30, 8, 47, 21, 60, 37, 11, 50, 27, 2, 41, 17, 56, 31, 7, 46, 22, 61, 36, 12, 51, 26, 3, 42, 16, 55, 32, 6, 45, 23, 62, 35, 13, 52, 25, 4, 43, 15, 54, 33, 5, 44, 24, 63, 34, 14, 53 }; const uint8_t coordsX[NUM_PIXELS] { 140, 189, 208, 214, 208, 146, 168, 180, 180, 162, 152, 146, 129, 103, 72, 40, 70, 97, 120, 131, 107, 79, 50, 23, 0, 7, 23, 46, 76, 93, 57, 37, 28, 29, 87, 68, 59, 62, 80, 113, 91, 94, 109, 133, 202, 172, 145, 125, 117, 145, 170, 198, 227, 253, 255, 235, 210, 181, 148, 175, 207, 228, 240, 244 }; const uint8_t coordsY[NUM_PIXELS] { 128, 114, 91, 63, 34, 0, 21, 48, 76, 106, 78, 47, 25, 11, 5, 38, 35, 42, 61, 101, 87, 69, 68, 78, 98, 143, 118, 102, 98, 122, 131, 152, 179, 209, 255, 230, 202, 174, 148, 142, 181, 210, 235, 252, 235, 234, 224, 203, 170, 183, 201, 205, 198, 181, 134, 157, 171, 173, 153, 145, 138, 120, 93, 63 }; const uint8_t angles[NUM_PIXELS] { 0, 249, 241, 232, 223, 200, 208, 217, 226, 235, 212, 203, 194, 185, 176, 162, 171, 180, 188, 197, 174, 165, 156, 147, 139, 124, 133, 142, 151, 136, 128, 119, 110, 101, 78, 86, 95, 104, 113, 99, 90, 81, 72, 63, 40, 49, 58, 67, 75, 52, 43, 34, 25, 17, 2, 11, 20, 29, 38, 14, 6, 255, 246, 237 }; - static const uint8_t (&radiusProxy)[NUM_PIXELS] = physicalToFibonacci; - static const uint8_t RADII_SCALE_DIVISOR { 1 }; - static const uint8_t RADII_SCALE_MULTIPLIER { 4 }; + const uint8_t radius[NUM_PIXELS] { 0, 53, 105, 158, 210, 231, 178, 125, 73, 20, 40, 93, 146, 198, 251, 219, 166, 113, 61, 8, 28, 81, 134, 186, 239, 206, 154, 101, 49, 16, 69, 121, 174, 227, 247, 194, 142, 89, 36, 4, 57, 109, 162, 215, 235, 182, 130, 77, 24, 45, 97, 150, 202, 255, 223, 170, 117, 65, 12, 32, 85, 138, 190, 243 }; + const uint8_t (&radiusProxy)[NUM_PIXELS] = radius; #elif defined(PRODUCT_FIBONACCI32) const uint8_t physicalToFibonacci[NUM_PIXELS] { 0, 13, 26, 31, 18, 5, 10, 23, 28, 15, 2, 7, 20, 33, 25, 12, 4, 17, 30, 22, 9, 1, 14, 27, 32, 19, 6, 11, 24, 29, 16, 3, 8, 21 }; const uint8_t fibonacciToPhysical[NUM_PIXELS] { 0, 21, 10, 31, 16, 5, 26, 11, 32, 20, 6, 27, 15, 1, 22, 9, 30, 17, 4, 25, 12, 33, 19, 7, 28, 14, 2, 23, 8, 29, 18, 3, 24, 13 }; const uint8_t coordsX[NUM_PIXELS] { 152, 224, 252, 210, 211, 184, 169, 161, 89, 121, 138, 102, 61, 19, 13, 57, 82, 29, 0, 36, 63, 111, 79, 83, 158, 129, 118, 160, 196, 255, 212, 163, 203, 250 }; const uint8_t coordsY[NUM_PIXELS] { 120, 101, 69, 7, 48, 90, 50, 7, 0, 27, 83, 62, 37, 35, 84, 78, 112, 125, 154, 185, 149, 140, 195, 236, 255, 226, 179, 198, 223, 181, 183, 156, 144, 135 }; const uint8_t angles[NUM_PIXELS] { 255, 246, 237, 214, 223, 232, 208, 199, 176, 185, 193, 170, 161, 152, 138, 147, 132, 123, 114, 100, 108, 94, 85, 76, 53, 62, 70, 47, 38, 15, 23, 32, 9, 0 }; - static const uint8_t (&radiusProxy)[NUM_PIXELS] = physicalToFibonacci; - static const uint8_t RADII_SCALE_DIVISOR { 1 }; - static const uint8_t RADII_SCALE_MULTIPLIER { 8 }; + const uint8_t radius[NUM_PIXELS] { 0, 100, 201, 240, 139, 39, 77, 178, 216, 116, 15, 54, 155, 255, 193, 93, 31, 131, 232, 170, 70, 8, 108, 209, 247, 147, 46, 85, 185, 224, 124, 23, 62, 162 }; + const uint8_t (&radiusProxy)[NUM_PIXELS] = radius; #elif defined(PRODUCT_KRAKEN64) const uint8_t coordsX[NUM_PIXELS] { 151, 188, 199, 199, 171, 147, 131, 119, 124, 179, 200, 217, 237, 249, 242, 234, 255, 148, 175, 177, 150, 143, 171, 153, 155, 106, 110, 102, 75, 86, 106, 108, 88, 90, 84, 78, 107, 98, 121, 128, 80, 69, 134, 159, 192, 202, 195, 218, 61, 32, 18, 26, 39, 20, 3, 0, 48, 52, 61, 54, 33, 20, 7, 8 }; const uint8_t coordsY[NUM_PIXELS] { 190, 204, 225, 252, 255, 236, 216, 191, 166, 147, 154, 170, 173, 156, 131, 107, 106, 148, 121, 86, 81, 63, 56, 36, 17, 145, 120, 96, 55, 23, 18, 0, 2, 112, 77, 31, 35, 49, 51, 30, 124, 103, 101, 98, 80, 58, 40, 69, 134, 124, 107, 81, 56, 43, 50, 70, 156, 180, 202, 219, 213, 195, 197, 215 }; const uint8_t angles[NUM_PIXELS] { 0, 249, 241, 232, 223, 200, 208, 217, 226, 235, 212, 203, 194, 185, 176, 162, 171, 180, 188, 197, 174, 165, 156, 147, 139, 124, 133, 142, 151, 136, 128, 119, 110, 101, 78, 86, 95, 104, 113, 99, 90, 81, 72, 63, 40, 49, 58, 67, 75, 52, 43, 34, 25, 17, 2, 11, 20, 29, 38, 14, 6, 255, 246, 237 }; const uint8_t body[NUM_PIXELS] { 0, 16, 32, 48, 64, 80, 96, 112, 128, 143, 159, 175, 191, 207, 223, 239, 255, 143, 159, 175, 191, 207, 223, 239, 255, 143, 159, 175, 191, 207, 223, 239, 255, 143, 159, 175, 191, 207, 223, 239, 143, 159, 175, 191, 207, 223, 239, 255, 143, 159, 175, 191, 207, 223, 239, 255, 143, 159, 175, 191, 207, 223, 239, 255 }; static_assert(NUM_PIXELS == ARRAY_SIZE2(body), ""); - static const uint8_t (&radiusProxy)[NUM_PIXELS] = body; - static const uint8_t RADII_SCALE_DIVISOR { 1 }; // body[] values are already in range [0..255] - static const uint8_t RADII_SCALE_MULTIPLIER { 1 }; // body[] values are already in range [0..255] + const uint8_t (&radiusProxy)[NUM_PIXELS] = body; // For reference purposes... // const uint8_t head[9] { 0, 1, 2, 3, 4, 5, 6, 7, 8 }; // const uint8_t tentacle0[8] { 9, 10, 11, 12, 13, 14, 15, 16 }; @@ -122,9 +114,7 @@ const uint8_t angles[NUM_PIXELS] { 179, 192, 176, 175, 195, 212, 225, 210, 188, 158, 146, 141, 139, 211, 226, 187, 209, 233, 95, 85, 89, 226, 243, 244, 246, 1, 4, 19, 58, 19, 14, 23, 27, 43, 33, 44, 63, 44, 62, 57, 57, 71, 86, 85, 91, 31, 65, 79, 77, 90, 255, 15, 30, 43, 55, 61, 61, 41, 22, 27, 45, 54, 44, 40 }; const uint8_t radii[NUM_PIXELS] { 206, 185, 168, 135, 150, 185, 178, 137, 107, 83, 122, 172, 213, 101, 134, 64, 32, 3, 0, 65, 137, 80, 172, 116, 59, 191, 126, 31, 28, 93, 186, 210, 144, 95, 185, 144, 99, 197, 150, 195, 241, 175, 141, 101, 57, 43, 77, 132, 204, 182, 196, 215, 236, 255, 253, 215, 153, 97, 118, 167, 210, 188, 137, 166 }; static_assert(NUM_PIXELS == ARRAY_SIZE2(radii), ""); - static const uint8_t (&radiusProxy)[NUM_PIXELS] = radii; - static const uint8_t RADII_SCALE_DIVISOR { 1 }; // radii[] values are already in range [0..255] - static const uint8_t RADII_SCALE_MULTIPLIER { 1 }; // radii[] values are already in range [0..255] + const uint8_t (&radiusProxy)[NUM_PIXELS] = radii; #elif defined(PRODUCT_1628_RINGS) // Yes, this is 1628 pixels ... all driven by one ESP8266 // 20 concentric rings of pixel goodness! @@ -148,9 +138,7 @@ 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 204, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }; - static const uint8_t (&radiusProxy)[NUM_PIXELS] = radii; - static const uint8_t RADII_SCALE_DIVISOR { 1 }; // radii[] values are already in range [0..255] - static const uint8_t RADII_SCALE_MULTIPLIER { 1 }; // radii[] values are already in range [0..255] + const uint8_t (&radiusProxy)[NUM_PIXELS] = radii; #else #error "Unknown / Unsupported product ... no mappings defined" @@ -161,12 +149,10 @@ static_assert(NUM_PIXELS == ARRAY_SIZE2(fibonacciToPhysical), ""); #endif -// What is HAS_RADIUS_PROXY? It could be the actual radius, or it could be something +// What is radiusProxy? It could be the actual radius, or it could be something // that is used "in place of" the radius during effects processing. // Use reference to original array; avoids repeating preprocessor checks throughout the code.... -static_assert(RADII_SCALE_DIVISOR >= 1, ""); -static_assert(RADII_SCALE_MULTIPLIER >= 1, ""); -#define HAS_RADIUS_PROXY 1 // functions below wrapped by this ... leave defined for now + static_assert(HAS_COORDINATE_MAP, ""); static_assert(NUM_PIXELS == ARRAY_SIZE2(coordsX), ""); static_assert(NUM_PIXELS == ARRAY_SIZE2(coordsY), ""); @@ -203,7 +189,8 @@ void drawSpiralLine(uint8_t angle, int step, CRGB color) } #endif -#if HAS_RADIUS_PROXY // setPixelAR() uses radiusProxy[] +#if HAS_COORDINATE_MAP + // given an angle and radius (and delta for both), set pixels that fall inside that range void setPixelAR(uint8_t angle, uint8_t dAngle, uint8_t radius, uint8_t dRadius, CRGB color) { @@ -226,9 +213,7 @@ void setPixelAR(uint8_t angle, uint8_t dAngle, uint8_t radius, uint8_t dRadius, } } } -#endif -#if HAS_RADIUS_PROXY // andPixelAR() uses radiusProxy[] // given an angle and radius (and delta for both), add color to pixels that fall inside that range void andPixelAR(uint8_t angle, uint8_t dAngle, uint8_t startRadius, uint8_t endRadius, CRGB color) { @@ -247,9 +232,7 @@ void andPixelAR(uint8_t angle, uint8_t dAngle, uint8_t startRadius, uint8_t endR } } } -#endif -#if HAS_RADIUS_PROXY // antialiasPixelAR() uses angles[] and radiusProxy[] // given an angle and radius (and delta for both), set pixels that fall inside that range, // fading the color from full-color at center, to off (black) at the outer edges. void antialiasPixelAR(uint8_t angle, uint8_t dAngle, uint8_t startRadius, uint8_t endRadius, CRGB color, CRGB leds[], int _NUM_PIXELS) @@ -284,13 +267,11 @@ void antialiasPixelAR(uint8_t angle, uint8_t dAngle, uint8_t startRadius, uint8_ } } } -#endif // TODO - anglePalette() from Fib32 sets `hues = 256 / NUM_PIXELS' ... which is ZERO(!) // The other similar functions are hard-coded to `hues = 1` even on Fib32. // Likely a bug in Fib32 branch for this one function? // Check if other branches did similar, or set to hard-coded value of 1? -#if HAS_COORDINATE_MAP // anglePalette() uses angles[] void anglePalette() { uint16_t hues = 1; @@ -300,15 +281,13 @@ void anglePalette() { leds[i] = ColorFromPalette(palettes[currentPaletteIndex], beat8(speed) - (x * hues)); } } -#endif -#if HAS_RADIUS_PROXY // radiusPalette() uses radiusProxy[] void radiusPalette() { uint16_t hues = 1; for (uint16_t i = 0; i < NUM_PIXELS; i++) { - unsigned tmp = ((unsigned)(radiusProxy[i] * RADII_SCALE_MULTIPLIER)) / RADII_SCALE_DIVISOR; + unsigned tmp = ((unsigned)(radiusProxy[i])); #if ((NUM_PIXELS & (NUM_PIXELS-1)) == 0) // Power-of-two, so no need to check uint8_t r = tmp; #else @@ -317,9 +296,7 @@ void radiusPalette() { leds[i] = ColorFromPalette(palettes[currentPaletteIndex], beat8(speed) - (r * hues)); } } -#endif -#if HAS_COORDINATE_MAP // xPalette() uses coordsX[] void xPalette() { uint16_t hues = 1; @@ -329,9 +306,7 @@ void xPalette() { leds[i] = ColorFromPalette(palettes[currentPaletteIndex], beat8(speed) - (x * hues)); } } -#endif -#if HAS_COORDINATE_MAP // yPalette() uses coordsY[] void yPalette() { uint16_t hues = 1; @@ -341,9 +316,7 @@ void yPalette() { leds[i] = ColorFromPalette(palettes[currentPaletteIndex], beat8(speed) - (y * hues)); } } -#endif -#if HAS_COORDINATE_MAP // xyPalette() uses coordsX[] and coordsY[] void xyPalette() { uint16_t hues = 1; @@ -354,9 +327,7 @@ void xyPalette() { leds[i] = ColorFromPalette(palettes[currentPaletteIndex], beat8(speed) - ((x + y) * hues)); } } -#endif -#if HAS_COORDINATE_MAP // angleGradientPalette() uses angles[] void angleGradientPalette() { uint16_t hues = 1; @@ -366,14 +337,12 @@ void angleGradientPalette() { leds[i] = ColorFromPalette(gCurrentPalette, beat8(speed) - (x * hues)); } } -#endif -#if HAS_RADIUS_PROXY // radiusGradientPalette() uses radiusProxy[] void radiusGradientPalette() { uint16_t hues = 1; for (uint16_t i = 0; i < NUM_PIXELS; i++) { - unsigned tmp = ((unsigned)(radiusProxy[i] * RADII_SCALE_MULTIPLIER)) / RADII_SCALE_DIVISOR; + unsigned tmp = (unsigned)radiusProxy[i]; #if ((NUM_PIXELS & (NUM_PIXELS-1)) == 0) // Power-of-two, so no need to check uint8_t r = tmp; #else @@ -383,9 +352,7 @@ void radiusGradientPalette() { leds[i] = ColorFromPalette(gCurrentPalette, beat8(speed) - (r * hues)); } } -#endif -#if HAS_COORDINATE_MAP // xGradientPalette() uses coordsX[] void xGradientPalette() { uint16_t hues = 1; @@ -395,9 +362,7 @@ void xGradientPalette() { leds[i] = ColorFromPalette(gCurrentPalette, beat8(speed) - (x * hues)); } } -#endif -#if HAS_COORDINATE_MAP // yGradientPalette() uses coordsY[] void yGradientPalette() { uint16_t hues = 1; @@ -407,9 +372,7 @@ void yGradientPalette() { leds[i] = ColorFromPalette(gCurrentPalette, beat8(speed) - (y * hues)); } } -#endif -#if HAS_COORDINATE_MAP // xyGradientPalette() uses coordsX[] and coordsY[] void xyGradientPalette() { uint16_t hues = 1; @@ -420,19 +383,29 @@ void xyGradientPalette() { leds[i] = ColorFromPalette(gCurrentPalette, beat8(speed) - ((x + y) * hues)); } } -#endif -#if IS_FIBONACCI // drawAnalogClock() calls antialiasPixelAR(), which requires physicalToFibonacci[] -void drawAnalogClock() { +void radarSweepPalette() { + fadeToBlackBy(leds, NUM_PIXELS, 64); - // TODO: Update to use radiusProxy? For now, just divide 512+ by RADII_SCALE_DIVISOR + uint8_t a = beat8(speed); + uint8_t b = beat88(1); - static_assert((NUM_PIXELS / RADII_SCALE_DIVISOR) <= 256, ""); - static_assert((NUM_PIXELS / RADII_SCALE_DIVISOR) >= 32, "Update to drawAnalogClock() required to support fewer pixels"); + for (uint16_t i = 0; i < NUM_PIXELS; i++) { + uint8_t angle = angles[i]; + + if(abs(angle - a) < 3) { + leds[i] = ColorFromPalette(palettes[currentPaletteIndex], beat8(speed)); + } + if(abs(angle - b) < 3) { + leds[i] = ColorFromPalette(palettes[currentPaletteIndex], beat8(speed) + 85); + } + } +} - const uint8_t hourRadius = (uint8_t)(NUM_PIXELS / RADII_SCALE_DIVISOR / 8u * 3u); // 96 designed for 256 pixels ==> 3/8 - const uint8_t minuteRadius = (uint8_t)(NUM_PIXELS / RADII_SCALE_DIVISOR / 4u * 3u); // 192 designed for 256 pixels ==> 3/4 - const uint8_t secondRadius = (uint8_t)(NUM_PIXELS / RADII_SCALE_DIVISOR - 1); // 255 designed for 256 pixels ==> all pixels +void drawAnalogClock() { + const uint8_t hourRadius = 128; // 128 of 256 radius "units" ==> 1/2 + const uint8_t minuteRadius = 192; // 192 of 256 radius "units" ==> 3/4 + const uint8_t secondRadius = 255; // 255 of 256 radius "units" ==> 1/1 const uint8_t hourHandWidth = 8; // angle @ unit256 ~= 11.25000 degrees const uint8_t minuteHandWidth = 7; // angle @ unit256 ~= 9.84375 degrees @@ -460,14 +433,16 @@ void drawAnalogClock() { fadeToBlackBy(leds, NUM_PIXELS, clockBackgroundFade); antialiasPixelAR(secondAngle, secondHandWidth, 0, secondRadius, CRGB::Blue ); antialiasPixelAR(minuteAngle, minuteHandWidth, 0, minuteRadius, CRGB::Green); - antialiasPixelAR(hourAngle, hourHandWidth, 0, hourRadius, CRGB::Red ); - leds[0] = CRGB::Red; + antialiasPixelAR(hourAngle, hourHandWidth, 0, hourRadius, CRGB::Red); + // leds[0] = CRGB::Red; // need to rethink, physical LED 0 is not always in the center... } + #endif // TODO: `drawSpiralAnalogClock***()` -- config to disable the seconds hand? #if IS_FIBONACCI // drawSpiralAnalogClock*() calls drawSpiralLine(), which requires fibonacci + void drawSpiralAnalogClock(uint8_t step_h, uint8_t step_m, uint8_t step_s) { static uint8_t hourAngle = 0; static uint8_t minuteAngle = 0; @@ -529,25 +504,4 @@ void drawSpiralAnalogClock34_21_and_13() { } #endif -#if HAS_COORDINATE_MAP // radarSweepPalette() uses angles[] -void radarSweepPalette() { - fadeToBlackBy(leds, NUM_PIXELS, 64); - - uint8_t a = beat8(speed); - uint8_t b = beat88(1); - - for (uint16_t i = 0; i < NUM_PIXELS; i++) { - uint8_t angle = angles[i]; - - if(abs(angle - a) < 3) { - leds[i] = ColorFromPalette(palettes[currentPaletteIndex], beat8(speed)); - } - if(abs(angle - b) < 3) { - leds[i] = ColorFromPalette(palettes[currentPaletteIndex], beat8(speed) + 85); - } - } -} -#endif - - #endif // IS_FIBONACCI || HAS_COORDINATE_MAP diff --git a/esp8266-fastled-webserver/Noise.cpp b/esp8266-fastled-webserver/Noise.cpp index 7b29452b..55a5142d 100644 --- a/esp8266-fastled-webserver/Noise.cpp +++ b/esp8266-fastled-webserver/Noise.cpp @@ -88,9 +88,6 @@ static uint16_t noisescale = 1; // scale is set dynamically once we've started u static uint8_t colorLoop = 0; - - - static const CRGBPalette16 blackAndWhiteStripedPalette { CRGB::White, CRGB::Black, CRGB::Black, CRGB::Black, CRGB::White, CRGB::Black, CRGB::Black, CRGB::Black, @@ -145,14 +142,129 @@ void drawNoise(CRGBPalette16 palette, uint8_t hueReduce = 0) noisez += noisespeedz; } -#if HAS_POLAR_COORDS // change to "HAS_CONCENTRIC_RINGS" ? +void rainbowNoise() { + noisespeedx = 0; + noisespeedy = -1; + noisespeedz = 0; + noisescale = 6; + colorLoop = 0; + drawNoise(RainbowColors_p); +} + +void rainbowStripeNoise() { + noisespeedx = 0; + noisespeedy = -2; + noisespeedz = 0; + noisescale = 6; + colorLoop = 0; + drawNoise(RainbowStripeColors_p); +} + +void partyNoise() { + noisespeedx = -9; + noisespeedy = 0; + noisespeedz = 0; + noisescale = 8; + colorLoop = 0; + drawNoise(PartyColors_p); +} + +void forestNoise() { + noisespeedx = -9; + noisespeedy = 0; + noisespeedz = 0; + noisescale = 8; + colorLoop = 0; + drawNoise(ForestColors_p); +} + +void cloudNoise() { + noisespeedx = -2; + noisespeedy = 0; + noisespeedz = 0; + noisescale = 6; + colorLoop = 0; + drawNoise(CloudColors_p); +} + +void fireNoise() { + noisespeedx = 0; // 24; + noisespeedy = -32; + noisespeedz = 0; + noisescale = 16; + colorLoop = 0; + drawNoise(HeatColors_p, 60); +} + +void fireNoise2() { + noisespeedx = 0; + noisespeedy = -8; + noisespeedz = 3; + noisescale = 8; + colorLoop = 0; + drawNoise(HeatColors_p); +} -// drawPolarNoise() uses angles[] and radii[] +void lavaNoise() { + noisespeedx = 0; + noisespeedy = -1; + noisespeedz = 1; + noisescale = 6; + colorLoop = 0; + drawNoise(LavaColors_p); +} + +void oceanNoise() { + noisespeedx = -2; + noisespeedy = 0; + noisespeedz = 4; + noisescale = 6; + colorLoop = 0; + drawNoise(OceanColors_p); +} + +void blackAndWhiteNoise() { + noisespeedx = -12; + noisespeedy = 0; + noisespeedz = 0; + noisescale = 6; + colorLoop = 0; + drawNoise(blackAndWhiteStripedPalette); +} + +void blackAndBlueNoise() { + noisespeedx = 0; + noisespeedy = 8; + noisespeedz = 0; + noisescale = 8; + colorLoop = 0; + drawNoise(blackAndBlueStripedPalette); +} + +void gradientPaletteNoise() { + noisespeedx = 4; + noisespeedy = 0; + noisespeedz = 0; + noisescale = 1; + colorLoop = 0; + drawNoise(gCurrentPalette); +} + +void paletteNoise() { + noisespeedx = 4; + noisespeedy = 0; + noisespeedz = 0; + noisescale = 1; + colorLoop = 0; + drawNoise(palettes[currentPaletteIndex]); +} + +// drawPolarNoise() uses angles[] and radiusProxy[] void drawPolarNoise(CRGBPalette16 palette, uint8_t hueReduce = 0) { for (uint16_t i = 0; i < NUM_PIXELS; i++) { uint8_t x = angles[i]; - uint8_t y = radii[i] / 2u; // divide by 2 to change range of values from [0..255] to [0..127] + uint8_t y = radiusProxy[i] / 2u; // divide by 2 to change range of values from [0..255] to [0..127] int xoffset = noisescale * x; int yoffset = noisescale * y; @@ -162,9 +274,7 @@ void drawPolarNoise(CRGBPalette16 palette, uint8_t hueReduce = 0) noisey += noisespeedy; noisez += noisespeedz; } -#endif // HAS_POLAR_COORDS -#if HAS_POLAR_COORDS // gradientPalettePolarNoise() uses drawPolarNoise() // TODO: Check if gradientPalettePolarNoise() is equivalent to angleGradientPalette()? void gradientPalettePolarNoise() { noisespeedx = 4; @@ -174,8 +284,7 @@ void gradientPalettePolarNoise() { colorLoop = 0; drawPolarNoise(gCurrentPalette); } -#endif -#if HAS_POLAR_COORDS // palettePolarNoise() uses drawPolarNoise() + void palettePolarNoise() { noisespeedx = 9; noisespeedy = 0; @@ -184,58 +293,52 @@ void palettePolarNoise() { colorLoop = 0; drawPolarNoise(palettes[currentPaletteIndex]); } -#endif -void rainbowNoise() { - noisespeedx = 0; - noisespeedy = -1; - noisespeedz = 0; - noisescale = 6; +void oceanPolarNoise() { + noisespeedx = -1; // beatsin8(6, 0, 2) - 1; + noisespeedy = 0; + noisespeedz = 1; + noisescale = 0; colorLoop = 0; - drawNoise(RainbowColors_p); + drawPolarNoise(OceanColors_p); } -#if HAS_POLAR_COORDS // rainbowPolarNoise() uses drawPolarNoise() -void rainbowPolarNoise() { - noisespeedx = 0; - noisespeedy = 2; +void blackAndWhitePolarNoise() { + noisespeedx = -4; // beatsin8(8, 0, 9) - 4; + noisespeedy = 0; noisespeedz = 0; noisescale = 0; colorLoop = 0; - drawPolarNoise(RainbowColors_p); + drawPolarNoise(blackAndWhiteStripedPalette); } -#endif // HAS_POLAR_COORDS -void rainbowStripeNoise() { +void blackAndBluePolarNoise() { noisespeedx = 0; - noisespeedy = -2; + noisespeedy = -8; // beatsin8(8, 0, 16) - 8; noisespeedz = 0; - noisescale = 6; + noisescale = 1; colorLoop = 0; - drawNoise(RainbowStripeColors_p); + drawPolarNoise(blackAndBlueStripedPalette); } -#if HAS_POLAR_COORDS // rainbowStripePolarNoise() uses drawPolarNoise() -void rainbowStripePolarNoise() { +void rainbowPolarNoise() { noisespeedx = 0; noisespeedy = 2; noisespeedz = 0; noisescale = 0; colorLoop = 0; - drawPolarNoise(RainbowStripeColors_p); + drawPolarNoise(RainbowColors_p); } -#endif -void partyNoise() { - noisespeedx = -9; - noisespeedy = 0; +void rainbowStripePolarNoise() { + noisespeedx = 0; + noisespeedy = 2; noisespeedz = 0; - noisescale = 8; + noisescale = 0; colorLoop = 0; - drawNoise(PartyColors_p); + drawPolarNoise(RainbowStripeColors_p); } -#if HAS_POLAR_COORDS // partyPolarNoise() uses drawPolarNoise() void partyPolarNoise() { noisespeedx = 9; noisespeedy = 0; @@ -244,18 +347,7 @@ void partyPolarNoise() { colorLoop = 0; drawPolarNoise(PartyColors_p); } -#endif -void forestNoise() { - noisespeedx = -9; - noisespeedy = 0; - noisespeedz = 0; - noisescale = 8; - colorLoop = 0; - drawNoise(ForestColors_p); -} - -#if HAS_POLAR_COORDS // forestPolarNoise() uses drawPolarNoise() void forestPolarNoise() { noisespeedx = 9; noisespeedy = 0; @@ -264,18 +356,7 @@ void forestPolarNoise() { colorLoop = 0; drawPolarNoise(ForestColors_p); } -#endif -void cloudNoise() { - noisespeedx = -2; - noisespeedy = 0; - noisespeedz = 0; - noisescale = 6; - colorLoop = 0; - drawNoise(CloudColors_p); -} - -#if HAS_POLAR_COORDS // cloudPolarNoise() uses drawPolarNoise() void cloudPolarNoise() { noisespeedx = 2; noisespeedy = 0; @@ -284,18 +365,7 @@ void cloudPolarNoise() { colorLoop = 0; drawPolarNoise(CloudColors_p); } -#endif -void fireNoise() { - noisespeedx = 0; // 24; - noisespeedy = -32; - noisespeedz = 0; - noisescale = 16; - colorLoop = 0; - drawNoise(HeatColors_p, 60); -} - -#if HAS_POLAR_COORDS // firePolarNoise() uses drawPolarNoise() void firePolarNoise() { // noisespeedx = 0; // 24; // noisespeedy = -24; @@ -309,18 +379,7 @@ void firePolarNoise() { colorLoop = 0; drawPolarNoise(HeatColors_p, 60); } -#endif - -void fireNoise2() { - noisespeedx = 0; - noisespeedy = -8; - noisespeedz = 3; - noisescale = 8; - colorLoop = 0; - drawNoise(HeatColors_p); -} -#if HAS_POLAR_COORDS // firePolarNoise2() uses drawPolarNoise() void firePolarNoise2() { // noisespeedx = 0; // noisespeedy = -8; @@ -334,18 +393,7 @@ void firePolarNoise2() { colorLoop = 0; drawPolarNoise(HeatColors_p); } -#endif - -void lavaNoise() { - noisespeedx = 0; - noisespeedy = -1; - noisespeedz = 1; - noisescale = 6; - colorLoop = 0; - drawNoise(LavaColors_p); -} -#if HAS_POLAR_COORDS // lavaPolarNoise() uses drawPolarNoise() void lavaPolarNoise() { noisespeedx = 0; noisespeedy = -1; @@ -354,66 +402,5 @@ void lavaPolarNoise() { colorLoop = 0; drawPolarNoise(LavaColors_p); } -#endif - -void oceanNoise() { - noisespeedx = -2; - noisespeedy = 0; - noisespeedz = 4; - noisescale = 6; - colorLoop = 0; - drawNoise(OceanColors_p); -} - -#if HAS_POLAR_COORDS // oceanPolarNoise() uses drawPolarNoise() -void oceanPolarNoise() { - noisespeedx = -1; // beatsin8(6, 0, 2) - 1; - noisespeedy = 0; - noisespeedz = 1; - noisescale = 0; - colorLoop = 0; - drawPolarNoise(OceanColors_p); -} -#endif - -void blackAndWhiteNoise() { - noisespeedx = -12; - noisespeedy = 0; - noisespeedz = 0; - noisescale = 6; - colorLoop = 0; - drawNoise(blackAndWhiteStripedPalette); -} - -#if HAS_POLAR_COORDS // blackAndWhitePolarNoise() uses drawPolarNoise() -void blackAndWhitePolarNoise() { - noisespeedx = -4; // beatsin8(8, 0, 9) - 4; - noisespeedy = 0; - noisespeedz = 0; - noisescale = 0; - colorLoop = 0; - drawPolarNoise(blackAndWhiteStripedPalette); -} -#endif - -void blackAndBlueNoise() { - noisespeedx = 0; - noisespeedy = 8; - noisespeedz = 0; - noisescale = 8; - colorLoop = 0; - drawNoise(blackAndBlueStripedPalette); -} - -#if HAS_POLAR_COORDS // blackAndBluePolarNoise() uses drawPolarNoise() -void blackAndBluePolarNoise() { - noisespeedx = 0; - noisespeedy = -8; // beatsin8(8, 0, 16) - 8; - noisespeedz = 0; - noisescale = 1; - colorLoop = 0; - drawPolarNoise(blackAndBlueStripedPalette); -} -#endif #endif // HAS_COORDINATE_MAP \ No newline at end of file diff --git a/esp8266-fastled-webserver/Pacifica.cpp b/esp8266-fastled-webserver/Pacifica.cpp index 1356950a..c9d8eef2 100644 --- a/esp8266-fastled-webserver/Pacifica.cpp +++ b/esp8266-fastled-webserver/Pacifica.cpp @@ -58,7 +58,7 @@ void pacifica_one_layer( CRGBPalette16& p, uint16_t cistart, uint16_t wavescale, uint8_t sindex8 = scale16( sindex16, 240); CRGB c = ColorFromPalette( p, sindex8, bri, LINEARBLEND); #if IS_FIBONACCI - uint16_t idx = useFibonacciOrder ? physicalToFibonacci[i] : i; + uint16_t idx = useFibonacciOrder ? fibonacciToPhysical[i] : i; #else (void)useFibonacciOrder; // unused parameter uint16_t idx = i; @@ -75,7 +75,7 @@ void pacifica_add_whitecaps(bool useFibonacciOrder) for( uint16_t i = 0; i < NUM_PIXELS; i++) { #if IS_FIBONACCI - uint16_t idx = useFibonacciOrder ? physicalToFibonacci[i] : i; + uint16_t idx = useFibonacciOrder ? fibonacciToPhysical[i] : i; #else (void)useFibonacciOrder; // unused parameter uint16_t idx = i; @@ -97,7 +97,7 @@ void pacifica_deepen_colors(bool useFibonacciOrder) { for( uint16_t i = 0; i < NUM_PIXELS; i++) { #if IS_FIBONACCI - uint16_t idx = useFibonacciOrder ? physicalToFibonacci[i] : i; + uint16_t idx = useFibonacciOrder ? fibonacciToPhysical[i] : i; #else (void)useFibonacciOrder; // unused parameter uint16_t idx = i; diff --git a/esp8266-fastled-webserver/common.h b/esp8266-fastled-webserver/common.h index 4c6b4811..253f8371 100644 --- a/esp8266-fastled-webserver/common.h +++ b/esp8266-fastled-webserver/common.h @@ -219,13 +219,10 @@ extern CRGB leds[NUM_PIXELS]; #endif #if HAS_COORDINATE_MAP - extern const uint8_t coordsX [NUM_PIXELS]; - extern const uint8_t coordsY [NUM_PIXELS]; - extern const uint8_t angles [NUM_PIXELS]; -#endif - -#if HAS_POLAR_COORDS - extern const uint8_t radii[NUM_PIXELS]; // needed in noise.cpp + extern const uint8_t coordsX [NUM_PIXELS]; + extern const uint8_t coordsY [NUM_PIXELS]; + extern const uint8_t angles [NUM_PIXELS]; + extern const uint8_t (&radiusProxy) [NUM_PIXELS]; #endif #include "include/GradientPalettes.hpp" @@ -278,10 +275,11 @@ void radarSweepPalette(); void radiusPalette(); void angleGradientPalette(); void radiusGradientPalette(); +void drawAnalogClock(); +void antialiasPixelAR(uint8_t angle, uint8_t dAngle, uint8_t startRadius, uint8_t endRadius, CRGB color, CRGB leds[] = leds, int _NUM_PIXELS = NUM_PIXELS); #endif // map.h -- only when product defines IS_FIBONACCI to be true #if IS_FIBONACCI -void drawAnalogClock(); void drawSpiralAnalogClock13(); void drawSpiralAnalogClock21(); void drawSpiralAnalogClock34(); @@ -290,10 +288,11 @@ void drawSpiralAnalogClock89(); void drawSpiralAnalogClock21and34(); void drawSpiralAnalogClock13_21_and_34(); void drawSpiralAnalogClock34_21_and_13(); -void antialiasPixelAR(uint8_t angle, uint8_t dAngle, uint8_t startRadius, uint8_t endRadius, CRGB color, CRGB leds[] = leds, int _NUM_PIXELS = NUM_PIXELS); #endif // noise.h -- always defined +void paletteNoise(); +void gradientPaletteNoise(); void rainbowNoise(); void rainbowStripeNoise(); void partyNoise(); @@ -306,8 +305,6 @@ void oceanNoise(); void blackAndWhiteNoise(); void blackAndBlueNoise(); -// noise.h -- only when product defines HAS_POLAR_COORDS to be true -#if HAS_POLAR_COORDS void palettePolarNoise(); void gradientPalettePolarNoise(); void rainbowPolarNoise(); @@ -321,7 +318,8 @@ void lavaPolarNoise(); void oceanPolarNoise(); void blackAndWhitePolarNoise(); void blackAndBluePolarNoise(); -#endif + + // pacifica.h / prideplayground.h / colorwavesplayground.h void pacifica_loop(); diff --git a/esp8266-fastled-webserver/config.h b/esp8266-fastled-webserver/config.h index ccb207e7..def55b1a 100644 --- a/esp8266-fastled-webserver/config.h +++ b/esp8266-fastled-webserver/config.h @@ -146,12 +146,6 @@ #if IS_FIBONACCI && (!HAS_COORDINATE_MAP) #error "IS_FIBONACCI is true, so HAS_COORDINATE_MAP must also be true (but is not)" #endif - #if !defined(HAS_POLAR_COORDS) || ((HAS_POLAR_COORDS != 0) && (HAS_POLAR_COORDS != 1)) - #error "HAS_POLAR_COORDS must be defined to zero or one" - #endif - #if HAS_POLAR_COORDS && (!HAS_COORDINATE_MAP) - #error "HAS_POLAR_COORDS is true, so HAS_COORDINATE_MAP must also be true (but is not)" - #endif #if !defined(PARALLEL_OUTPUT_CHANNELS) #error "PARALLEL_OUTPUT_CHANNELS must be defined" #elif (PARALLEL_OUTPUT_CHANNELS == 1) diff --git a/esp8266-fastled-webserver/esp8266-fastled-webserver.ino b/esp8266-fastled-webserver/esp8266-fastled-webserver.ino index 2cf4e6f4..30face0c 100644 --- a/esp8266-fastled-webserver/esp8266-fastled-webserver.ino +++ b/esp8266-fastled-webserver/esp8266-fastled-webserver.ino @@ -89,8 +89,7 @@ void dimAll(byte value) // List of patterns to cycle through. Each is defined as a separate function below. -// NOTE: HAS_POLAR_COORDS implies HAS_COORDINATE_MAP -// IS_FIBONACCI implies HAS_COORDINATE_MAP +// NOTE: IS_FIBONACCI implies HAS_COORDINATE_MAP const PatternAndName patterns[] = { { pride, "Pride" }, @@ -142,10 +141,8 @@ const PatternAndName patterns[] = { { xGradientPalette, "X Axis Gradient Palette" }, { yGradientPalette, "Y Axis Gradient Palette" }, { xyGradientPalette, "XY Axis Gradient Palette" }, -#endif -#if HAS_POLAR_COORDS - // noise patterns (Polar variations) + // noise patterns { gradientPalettePolarNoise, "Gradient Palette Polar Noise" }, { palettePolarNoise, "Palette Polar Noise" }, { firePolarNoise, "Fire Polar Noise" }, @@ -159,10 +156,9 @@ const PatternAndName patterns[] = { { oceanPolarNoise, "Ocean Polar Noise" }, { blackAndWhitePolarNoise, "Black & White Polar Noise" }, { blackAndBluePolarNoise, "Black & Blue Polar Noise" }, -#endif -#if HAS_COORDINATE_MAP - // noise patterns + { gradientPaletteNoise, "Gradient Palette Noise" }, + { paletteNoise, "Palette Noise" }, { fireNoise, "Fire Noise" }, { fireNoise2, "Fire Noise 2" }, { lavaNoise, "Lava Noise" }, @@ -174,11 +170,11 @@ const PatternAndName patterns[] = { { oceanNoise, "Ocean Noise" }, { blackAndWhiteNoise, "Black & White Noise" }, { blackAndBlueNoise, "Black & Blue Noise" }, + + { drawAnalogClock, "Analog Clock" }, #endif #if IS_FIBONACCI - { drawAnalogClock, "Analog Clock" }, - { drawSpiralAnalogClock13, "Spiral Analog Clock 13" }, { drawSpiralAnalogClock21, "Spiral Analog Clock 21" }, { drawSpiralAnalogClock34, "Spiral Analog Clock 34" }, @@ -733,7 +729,7 @@ void loop() { // Call the current pattern function once, updating the 'leds' array patterns[currentPatternIndex].pattern(); - #if IS_FIBONACCI + #if HAS_COORDINATE_MAP if (showClock) drawAnalogClock(); #endif diff --git a/esp8266-fastled-webserver/include/configs/product/1628rings.h b/esp8266-fastled-webserver/include/configs/product/1628rings.h index af3b02d4..dcb765a2 100644 --- a/esp8266-fastled-webserver/include/configs/product/1628rings.h +++ b/esp8266-fastled-webserver/include/configs/product/1628rings.h @@ -48,10 +48,10 @@ #define DEFAULT_COLOR_CORRECTION UncorrectedColor // 1628-Rings did not specify; This is FastLED default #endif #if !defined(NAME_PREFIX) - #define NAME_PREFIX "ESP8266-" + #define NAME_PREFIX "sol-v2-" #endif #if !defined(PRODUCT_FRIENDLY_NAME) - #define PRODUCT_FRIENDLY_NAME "ESP8266 FastLED Webserver" + #define PRODUCT_FRIENDLY_NAME "Sol v2" #endif #if !defined(IS_FIBONACCI) #define IS_FIBONACCI 0 @@ -59,10 +59,6 @@ #if !defined(HAS_COORDINATE_MAP) #define HAS_COORDINATE_MAP 1 #endif -// TODO: combine HAS_POLAR_COORDS with HAS_COORDINATE_MAP -#if !defined(HAS_POLAR_COORDS) - #define HAS_POLAR_COORDS 1 -#endif #if !defined(PARALLEL_OUTPUT_CHANNELS) // WARNING: Refresh rate for 1628 pixels over single output is ~15 frames / second MAXIMUM.... #define PARALLEL_OUTPUT_CHANNELS 1 #endif diff --git a/esp8266-fastled-webserver/include/configs/product/chamaeleon64.h b/esp8266-fastled-webserver/include/configs/product/chamaeleon64.h index d45beeaa..865056d3 100644 --- a/esp8266-fastled-webserver/include/configs/product/chamaeleon64.h +++ b/esp8266-fastled-webserver/include/configs/product/chamaeleon64.h @@ -59,9 +59,6 @@ #if !defined(HAS_COORDINATE_MAP) #define HAS_COORDINATE_MAP 1 #endif -#if !defined(HAS_POLAR_COORDS) - #define HAS_POLAR_COORDS 0 -#endif #if !defined(PARALLEL_OUTPUT_CHANNELS) #define PARALLEL_OUTPUT_CHANNELS 1 #endif diff --git a/esp8266-fastled-webserver/include/configs/product/default.h b/esp8266-fastled-webserver/include/configs/product/default.h index abef6778..b3572fb4 100644 --- a/esp8266-fastled-webserver/include/configs/product/default.h +++ b/esp8266-fastled-webserver/include/configs/product/default.h @@ -59,9 +59,6 @@ #if !defined(HAS_COORDINATE_MAP) #define HAS_COORDINATE_MAP 0 #endif -#if !defined(HAS_POLAR_COORDS) - #define HAS_POLAR_COORDS 0 -#endif #if !defined(PARALLEL_OUTPUT_CHANNELS) #define PARALLEL_OUTPUT_CHANNELS 1 #endif diff --git a/esp8266-fastled-webserver/include/configs/product/esp8266_thing.h b/esp8266-fastled-webserver/include/configs/product/esp8266_thing.h index 4b9399fe..87d3cb6e 100644 --- a/esp8266-fastled-webserver/include/configs/product/esp8266_thing.h +++ b/esp8266-fastled-webserver/include/configs/product/esp8266_thing.h @@ -64,9 +64,6 @@ #if !defined(HAS_COORDINATE_MAP) #define HAS_COORDINATE_MAP 0 #endif -#if !defined(HAS_POLAR_COORDS) - #define HAS_POLAR_COORDS 0 -#endif #if !defined(PARALLEL_OUTPUT_CHANNELS) #define PARALLEL_OUTPUT_CHANNELS 6 #endif diff --git a/esp8266-fastled-webserver/include/configs/product/fibonacci128.h b/esp8266-fastled-webserver/include/configs/product/fibonacci128.h index 923f8c1a..d81f8afc 100644 --- a/esp8266-fastled-webserver/include/configs/product/fibonacci128.h +++ b/esp8266-fastled-webserver/include/configs/product/fibonacci128.h @@ -59,9 +59,6 @@ #if !defined(HAS_COORDINATE_MAP) #define HAS_COORDINATE_MAP 1 #endif -#if !defined(HAS_POLAR_COORDS) - #define HAS_POLAR_COORDS 0 -#endif #if !defined(PARALLEL_OUTPUT_CHANNELS) #define PARALLEL_OUTPUT_CHANNELS 1 #endif diff --git a/esp8266-fastled-webserver/include/configs/product/fibonacci256.h b/esp8266-fastled-webserver/include/configs/product/fibonacci256.h index 488dc8b2..d0eda881 100644 --- a/esp8266-fastled-webserver/include/configs/product/fibonacci256.h +++ b/esp8266-fastled-webserver/include/configs/product/fibonacci256.h @@ -59,9 +59,6 @@ #if !defined(HAS_COORDINATE_MAP) #define HAS_COORDINATE_MAP 1 #endif -#if !defined(HAS_POLAR_COORDS) - #define HAS_POLAR_COORDS 0 -#endif #if !defined(PARALLEL_OUTPUT_CHANNELS) #define PARALLEL_OUTPUT_CHANNELS 1 #endif diff --git a/esp8266-fastled-webserver/include/configs/product/fibonacci32.h b/esp8266-fastled-webserver/include/configs/product/fibonacci32.h index d3415998..89b03062 100644 --- a/esp8266-fastled-webserver/include/configs/product/fibonacci32.h +++ b/esp8266-fastled-webserver/include/configs/product/fibonacci32.h @@ -59,9 +59,6 @@ #if !defined(HAS_COORDINATE_MAP) #define HAS_COORDINATE_MAP 1 #endif -#if !defined(HAS_POLAR_COORDS) - #define HAS_POLAR_COORDS 0 -#endif #if !defined(PARALLEL_OUTPUT_CHANNELS) #define PARALLEL_OUTPUT_CHANNELS 1 #endif diff --git a/esp8266-fastled-webserver/include/configs/product/fibonacci512.h b/esp8266-fastled-webserver/include/configs/product/fibonacci512.h index e72f204b..13067ea8 100644 --- a/esp8266-fastled-webserver/include/configs/product/fibonacci512.h +++ b/esp8266-fastled-webserver/include/configs/product/fibonacci512.h @@ -59,9 +59,6 @@ #if !defined(HAS_COORDINATE_MAP) #define HAS_COORDINATE_MAP 1 #endif -#if !defined(HAS_POLAR_COORDS) - #define HAS_POLAR_COORDS 0 -#endif #if !defined(PARALLEL_OUTPUT_CHANNELS) #define PARALLEL_OUTPUT_CHANNELS 4 #endif diff --git a/esp8266-fastled-webserver/include/configs/product/fibonacci64.h b/esp8266-fastled-webserver/include/configs/product/fibonacci64.h index c5065481..4fb48c4a 100644 --- a/esp8266-fastled-webserver/include/configs/product/fibonacci64.h +++ b/esp8266-fastled-webserver/include/configs/product/fibonacci64.h @@ -102,9 +102,6 @@ #if !defined(HAS_COORDINATE_MAP) #define HAS_COORDINATE_MAP 1 #endif -#if !defined(HAS_POLAR_COORDS) - #define HAS_POLAR_COORDS 0 -#endif #if !defined(PARALLEL_OUTPUT_CHANNELS) #define PARALLEL_OUTPUT_CHANNELS 1 #endif diff --git a/esp8266-fastled-webserver/include/configs/product/kraken64.h b/esp8266-fastled-webserver/include/configs/product/kraken64.h index 9a3d9b20..ab9beadb 100644 --- a/esp8266-fastled-webserver/include/configs/product/kraken64.h +++ b/esp8266-fastled-webserver/include/configs/product/kraken64.h @@ -84,9 +84,6 @@ #if !defined(HAS_COORDINATE_MAP) #define HAS_COORDINATE_MAP 1 #endif -#if !defined(HAS_POLAR_COORDS) - #define HAS_POLAR_COORDS 0 -#endif #if !defined(PARALLEL_OUTPUT_CHANNELS) #define PARALLEL_OUTPUT_CHANNELS 1 #endif diff --git a/esp8266-fastled-webserver/include/configs/product/product_template.h b/esp8266-fastled-webserver/include/configs/product/product_template.h index 7ea04679..761cce2f 100644 --- a/esp8266-fastled-webserver/include/configs/product/product_template.h +++ b/esp8266-fastled-webserver/include/configs/product/product_template.h @@ -124,13 +124,6 @@ #define HAS_COORDINATE_MAP 1 #endif -// HAS_POLAR_COORDS is true when there are mappings to define -// ... TODO: add definition for polar coordinates define ... -#if !defined(HAS_POLAR_COORDS) - #define HAS_POLAR_COORDS 0 -#endif - - // PARALLEL_OUTPUT_CHANNELS indicates the number of independent channels // that should be configured. When this value == 1, DATA_PIN is used to // control all pixels.