diff --git a/sketch/obd2_gauge/meter.h b/sketch/obd2_gauge/meter.h index 76361e1..76faf87 100644 --- a/sketch/obd2_gauge/meter.h +++ b/sketch/obd2_gauge/meter.h @@ -184,78 +184,78 @@ inline void drawBarBlock(uint8_t i, uint16_t color) { } // 4-Quadrant Exponential Segmented Block Bar Graph (20 blocks per 160x120 quadrant, Anti-Aliased) -const int16_t quadBlockMinX[20] PROGMEM = { 6, 8, 11, 14, 18, 22, 27, 33, 41, 50, 60, 69, 79, 88, 97, 107, 116, 125, 135, 144 }; -const int16_t quadBlockMaxX[20] PROGMEM = { 17, 20, 23, 26, 30, 35, 40, 47, 54, 62, 71, 80, 89, 98, 108, 117, 126, 136, 145, 154 }; -const int16_t quadBlockMinY[20] PROGMEM = { 99, 90, 80, 71, 62, 53, 45, 38, 33, 30, 28, 27, 27, 27, 27, 27, 27, 27, 27, 27 }; -const int16_t quadBlockMaxY[20] PROGMEM = { 111, 102, 93, 84, 75, 67, 59, 52, 46, 42, 39, 38, 37, 37, 37, 37, 37, 37, 37, 36 }; +const int16_t quadBlockMinX[20] PROGMEM = { 5, 8, 12, 15, 20, 24, 30, 37, 45, 53, 62, 71, 80, 89, 98, 107, 117, 126, 135, 144 }; +const int16_t quadBlockMaxX[20] PROGMEM = { 18, 21, 24, 28, 33, 38, 44, 50, 58, 65, 74, 82, 91, 100, 109, 118, 127, 136, 145, 154 }; +const int16_t quadBlockMinY[20] PROGMEM = { 100, 91, 83, 74, 66, 59, 51, 45, 40, 36, 33, 31, 30, 29, 28, 28, 27, 27, 27, 27 }; +const int16_t quadBlockMaxY[20] PROGMEM = { 112, 103, 95, 87, 79, 72, 65, 59, 53, 49, 46, 43, 41, 40, 39, 38, 38, 37, 37, 37 }; const float quadBlockNx[20][4] PROGMEM = { - { -0.96873f, -0.28545f, 0.96873f, 0.26034f }, - { -0.96087f, -0.31982f, 0.96087f, 0.28863f }, - { -0.94962f, -0.36330f, 0.94961f, 0.32380f }, - { -0.93279f, -0.41940f, 0.93276f, 0.36840f }, - { -0.90637f, -0.49287f, 0.90632f, 0.42604f }, - { -0.86285f, -0.58870f, 0.86273f, 0.50158f }, - { -0.78884f, -0.70704f, 0.78859f, 0.59988f }, - { -0.66674f, -0.83126f, 0.66647f, 0.72000f }, - { -0.49454f, -0.92658f, 0.49472f, 0.84294f }, - { -0.31289f, -0.97566f, 0.31343f, 0.93366f }, - { -0.17229f, -0.99352f, 0.17265f, 0.97855f }, - { -0.08503f, -0.99858f, 0.08517f, 0.99440f }, - { -0.03785f, -0.99975f, 0.03790f, 0.99880f }, - { -0.01495f, -0.99997f, 0.01496f, 0.99979f }, - { -0.00506f, -1.00000f, 0.00506f, 0.99997f }, - { -0.00138f, -1.00000f, 0.00138f, 1.00000f }, - { -0.00027f, -1.00000f, 0.00027f, 1.00000f }, - { -0.00003f, -1.00000f, 0.00003f, 1.00000f }, - { -0.00000f, -1.00000f, 0.00000f, 1.00000f }, - { -0.00000f, -1.00000f, 0.00000f, 1.00000f }, + { -0.94779f, -0.31891f, 0.94779f, 0.31891f }, + { -0.93472f, -0.35539f, 0.93472f, 0.35539f }, + { -0.91662f, -0.39976f, 0.91662f, 0.39976f }, + { -0.89115f, -0.45372f, 0.89115f, 0.45372f }, + { -0.85466f, -0.51919f, 0.85466f, 0.51919f }, + { -0.80234f, -0.59687f, 0.80234f, 0.59687f }, + { -0.72909f, -0.68442f, 0.72909f, 0.68442f }, + { -0.63267f, -0.77442f, 0.63267f, 0.77442f }, + { -0.51899f, -0.85478f, 0.51899f, 0.85478f }, + { -0.40261f, -0.91537f, 0.40261f, 0.91537f }, + { -0.29860f, -0.95438f, 0.29860f, 0.95438f }, + { -0.21498f, -0.97662f, 0.21498f, 0.97662f }, + { -0.15215f, -0.98836f, 0.15215f, 0.98836f }, + { -0.10673f, -0.99429f, 0.10673f, 0.99429f }, + { -0.07452f, -0.99722f, 0.07452f, 0.99722f }, + { -0.05192f, -0.99865f, 0.05192f, 0.99865f }, + { -0.03612f, -0.99935f, 0.03612f, 0.99935f }, + { -0.02513f, -0.99968f, 0.02513f, 0.99968f }, + { -0.01747f, -0.99985f, 0.01747f, 0.99985f }, + { -0.01214f, -0.99993f, 0.01214f, 0.99993f }, }; const float quadBlockNy[20][4] PROGMEM = { - { -0.24812f, 0.95839f, 0.24813f, -0.96552f }, - { -0.27699f, 0.94748f, 0.27701f, -0.95744f }, - { -0.31342f, 0.93167f, 0.31345f, -0.94612f }, - { -0.36043f, 0.90780f, 0.36049f, -0.92967f }, - { -0.42248f, 0.87010f, 0.42259f, -0.90471f }, - { -0.50547f, 0.80835f, 0.50567f, -0.86511f }, - { -0.61460f, 0.70717f, 0.61492f, -0.80009f }, - { -0.74529f, 0.55588f, 0.74553f, -0.69397f }, - { -0.86916f, 0.37610f, 0.86905f, -0.53800f }, - { -0.94979f, 0.21928f, 0.94961f, -0.35816f }, - { -0.98505f, 0.11365f, 0.98498f, -0.20601f }, - { -0.99638f, 0.05326f, 0.99637f, -0.10565f }, - { -0.99928f, 0.02240f, 0.99928f, -0.04900f }, - { -0.99989f, 0.00823f, 0.99989f, -0.02035f }, - { -0.99999f, 0.00251f, 0.99999f, -0.00736f }, - { -1.00000f, 0.00059f, 1.00000f, -0.00220f }, - { -1.00000f, 0.00010f, 1.00000f, -0.00049f }, - { -1.00000f, 0.00001f, 1.00000f, -0.00008f }, - { -1.00000f, 0.00000f, 1.00000f, -0.00000f }, - { -1.00000f, -0.00000f, 1.00000f, -0.00000f }, + { -0.31891f, 0.94779f, 0.31891f, -0.94779f }, + { -0.35539f, 0.93472f, 0.35539f, -0.93472f }, + { -0.39976f, 0.91662f, 0.39976f, -0.91662f }, + { -0.45372f, 0.89115f, 0.45372f, -0.89115f }, + { -0.51919f, 0.85466f, 0.51919f, -0.85466f }, + { -0.59687f, 0.80234f, 0.59687f, -0.80234f }, + { -0.68442f, 0.72909f, 0.68442f, -0.72909f }, + { -0.77442f, 0.63267f, 0.77442f, -0.63267f }, + { -0.85478f, 0.51899f, 0.85478f, -0.51899f }, + { -0.91537f, 0.40261f, 0.91537f, -0.40261f }, + { -0.95438f, 0.29860f, 0.95438f, -0.29860f }, + { -0.97662f, 0.21498f, 0.97662f, -0.21498f }, + { -0.98836f, 0.15215f, 0.98836f, -0.15215f }, + { -0.99429f, 0.10673f, 0.99429f, -0.10673f }, + { -0.99722f, 0.07452f, 0.99722f, -0.07452f }, + { -0.99865f, 0.05192f, 0.99865f, -0.05192f }, + { -0.99935f, 0.03612f, 0.99935f, -0.03612f }, + { -0.99968f, 0.02513f, 0.99968f, -0.02513f }, + { -0.99985f, 0.01747f, 0.99985f, -0.01747f }, + { -0.99993f, 0.01214f, 0.99993f, -0.01214f }, }; const float quadBlockC[20][4] PROGMEM = { - { 41.7856f, -93.5481f, -34.1546f, 103.3382f }, - { 44.5999f, -82.2723f, -36.9638f, 92.4134f }, - { 47.7629f, -70.4265f, -40.1195f, 81.0900f }, - { 51.3245f, -57.7107f, -43.6709f, 69.1709f }, - { 55.2918f, -43.6432f, -47.6235f, 56.3424f }, - { 59.5081f, -27.5111f, -51.8172f, 42.0998f }, - { 63.3426f, -8.5811f, -55.6117f, 25.7100f }, - { 65.1824f, 12.8372f, -57.3856f, 6.4771f }, - { 62.8287f, 34.0208f, -54.9625f, -15.0827f }, - { 56.3655f, 51.8199f, -48.4499f, -36.0307f }, - { 48.9839f, 65.8882f, -41.0263f, -53.4142f }, - { 43.2142f, 77.5420f, -35.2300f, -67.1688f }, - { 39.5475f, 87.9249f, -31.5522f, -78.6494f }, - { 37.5285f, 97.6859f, -29.5297f, -88.9455f }, - { 36.5593f, 107.1569f, -28.5595f, -98.6652f }, - { 36.1641f, 116.5046f, -28.1641f, -108.1181f }, - { 36.0348f, 125.8060f, -28.0349f, -117.4586f }, - { 36.0044f, 135.0942f, -28.0044f, -126.7576f }, - { 36.0002f, 144.3798f, -28.0002f, -136.0452f }, - { 36.0000f, 153.6652f, -28.0000f, -145.3308f }, + { 49.3731f, -92.9228f, -41.1731f, 100.9228f }, + { 52.9126f, -82.0215f, -44.7126f, 90.0215f }, + { 56.7515f, -70.4863f, -48.5515f, 78.4863f }, + { 60.8192f, -58.1314f, -52.6192f, 66.1314f }, + { 64.9598f, -44.6227f, -56.7598f, 52.6227f }, + { 68.8007f, -29.6371f, -60.6007f, 37.6371f }, + { 71.6789f, -12.9798f, -63.4789f, 20.9798f }, + { 72.7161f, 5.1281f, -64.5161f, 2.8719f }, + { 71.2620f, 23.7112f, -63.0620f, -15.7112f }, + { 67.5191f, 41.3967f, -59.3191f, -33.3967f }, + { 62.4933f, 57.2743f, -54.2933f, -49.2743f }, + { 57.2945f, 71.2057f, -49.0945f, -63.2057f }, + { 52.6178f, 83.5542f, -44.4178f, -75.5542f }, + { 48.7270f, 94.7806f, -40.5270f, -86.7806f }, + { 45.6295f, 105.2669f, -37.4295f, -97.2669f }, + { 43.2291f, 115.2686f, -35.0291f, -107.2686f }, + { 41.3977f, 124.9666f, -33.1977f, -116.9666f }, + { 40.0175f, 134.4587f, -31.8175f, -126.4587f }, + { 38.9847f, 143.8219f, -30.7847f, -135.8219f }, + { 38.2169f, 153.0966f, -30.0169f, -145.0966f }, }; // Draw an individual solid rectangular block for 4-quadrant view with smooth subpixel anti-aliasing