What's the "best" algorithm to calculate fractional HR zones (i.e: zone: 3.45)?
Splitting from: forums.garmin.com/.../how-edge-calculate-current-heart-zone-decimal-value
What's the "best" algorithm to calculate fractional HR zones (i.e: zone: 3.45)?
Splitting from: forums.garmin.com/.../how-edge-calculate-current-heart-zone-decimal-value
Ok here's my fixed code (upvoted for visibility). All I had to do was change absolute max to be zone 5 max instead of 220.
function computeHrZoneFlowState(heartRate as Number, isValidHR as Boolean) as Float { var z = INVALID_ZONE; var fZ = INVALID_FRACTIONAL_ZONE; var heartRateZones = TEST_HR_ZONES; var absoluteMin = 30; var absoluteMax = heartRateZones[5]; // ofc this is superfluous bc Garmin can't read an HR less than 30, // but let's pretend we don't know that if (heartRate < absoluteMin) { heartRate = absoluteMin; } // match garmin behaviour (any hr >= zone 5 max will produce a decimal zone of 6.0) if (heartRate > absoluteMax) { heartRate = absoluteMax; } for (z = 0; z < 5 && heartRate >= heartRateZones[z]; z++) {} var min = z > 0 ? heartRateZones[z - 1] : absoluteMin; // use 30 as min for zone 0 to get similar fractional zone number as Garmin var max = heartRateZones[z]; // fZ = z + (100.0 * (heartRate - min) / (max - min)) / 100; // This is closer to what I originally had in pseudocode fZ = z + 1.0 * (heartRate - min) / (max - min); return fZ; }
Here's my results with 2 data sets: yours and mine (100, 120, 140, ...)
I modified the test function to log the hr zones.
Your data:
Executing test compareHrZones... DEBUG (07:18): HR Zones: [128, 153, 162, 180, 185, 190] DEBUG (07:18): HR: 0, HR zone: non-touching: -0.303030, touching: 0.000000, non-touching 'angle': -0.303030, touching 'angle': 0.000000 DEBUG (07:18): HR: 1, HR zone: non-touching: -0.292929, touching: 0.000000, non-touching 'angle': 0.010101, touching 'angle': 0.000000 DEBUG (07:18): HR: 2, HR zone: non-touching: -0.282828, touching: 0.000000, non-touching 'angle': 0.010101, touching 'angle': 0.000000 DEBUG (07:18): HR: 3, HR zone: non-touching: -0.272727, touching: 0.000000, non-touching 'angle': 0.010101, touching 'angle': 0.000000 DEBUG (07:18): HR: 4, HR zone: non-touching: -0.262626, touching: 0.000000, non-touching 'angle': 0.010101, touching 'angle': 0.000000 DEBUG (07:18): HR: 5, HR zone: non-touching: -0.252525, touching: 0.000000, non-touching 'angle': 0.010101, touching 'angle': 0.000000 DEBUG (07:18): HR: 6, HR zone: non-touching: -0.242424, touching: 0.000000, non-touching 'angle': 0.010101, touching 'angle': 0.000000 DEBUG (07:18): HR: 7, HR zone: non-touching: -0.232323, touching: 0.000000, non-touching 'angle': 0.010101, touching 'angle': 0.000000 DEBUG (07:18): HR: 8, HR zone: non-touching: -0.222222, touching: 0.000000, non-touching 'angle': 0.010101, touching 'angle': 0.000000 DEBUG (07:18): HR: 9, HR zone: non-touching: -0.212121, touching: 0.000000, non-touching 'angle': 0.010101, touching 'angle': 0.000000 DEBUG (07:18): HR: 10, HR zone: non-touching: -0.202020, touching: 0.000000, non-touching 'angle': 0.010101, touching 'angle': 0.000000 DEBUG (07:18): HR: 11, HR zone: non-touching: -0.191919, touching: 0.000000, non-touching 'angle': 0.010101, touching 'angle': 0.000000 DEBUG (07:18): HR: 12, HR zone: non-touching: -0.181818, touching: 0.000000, non-touching 'angle': 0.010101, touching 'angle': 0.000000 DEBUG (07:18): HR: 13, HR zone: non-touching: -0.171717, touching: 0.000000, non-touching 'angle': 0.010101, touching 'angle': 0.000000 DEBUG (07:18): HR: 14, HR zone: non-touching: -0.161616, touching: 0.000000, non-touching 'angle': 0.010101, touching 'angle': 0.000000 DEBUG (07:18): HR: 15, HR zone: non-touching: -0.151515, touching: 0.000000, non-touching 'angle': 0.010101, touching 'angle': 0.000000 DEBUG (07:18): HR: 16, HR zone: non-touching: -0.141414, touching: 0.000000, non-touching 'angle': 0.010101, touching 'angle': 0.000000 DEBUG (07:18): HR: 17, HR zone: non-touching: -0.131313, touching: 0.000000, non-touching 'angle': 0.010101, touching 'angle': 0.000000 DEBUG (07:18): HR: 18, HR zone: non-touching: -0.121212, touching: 0.000000, non-touching 'angle': 0.010101, touching 'angle': 0.000000 DEBUG (07:18): HR: 19, HR zone: non-touching: -0.111111, touching: 0.000000, non-touching 'angle': 0.010101, touching 'angle': 0.000000 DEBUG (07:18): HR: 20, HR zone: non-touching: -0.101010, touching: 0.000000, non-touching 'angle': 0.010101, touching 'angle': 0.000000 DEBUG (07:18): HR: 21, HR zone: non-touching: -0.090909, touching: 0.000000, non-touching 'angle': 0.010101, touching 'angle': 0.000000 DEBUG (07:18): HR: 22, HR zone: non-touching: -0.080808, touching: 0.000000, non-touching 'angle': 0.010101, touching 'angle': 0.000000 DEBUG (07:18): HR: 23, HR zone: non-touching: -0.070707, touching: 0.000000, non-touching 'angle': 0.010101, touching 'angle': 0.000000 DEBUG (07:18): HR: 24, HR zone: non-touching: -0.060606, touching: 0.000000, non-touching 'angle': 0.010101, touching 'angle': 0.000000 DEBUG (07:18): HR: 25, HR zone: non-touching: -0.050505, touching: 0.000000, non-touching 'angle': 0.010101, touching 'angle': 0.000000 DEBUG (07:18): HR: 26, HR zone: non-touching: -0.040404, touching: 0.000000, non-touching 'angle': 0.010101, touching 'angle': 0.000000 DEBUG (07:18): HR: 27, HR zone: non-touching: -0.030303, touching: 0.000000, non-touching 'angle': 0.010101, touching 'angle': 0.000000 DEBUG (07:18): HR: 28, HR zone: non-touching: -0.020202, touching: 0.000000, non-touching 'angle': 0.010101, touching 'angle': 0.000000 DEBUG (07:18): HR: 29, HR zone: non-touching: -0.010101, touching: 0.000000, non-touching 'angle': 0.010101, touching 'angle': 0.000000 DEBUG (07:18): HR: 30, HR zone: non-touching: 0.000000, touching: 0.000000, non-touching 'angle': 0.010101, touching 'angle': 0.000000 DEBUG (07:18): HR: 31, HR zone: non-touching: 0.010101, touching: 0.010204, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 32, HR zone: non-touching: 0.020202, touching: 0.020408, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 33, HR zone: non-touching: 0.030303, touching: 0.030612, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 34, HR zone: non-touching: 0.040404, touching: 0.040816, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 35, HR zone: non-touching: 0.050505, touching: 0.051020, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 36, HR zone: non-touching: 0.060606, touching: 0.061224, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 37, HR zone: non-touching: 0.070707, touching: 0.071429, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 38, HR zone: non-touching: 0.080808, touching: 0.081633, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 39, HR zone: non-touching: 0.090909, touching: 0.091837, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 40, HR zone: non-touching: 0.101010, touching: 0.102041, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 41, HR zone: non-touching: 0.111111, touching: 0.112245, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 42, HR zone: non-touching: 0.121212, touching: 0.122449, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 43, HR zone: non-touching: 0.131313, touching: 0.132653, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 44, HR zone: non-touching: 0.141414, touching: 0.142857, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 45, HR zone: non-touching: 0.151515, touching: 0.153061, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 46, HR zone: non-touching: 0.161616, touching: 0.163265, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 47, HR zone: non-touching: 0.171717, touching: 0.173469, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 48, HR zone: non-touching: 0.181818, touching: 0.183673, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 49, HR zone: non-touching: 0.191919, touching: 0.193878, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 50, HR zone: non-touching: 0.202020, touching: 0.204082, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 51, HR zone: non-touching: 0.212121, touching: 0.214286, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 52, HR zone: non-touching: 0.222222, touching: 0.224490, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 53, HR zone: non-touching: 0.232323, touching: 0.234694, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 54, HR zone: non-touching: 0.242424, touching: 0.244898, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 55, HR zone: non-touching: 0.252525, touching: 0.255102, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 56, HR zone: non-touching: 0.262626, touching: 0.265306, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 57, HR zone: non-touching: 0.272727, touching: 0.275510, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 58, HR zone: non-touching: 0.282828, touching: 0.285714, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 59, HR zone: non-touching: 0.292929, touching: 0.295918, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 60, HR zone: non-touching: 0.303030, touching: 0.306122, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 61, HR zone: non-touching: 0.313131, touching: 0.316327, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 62, HR zone: non-touching: 0.323232, touching: 0.326531, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 63, HR zone: non-touching: 0.333333, touching: 0.336735, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 64, HR zone: non-touching: 0.343434, touching: 0.346939, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 65, HR zone: non-touching: 0.353535, touching: 0.357143, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 66, HR zone: non-touching: 0.363636, touching: 0.367347, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 67, HR zone: non-touching: 0.373737, touching: 0.377551, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 68, HR zone: non-touching: 0.383838, touching: 0.387755, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 69, HR zone: non-touching: 0.393939, touching: 0.397959, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 70, HR zone: non-touching: 0.404040, touching: 0.408163, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 71, HR zone: non-touching: 0.414141, touching: 0.418367, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 72, HR zone: non-touching: 0.424242, touching: 0.428571, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 73, HR zone: non-touching: 0.434343, touching: 0.438776, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 74, HR zone: non-touching: 0.444444, touching: 0.448980, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 75, HR zone: non-touching: 0.454545, touching: 0.459184, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 76, HR zone: non-touching: 0.464646, touching: 0.469388, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 77, HR zone: non-touching: 0.474747, touching: 0.479592, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 78, HR zone: non-touching: 0.484848, touching: 0.489796, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 79, HR zone: non-touching: 0.494949, touching: 0.500000, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 80, HR zone: non-touching: 0.505050, touching: 0.510204, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 81, HR zone: non-touching: 0.515152, touching: 0.520408, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 82, HR zone: non-touching: 0.525253, touching: 0.530612, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 83, HR zone: non-touching: 0.535354, touching: 0.540816, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 84, HR zone: non-touching: 0.545455, touching: 0.551020, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 85, HR zone: non-touching: 0.555556, touching: 0.561224, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 86, HR zone: non-touching: 0.565657, touching: 0.571429, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 87, HR zone: non-touching: 0.575758, touching: 0.581633, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 88, HR zone: non-touching: 0.585859, touching: 0.591837, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 89, HR zone: non-touching: 0.595960, touching: 0.602041, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 90, HR zone: non-touching: 0.606061, touching: 0.612245, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 91, HR zone: non-touching: 0.616162, touching: 0.622449, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 92, HR zone: non-touching: 0.626263, touching: 0.632653, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 93, HR zone: non-touching: 0.636364, touching: 0.642857, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 94, HR zone: non-touching: 0.646465, touching: 0.653061, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 95, HR zone: non-touching: 0.656566, touching: 0.663265, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 96, HR zone: non-touching: 0.666667, touching: 0.673469, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 97, HR zone: non-touching: 0.676768, touching: 0.683673, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 98, HR zone: non-touching: 0.686869, touching: 0.693878, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 99, HR zone: non-touching: 0.696970, touching: 0.704082, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 100, HR zone: non-touching: 0.707071, touching: 0.714286, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 101, HR zone: non-touching: 0.717172, touching: 0.724490, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 102, HR zone: non-touching: 0.727273, touching: 0.734694, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 103, HR zone: non-touching: 0.737374, touching: 0.744898, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 104, HR zone: non-touching: 0.747475, touching: 0.755102, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 105, HR zone: non-touching: 0.757576, touching: 0.765306, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 106, HR zone: non-touching: 0.767677, touching: 0.775510, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 107, HR zone: non-touching: 0.777778, touching: 0.785714, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 108, HR zone: non-touching: 0.787879, touching: 0.795918, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 109, HR zone: non-touching: 0.797980, touching: 0.806122, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 110, HR zone: non-touching: 0.808081, touching: 0.816327, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 111, HR zone: non-touching: 0.818182, touching: 0.826531, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 112, HR zone: non-touching: 0.828283, touching: 0.836735, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 113, HR zone: non-touching: 0.838384, touching: 0.846939, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 114, HR zone: non-touching: 0.848485, touching: 0.857143, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 115, HR zone: non-touching: 0.858586, touching: 0.867347, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 116, HR zone: non-touching: 0.868687, touching: 0.877551, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 117, HR zone: non-touching: 0.878788, touching: 0.887755, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 118, HR zone: non-touching: 0.888889, touching: 0.897959, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 119, HR zone: non-touching: 0.898990, touching: 0.908163, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 120, HR zone: non-touching: 0.909091, touching: 0.918367, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 121, HR zone: non-touching: 0.919192, touching: 0.928571, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 122, HR zone: non-touching: 0.929293, touching: 0.938776, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 123, HR zone: non-touching: 0.939394, touching: 0.948980, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 124, HR zone: non-touching: 0.949495, touching: 0.959184, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 125, HR zone: non-touching: 0.959596, touching: 0.969388, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 126, HR zone: non-touching: 0.969697, touching: 0.979592, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 127, HR zone: non-touching: 0.979798, touching: 0.989796, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 128, HR zone: non-touching: 0.989899, touching: 1.000000, non-touching 'angle': 0.010101, touching 'angle': 0.010204 DEBUG (07:18): HR: 129, HR zone: non-touching: 1.000000, touching: 1.040000, non-touching 'angle': 0.010101, touching 'angle': 0.040000 DEBUG (07:18): HR: 130, HR zone: non-touching: 1.040000, touching: 1.080000, non-touching 'angle': 0.040000, touching 'angle': 0.040000 DEBUG (07:18): HR: 131, HR zone: non-touching: 1.080000, touching: 1.120000, non-touching 'angle': 0.040000, touching 'angle': 0.040000 DEBUG (07:18): HR: 132, HR zone: non-touching: 1.120000, touching: 1.160000, non-touching 'angle': 0.040000, touching 'angle': 0.040000 DEBUG (07:18): HR: 133, HR zone: non-touching: 1.160000, touching: 1.200000, non-touching 'angle': 0.040000, touching 'angle': 0.040000 DEBUG (07:18): HR: 134, HR zone: non-touching: 1.200000, touching: 1.240000, non-touching 'angle': 0.040000, touching 'angle': 0.040000 DEBUG (07:18): HR: 135, HR zone: non-touching: 1.240000, touching: 1.280000, non-touching 'angle': 0.040000, touching 'angle': 0.040000 DEBUG (07:18): HR: 136, HR zone: non-touching: 1.280000, touching: 1.320000, non-touching 'angle': 0.040000, touching 'angle': 0.040000 DEBUG (07:18): HR: 137, HR zone: non-touching: 1.320000, touching: 1.360000, non-touching 'angle': 0.040000, touching 'angle': 0.040000 DEBUG (07:18): HR: 138, HR zone: non-touching: 1.360000, touching: 1.400000, non-touching 'angle': 0.040000, touching 'angle': 0.040000 DEBUG (07:18): HR: 139, HR zone: non-touching: 1.400000, touching: 1.440000, non-touching 'angle': 0.040000, touching 'angle': 0.040000 DEBUG (07:18): HR: 140, HR zone: non-touching: 1.440000, touching: 1.480000, non-touching 'angle': 0.040000, touching 'angle': 0.040000 DEBUG (07:18): HR: 141, HR zone: non-touching: 1.480000, touching: 1.520000, non-touching 'angle': 0.040000, touching 'angle': 0.040000 DEBUG (07:18): HR: 142, HR zone: non-touching: 1.520000, touching: 1.560000, non-touching 'angle': 0.040000, touching 'angle': 0.040000 DEBUG (07:18): HR: 143, HR zone: non-touching: 1.560000, touching: 1.600000, non-touching 'angle': 0.040000, touching 'angle': 0.040000 DEBUG (07:18): HR: 144, HR zone: non-touching: 1.600000, touching: 1.640000, non-touching 'angle': 0.040000, touching 'angle': 0.040000 DEBUG (07:18): HR: 145, HR zone: non-touching: 1.640000, touching: 1.680000, non-touching 'angle': 0.040000, touching 'angle': 0.040000 DEBUG (07:18): HR: 146, HR zone: non-touching: 1.680000, touching: 1.720000, non-touching 'angle': 0.040000, touching 'angle': 0.040000 DEBUG (07:18): HR: 147, HR zone: non-touching: 1.720000, touching: 1.760000, non-touching 'angle': 0.040000, touching 'angle': 0.040000 DEBUG (07:18): HR: 148, HR zone: non-touching: 1.760000, touching: 1.800000, non-touching 'angle': 0.040000, touching 'angle': 0.040000 DEBUG (07:18): HR: 149, HR zone: non-touching: 1.800000, touching: 1.840000, non-touching 'angle': 0.040000, touching 'angle': 0.040000 DEBUG (07:18): HR: 150, HR zone: non-touching: 1.840000, touching: 1.880000, non-touching 'angle': 0.040000, touching 'angle': 0.040000 DEBUG (07:18): HR: 151, HR zone: non-touching: 1.880000, touching: 1.920000, non-touching 'angle': 0.040000, touching 'angle': 0.040000 DEBUG (07:18): HR: 152, HR zone: non-touching: 1.920000, touching: 1.960000, non-touching 'angle': 0.040000, touching 'angle': 0.040000 DEBUG (07:18): HR: 153, HR zone: non-touching: 1.960000, touching: 2.000000, non-touching 'angle': 0.040000, touching 'angle': 0.040000 DEBUG (07:18): HR: 154, HR zone: non-touching: 2.000000, touching: 2.111111, non-touching 'angle': 0.040000, touching 'angle': 0.111111 DEBUG (07:18): HR: 155, HR zone: non-touching: 2.111111, touching: 2.222222, non-touching 'angle': 0.111111, touching 'angle': 0.111111 DEBUG (07:18): HR: 156, HR zone: non-touching: 2.222222, touching: 2.333333, non-touching 'angle': 0.111111, touching 'angle': 0.111111 DEBUG (07:18): HR: 157, HR zone: non-touching: 2.333333, touching: 2.444444, non-touching 'angle': 0.111111, touching 'angle': 0.111111 DEBUG (07:18): HR: 158, HR zone: non-touching: 2.444444, touching: 2.555556, non-touching 'angle': 0.111111, touching 'angle': 0.111111 DEBUG (07:18): HR: 159, HR zone: non-touching: 2.555556, touching: 2.666667, non-touching 'angle': 0.111111, touching 'angle': 0.111111 DEBUG (07:18): HR: 160, HR zone: non-touching: 2.666667, touching: 2.777778, non-touching 'angle': 0.111111, touching 'angle': 0.111111 DEBUG (07:18): HR: 161, HR zone: non-touching: 2.777778, touching: 2.888889, non-touching 'angle': 0.111111, touching 'angle': 0.111111 DEBUG (07:18): HR: 162, HR zone: non-touching: 2.888889, touching: 3.000000, non-touching 'angle': 0.111111, touching 'angle': 0.111111 DEBUG (07:18): HR: 163, HR zone: non-touching: 3.000000, touching: 3.055556, non-touching 'angle': 0.111111, touching 'angle': 0.055556 DEBUG (07:18): HR: 164, HR zone: non-touching: 3.055556, touching: 3.111111, non-touching 'angle': 0.055556, touching 'angle': 0.055556 DEBUG (07:18): HR: 165, HR zone: non-touching: 3.111111, touching: 3.166667, non-touching 'angle': 0.055556, touching 'angle': 0.055556 DEBUG (07:18): HR: 166, HR zone: non-touching: 3.166667, touching: 3.222222, non-touching 'angle': 0.055556, touching 'angle': 0.055556 DEBUG (07:18): HR: 167, HR zone: non-touching: 3.222222, touching: 3.277778, non-touching 'angle': 0.055556, touching 'angle': 0.055555 DEBUG (07:18): HR: 168, HR zone: non-touching: 3.277778, touching: 3.333333, non-touching 'angle': 0.055555, touching 'angle': 0.055556 DEBUG (07:18): HR: 169, HR zone: non-touching: 3.333333, touching: 3.388889, non-touching 'angle': 0.055556, touching 'angle': 0.055556 DEBUG (07:18): HR: 170, HR zone: non-touching: 3.388889, touching: 3.444444, non-touching 'angle': 0.055556, touching 'angle': 0.055556 DEBUG (07:18): HR: 171, HR zone: non-touching: 3.444444, touching: 3.500000, non-touching 'angle': 0.055556, touching 'angle': 0.055556 DEBUG (07:18): HR: 172, HR zone: non-touching: 3.500000, touching: 3.555556, non-touching 'angle': 0.055556, touching 'angle': 0.055556 DEBUG (07:18): HR: 173, HR zone: non-touching: 3.555556, touching: 3.611111, non-touching 'angle': 0.055556, touching 'angle': 0.055556 DEBUG (07:18): HR: 174, HR zone: non-touching: 3.611111, touching: 3.666667, non-touching 'angle': 0.055556, touching 'angle': 0.055556 DEBUG (07:18): HR: 175, HR zone: non-touching: 3.666667, touching: 3.722222, non-touching 'angle': 0.055555, touching 'angle': 0.055556 DEBUG (07:18): HR: 176, HR zone: non-touching: 3.722222, touching: 3.777778, non-touching 'angle': 0.055556, touching 'angle': 0.055555 DEBUG (07:18): HR: 177, HR zone: non-touching: 3.777778, touching: 3.833333, non-touching 'angle': 0.055555, touching 'angle': 0.055556 DEBUG (07:18): HR: 178, HR zone: non-touching: 3.833333, touching: 3.888889, non-touching 'angle': 0.055556, touching 'angle': 0.055556 DEBUG (07:18): HR: 179, HR zone: non-touching: 3.888889, touching: 3.944444, non-touching 'angle': 0.055555, touching 'angle': 0.055556 DEBUG (07:18): HR: 180, HR zone: non-touching: 3.944444, touching: 4.000000, non-touching 'angle': 0.055556, touching 'angle': 0.055556 DEBUG (07:18): HR: 181, HR zone: non-touching: 4.000000, touching: 4.200000, non-touching 'angle': 0.055556, touching 'angle': 0.200000 DEBUG (07:18): HR: 182, HR zone: non-touching: 4.200000, touching: 4.400000, non-touching 'angle': 0.200000, touching 'angle': 0.200000 DEBUG (07:18): HR: 183, HR zone: non-touching: 4.400000, touching: 4.600000, non-touching 'angle': 0.200000, touching 'angle': 0.200000 DEBUG (07:18): HR: 184, HR zone: non-touching: 4.600000, touching: 4.800000, non-touching 'angle': 0.200000, touching 'angle': 0.200000 DEBUG (07:18): HR: 185, HR zone: non-touching: 4.800000, touching: 5.000000, non-touching 'angle': 0.200000, touching 'angle': 0.200000 DEBUG (07:18): HR: 186, HR zone: non-touching: 5.000000, touching: 5.200000, non-touching 'angle': 0.200000, touching 'angle': 0.200000 DEBUG (07:18): HR: 187, HR zone: non-touching: 5.200000, touching: 5.400000, non-touching 'angle': 0.200000, touching 'angle': 0.200000 DEBUG (07:18): HR: 188, HR zone: non-touching: 5.400000, touching: 5.600000, non-touching 'angle': 0.200000, touching 'angle': 0.200000 DEBUG (07:18): HR: 189, HR zone: non-touching: 5.600000, touching: 5.800000, non-touching 'angle': 0.200000, touching 'angle': 0.200000 DEBUG (07:18): HR: 190, HR zone: non-touching: 5.800000, touching: 6.000000, non-touching 'angle': 0.200000, touching 'angle': 0.200000 DEBUG (07:18): HR: 191, HR zone: non-touching: 6.000000, touching: 6.000000, non-touching 'angle': 0.200000, touching 'angle': 0.000000 DEBUG (07:18): HR: 192, HR zone: non-touching: 6.200000, touching: 6.000000, non-touching 'angle': 0.200000, touching 'angle': 0.000000 DEBUG (07:18): HR: 193, HR zone: non-touching: 6.400000, touching: 6.000000, non-touching 'angle': 0.200000, touching 'angle': 0.000000 DEBUG (07:18): HR: 194, HR zone: non-touching: 6.600000, touching: 6.000000, non-touching 'angle': 0.200000, touching 'angle': 0.000000 DEBUG (07:18): HR: 195, HR zone: non-touching: 6.800000, touching: 6.000000, non-touching 'angle': 0.200000, touching 'angle': 0.000000 DEBUG (07:18): HR: 196, HR zone: non-touching: 7.000000, touching: 6.000000, non-touching 'angle': 0.200000, touching 'angle': 0.000000 DEBUG (07:18): HR: 197, HR zone: non-touching: 7.200000, touching: 6.000000, non-touching 'angle': 0.200000, touching 'angle': 0.000000 DEBUG (07:18): HR: 198, HR zone: non-touching: 7.400000, touching: 6.000000, non-touching 'angle': 0.200000, touching 'angle': 0.000000 DEBUG (07:18): HR: 199, HR zone: non-touching: 7.600000, touching: 6.000000, non-touching 'angle': 0.200000, touching 'angle': 0.000000 DEBUG (07:18): HR: 200, HR zone: non-touching: 7.800000, touching: 6.000000, non-touching 'angle': 0.200000, touching 'angle': 0.000000 DEBUG (07:18): HR: 201, HR zone: non-touching: 8.000000, touching: 6.000000, non-touching 'angle': 0.200000, touching 'angle': 0.000000 DEBUG (07:18): HR: 202, HR zone: non-touching: 8.200000, touching: 6.000000, non-touching 'angle': 0.200000, touching 'angle': 0.000000 DEBUG (07:18): HR: 203, HR zone: non-touching: 8.400000, touching: 6.000000, non-touching 'angle': 0.200000, touching 'angle': 0.000000 DEBUG (07:18): HR: 204, HR zone: non-touching: 8.600000, touching: 6.000000, non-touching 'angle': 0.200001, touching 'angle': 0.000000 DEBUG (07:18): HR: 205, HR zone: non-touching: 8.800000, touching: 6.000000, non-touching 'angle': 0.200000, touching 'angle': 0.000000 DEBUG (07:18): HR: 206, HR zone: non-touching: 9.000000, touching: 6.000000, non-touching 'angle': 0.200000, touching 'angle': 0.000000 DEBUG (07:18): HR: 207, HR zone: non-touching: 9.200000, touching: 6.000000, non-touching 'angle': 0.200000, touching 'angle': 0.000000 DEBUG (07:18): HR: 208, HR zone: non-touching: 9.400000, touching: 6.000000, non-touching 'angle': 0.200000, touching 'angle': 0.000000 DEBUG (07:18): HR: 209, HR zone: non-touching: 9.600000, touching: 6.000000, non-touching 'angle': 0.200001, touching 'angle': 0.000000 DEBUG (07:18): HR: 210, HR zone: non-touching: 9.800000, touching: 6.000000, non-touching 'angle': 0.200000, touching 'angle': 0.000000 DEBUG (07:18): HR: 211, HR zone: non-touching: 10.000000, touching: 6.000000, non-touching 'angle': 0.200000, touching 'angle': 0.000000 DEBUG (07:18): HR: 212, HR zone: non-touching: 10.200000, touching: 6.000000, non-touching 'angle': 0.200000, touching 'angle': 0.000000 DEBUG (07:18): HR: 213, HR zone: non-touching: 10.400000, touching: 6.000000, non-touching 'angle': 0.200000, touching 'angle': 0.000000 DEBUG (07:18): HR: 214, HR zone: non-touching: 10.600000, touching: 6.000000, non-touching 'angle': 0.200001, touching 'angle': 0.000000 DEBUG (07:18): HR: 215, HR zone: non-touching: 10.800000, touching: 6.000000, non-touching 'angle': 0.200000, touching 'angle': 0.000000 DEBUG (07:18): HR: 216, HR zone: non-touching: 11.000000, touching: 6.000000, non-touching 'angle': 0.200000, touching 'angle': 0.000000 DEBUG (07:18): HR: 217, HR zone: non-touching: 11.200000, touching: 6.000000, non-touching 'angle': 0.200000, touching 'angle': 0.000000 DEBUG (07:18): HR: 218, HR zone: non-touching: 11.400000, touching: 6.000000, non-touching 'angle': 0.200000, touching 'angle': 0.000000 DEBUG (07:18): HR: 219, HR zone: non-touching: 11.600000, touching: 6.000000, non-touching 'angle': 0.200001, touching 'angle': 0.000000 DEBUG (07:18): HR: 220, HR zone: non-touching: 11.800000, touching: 6.000000, non-touching 'angle': 0.200000, touching 'angle': 0.000000 DEBUG (07:18): HR: 221, HR zone: non-touching: 12.000000, touching: 6.000000, non-touching 'angle': 0.200000, touching 'angle': 0.000000 DEBUG (07:18): HR: 222, HR zone: non-touching: 12.200000, touching: 6.000000, non-touching 'angle': 0.200000, touching 'angle': 0.000000 DEBUG (07:18): HR: 223, HR zone: non-touching: 12.400000, touching: 6.000000, non-touching 'angle': 0.200000, touching 'angle': 0.000000 DEBUG (07:18): HR: 224, HR zone: non-touching: 12.600000, touching: 6.000000, non-touching 'angle': 0.200001, touching 'angle': 0.000000 DEBUG (07:18): HR: 225, HR zone: non-touching: 12.800000, touching: 6.000000, non-touching 'angle': 0.200000, touching 'angle': 0.000000 DEBUG (07:18): HR: 226, HR zone: non-touching: 13.000000, touching: 6.000000, non-touching 'angle': 0.200000, touching 'angle': 0.000000 DEBUG (07:18): HR: 227, HR zone: non-touching: 13.200000, touching: 6.000000, non-touching 'angle': 0.200000, touching 'angle': 0.000000 DEBUG (07:18): HR: 228, HR zone: non-touching: 13.400000, touching: 6.000000, non-touching 'angle': 0.200000, touching 'angle': 0.000000 DEBUG (07:18): HR: 229, HR zone: non-touching: 13.600000, touching: 6.000000, non-touching 'angle': 0.200001, touching 'angle': 0.000000 DEBUG (07:18): HR: 230, HR zone: non-touching: 13.800000, touching: 6.000000, non-touching 'angle': 0.200000, touching 'angle': 0.000000 DEBUG (07:18): HR: 231, HR zone: non-touching: 14.000000, touching: 6.000000, non-touching 'angle': 0.200000, touching 'angle': 0.000000 DEBUG (07:18): HR: 232, HR zone: non-touching: 14.200000, touching: 6.000000, non-touching 'angle': 0.200000, touching 'angle': 0.000000 DEBUG (07:18): HR: 233, HR zone: non-touching: 14.400000, touching: 6.000000, non-touching 'angle': 0.200000, touching 'angle': 0.000000 DEBUG (07:18): HR: 234, HR zone: non-touching: 14.600000, touching: 6.000000, non-touching 'angle': 0.200001, touching 'angle': 0.000000 DEBUG (07:18): HR: 235, HR zone: non-touching: 14.800000, touching: 6.000000, non-touching 'angle': 0.200000, touching 'angle': 0.000000 DEBUG (07:18): HR: 236, HR zone: non-touching: 15.000000, touching: 6.000000, non-touching 'angle': 0.200000, touching 'angle': 0.000000 DEBUG (07:18): HR: 237, HR zone: non-touching: 15.200000, touching: 6.000000, non-touching 'angle': 0.200000, touching 'angle': 0.000000 DEBUG (07:18): HR: 238, HR zone: non-touching: 15.400000, touching: 6.000000, non-touching 'angle': 0.200000, touching 'angle': 0.000000 DEBUG (07:18): HR: 239, HR zone: non-touching: 15.600000, touching: 6.000000, non-touching 'angle': 0.200001, touching 'angle': 0.000000 DEBUG (07:18): HR: 240, HR zone: non-touching: 15.800000, touching: 6.000000, non-touching 'angle': 0.200000, touching 'angle': 0.000000 DEBUG (07:18): HR: 241, HR zone: non-touching: 16.000000, touching: 6.000000, non-touching 'angle': 0.200000, touching 'angle': 0.000000 DEBUG (07:18): HR: 242, HR zone: non-touching: 16.200001, touching: 6.000000, non-touching 'angle': 0.200001, touching 'angle': 0.000000 DEBUG (07:18): HR: 243, HR zone: non-touching: 16.400000, touching: 6.000000, non-touching 'angle': 0.199999, touching 'angle': 0.000000 DEBUG (07:18): HR: 244, HR zone: non-touching: 16.600000, touching: 6.000000, non-touching 'angle': 0.200001, touching 'angle': 0.000000 DEBUG (07:18): HR: 245, HR zone: non-touching: 16.799999, touching: 6.000000, non-touching 'angle': 0.199999, touching 'angle': 0.000000 DEBUG (07:18): HR: 246, HR zone: non-touching: 17.000000, touching: 6.000000, non-touching 'angle': 0.200001, touching 'angle': 0.000000 DEBUG (07:18): HR: 247, HR zone: non-touching: 17.200001, touching: 6.000000, non-touching 'angle': 0.200001, touching 'angle': 0.000000 DEBUG (07:18): HR: 248, HR zone: non-touching: 17.400000, touching: 6.000000, non-touching 'angle': 0.199999, touching 'angle': 0.000000 DEBUG (07:18): HR: 249, HR zone: non-touching: 17.600000, touching: 6.000000, non-touching 'angle': 0.200001, touching 'angle': 0.000000 DEBUG (07:18): HR: 250, HR zone: non-touching: 17.799999, touching: 6.000000, non-touching 'angle': 0.199999, touching 'angle': 0.000000 DEBUG (07:18): HR: 251, HR zone: non-touching: 18.000000, touching: 6.000000, non-touching 'angle': 0.200001, touching 'angle': 0.000000 DEBUG (07:18): HR: 252, HR zone: non-touching: 18.200001, touching: 6.000000, non-touching 'angle': 0.200001, touching 'angle': 0.000000 DEBUG (07:18): HR: 253, HR zone: non-touching: 18.400000, touching: 6.000000, non-touching 'angle': 0.199999, touching 'angle': 0.000000 DEBUG (07:18): HR: 254, HR zone: non-touching: 18.600000, touching: 6.000000, non-touching 'angle': 0.200001, touching 'angle': 0.000000 DEBUG (07:18): HR: 255, HR zone: non-touching: 18.799999, touching: 6.000000, non-touching 'angle': 0.199999, touching 'angle': 0.000000 PASS
My data:
Executing test compareHrZones... DEBUG (07:20): HR Zones: [100, 120, 140, 160, 175, 190] DEBUG (07:20): HR: 0, HR zone: non-touching: -0.422535, touching: 0.000000, non-touching 'angle': -0.422535, touching 'angle': 0.000000 DEBUG (07:20): HR: 1, HR zone: non-touching: -0.408451, touching: 0.000000, non-touching 'angle': 0.014085, touching 'angle': 0.000000 DEBUG (07:20): HR: 2, HR zone: non-touching: -0.394366, touching: 0.000000, non-touching 'angle': 0.014085, touching 'angle': 0.000000 DEBUG (07:20): HR: 3, HR zone: non-touching: -0.380282, touching: 0.000000, non-touching 'angle': 0.014084, touching 'angle': 0.000000 DEBUG (07:20): HR: 4, HR zone: non-touching: -0.366197, touching: 0.000000, non-touching 'angle': 0.014085, touching 'angle': 0.000000 DEBUG (07:20): HR: 5, HR zone: non-touching: -0.352113, touching: 0.000000, non-touching 'angle': 0.014084, touching 'angle': 0.000000 DEBUG (07:20): HR: 6, HR zone: non-touching: -0.338028, touching: 0.000000, non-touching 'angle': 0.014084, touching 'angle': 0.000000 DEBUG (07:20): HR: 7, HR zone: non-touching: -0.323944, touching: 0.000000, non-touching 'angle': 0.014085, touching 'angle': 0.000000 DEBUG (07:20): HR: 8, HR zone: non-touching: -0.309859, touching: 0.000000, non-touching 'angle': 0.014085, touching 'angle': 0.000000 DEBUG (07:20): HR: 9, HR zone: non-touching: -0.295775, touching: 0.000000, non-touching 'angle': 0.014085, touching 'angle': 0.000000 DEBUG (07:20): HR: 10, HR zone: non-touching: -0.281690, touching: 0.000000, non-touching 'angle': 0.014084, touching 'angle': 0.000000 DEBUG (07:20): HR: 11, HR zone: non-touching: -0.267606, touching: 0.000000, non-touching 'angle': 0.014085, touching 'angle': 0.000000 DEBUG (07:20): HR: 12, HR zone: non-touching: -0.253521, touching: 0.000000, non-touching 'angle': 0.014085, touching 'angle': 0.000000 DEBUG (07:20): HR: 13, HR zone: non-touching: -0.239437, touching: 0.000000, non-touching 'angle': 0.014084, touching 'angle': 0.000000 DEBUG (07:20): HR: 14, HR zone: non-touching: -0.225352, touching: 0.000000, non-touching 'angle': 0.014085, touching 'angle': 0.000000 DEBUG (07:20): HR: 15, HR zone: non-touching: -0.211268, touching: 0.000000, non-touching 'angle': 0.014085, touching 'angle': 0.000000 DEBUG (07:20): HR: 16, HR zone: non-touching: -0.197183, touching: 0.000000, non-touching 'angle': 0.014085, touching 'angle': 0.000000 DEBUG (07:20): HR: 17, HR zone: non-touching: -0.183099, touching: 0.000000, non-touching 'angle': 0.014085, touching 'angle': 0.000000 DEBUG (07:20): HR: 18, HR zone: non-touching: -0.169014, touching: 0.000000, non-touching 'angle': 0.014084, touching 'angle': 0.000000 DEBUG (07:20): HR: 19, HR zone: non-touching: -0.154930, touching: 0.000000, non-touching 'angle': 0.014085, touching 'angle': 0.000000 DEBUG (07:20): HR: 20, HR zone: non-touching: -0.140845, touching: 0.000000, non-touching 'angle': 0.014085, touching 'angle': 0.000000 DEBUG (07:20): HR: 21, HR zone: non-touching: -0.126761, touching: 0.000000, non-touching 'angle': 0.014085, touching 'angle': 0.000000 DEBUG (07:20): HR: 22, HR zone: non-touching: -0.112676, touching: 0.000000, non-touching 'angle': 0.014085, touching 'angle': 0.000000 DEBUG (07:20): HR: 23, HR zone: non-touching: -0.098592, touching: 0.000000, non-touching 'angle': 0.014085, touching 'angle': 0.000000 DEBUG (07:20): HR: 24, HR zone: non-touching: -0.084507, touching: 0.000000, non-touching 'angle': 0.014084, touching 'angle': 0.000000 DEBUG (07:20): HR: 25, HR zone: non-touching: -0.070423, touching: 0.000000, non-touching 'angle': 0.014085, touching 'angle': 0.000000 DEBUG (07:20): HR: 26, HR zone: non-touching: -0.056338, touching: 0.000000, non-touching 'angle': 0.014085, touching 'angle': 0.000000 DEBUG (07:20): HR: 27, HR zone: non-touching: -0.042254, touching: 0.000000, non-touching 'angle': 0.014085, touching 'angle': 0.000000 DEBUG (07:20): HR: 28, HR zone: non-touching: -0.028169, touching: 0.000000, non-touching 'angle': 0.014085, touching 'angle': 0.000000 DEBUG (07:20): HR: 29, HR zone: non-touching: -0.014085, touching: 0.000000, non-touching 'angle': 0.014085, touching 'angle': 0.000000 DEBUG (07:20): HR: 30, HR zone: non-touching: 0.000000, touching: 0.000000, non-touching 'angle': 0.014085, touching 'angle': 0.000000 DEBUG (07:20): HR: 31, HR zone: non-touching: 0.014085, touching: 0.014286, non-touching 'angle': 0.014085, touching 'angle': 0.014286 DEBUG (07:20): HR: 32, HR zone: non-touching: 0.028169, touching: 0.028571, non-touching 'angle': 0.014085, touching 'angle': 0.014286 DEBUG (07:20): HR: 33, HR zone: non-touching: 0.042254, touching: 0.042857, non-touching 'angle': 0.014085, touching 'angle': 0.014286 DEBUG (07:20): HR: 34, HR zone: non-touching: 0.056338, touching: 0.057143, non-touching 'angle': 0.014085, touching 'angle': 0.014286 DEBUG (07:20): HR: 35, HR zone: non-touching: 0.070423, touching: 0.071429, non-touching 'angle': 0.014085, touching 'angle': 0.014286 DEBUG (07:20): HR: 36, HR zone: non-touching: 0.084507, touching: 0.085714, non-touching 'angle': 0.014085, touching 'angle': 0.014286 DEBUG (07:20): HR: 37, HR zone: non-touching: 0.098592, touching: 0.100000, non-touching 'angle': 0.014084, touching 'angle': 0.014286 DEBUG (07:20): HR: 38, HR zone: non-touching: 0.112676, touching: 0.114286, non-touching 'angle': 0.014085, touching 'angle': 0.014286 DEBUG (07:20): HR: 39, HR zone: non-touching: 0.126761, touching: 0.128571, non-touching 'angle': 0.014085, touching 'angle': 0.014286 DEBUG (07:20): HR: 40, HR zone: non-touching: 0.140845, touching: 0.142857, non-touching 'angle': 0.014085, touching 'angle': 0.014286 DEBUG (07:20): HR: 41, HR zone: non-touching: 0.154930, touching: 0.157143, non-touching 'angle': 0.014085, touching 'angle': 0.014286 DEBUG (07:20): HR: 42, HR zone: non-touching: 0.169014, touching: 0.171429, non-touching 'angle': 0.014085, touching 'angle': 0.014286 DEBUG (07:20): HR: 43, HR zone: non-touching: 0.183099, touching: 0.185714, non-touching 'angle': 0.014084, touching 'angle': 0.014286 DEBUG (07:20): HR: 44, HR zone: non-touching: 0.197183, touching: 0.200000, non-touching 'angle': 0.014085, touching 'angle': 0.014286 DEBUG (07:20): HR: 45, HR zone: non-touching: 0.211268, touching: 0.214286, non-touching 'angle': 0.014085, touching 'angle': 0.014286 DEBUG (07:20): HR: 46, HR zone: non-touching: 0.225352, touching: 0.228571, non-touching 'angle': 0.014085, touching 'angle': 0.014286 DEBUG (07:20): HR: 47, HR zone: non-touching: 0.239437, touching: 0.242857, non-touching 'angle': 0.014085, touching 'angle': 0.014286 DEBUG (07:20): HR: 48, HR zone: non-touching: 0.253521, touching: 0.257143, non-touching 'angle': 0.014084, touching 'angle': 0.014286 DEBUG (07:20): HR: 49, HR zone: non-touching: 0.267606, touching: 0.271429, non-touching 'angle': 0.014085, touching 'angle': 0.014286 DEBUG (07:20): HR: 50, HR zone: non-touching: 0.281690, touching: 0.285714, non-touching 'angle': 0.014085, touching 'angle': 0.014286 DEBUG (07:20): HR: 51, HR zone: non-touching: 0.295775, touching: 0.300000, non-touching 'angle': 0.014084, touching 'angle': 0.014286 DEBUG (07:20): HR: 52, HR zone: non-touching: 0.309859, touching: 0.314286, non-touching 'angle': 0.014085, touching 'angle': 0.014286 DEBUG (07:20): HR: 53, HR zone: non-touching: 0.323944, touching: 0.328571, non-touching 'angle': 0.014085, touching 'angle': 0.014286 DEBUG (07:20): HR: 54, HR zone: non-touching: 0.338028, touching: 0.342857, non-touching 'angle': 0.014085, touching 'angle': 0.014286 DEBUG (07:20): HR: 55, HR zone: non-touching: 0.352113, touching: 0.357143, non-touching 'angle': 0.014084, touching 'angle': 0.014286 DEBUG (07:20): HR: 56, HR zone: non-touching: 0.366197, touching: 0.371429, non-touching 'angle': 0.014084, touching 'angle': 0.014286 DEBUG (07:20): HR: 57, HR zone: non-touching: 0.380282, touching: 0.385714, non-touching 'angle': 0.014085, touching 'angle': 0.014286 DEBUG (07:20): HR: 58, HR zone: non-touching: 0.394366, touching: 0.400000, non-touching 'angle': 0.014084, touching 'angle': 0.014286 DEBUG (07:20): HR: 59, HR zone: non-touching: 0.408451, touching: 0.414286, non-touching 'angle': 0.014085, touching 'angle': 0.014286 DEBUG (07:20): HR: 60, HR zone: non-touching: 0.422535, touching: 0.428571, non-touching 'angle': 0.014085, touching 'angle': 0.014286 DEBUG (07:20): HR: 61, HR zone: non-touching: 0.436620, touching: 0.442857, non-touching 'angle': 0.014085, touching 'angle': 0.014286 DEBUG (07:20): HR: 62, HR zone: non-touching: 0.450704, touching: 0.457143, non-touching 'angle': 0.014084, touching 'angle': 0.014286 DEBUG (07:20): HR: 63, HR zone: non-touching: 0.464789, touching: 0.471429, non-touching 'angle': 0.014085, touching 'angle': 0.014286 DEBUG (07:20): HR: 64, HR zone: non-touching: 0.478873, touching: 0.485714, non-touching 'angle': 0.014085, touching 'angle': 0.014286 DEBUG (07:20): HR: 65, HR zone: non-touching: 0.492958, touching: 0.500000, non-touching 'angle': 0.014085, touching 'angle': 0.014286 DEBUG (07:20): HR: 66, HR zone: non-touching: 0.507042, touching: 0.514286, non-touching 'angle': 0.014084, touching 'angle': 0.014286 DEBUG (07:20): HR: 67, HR zone: non-touching: 0.521127, touching: 0.528571, non-touching 'angle': 0.014085, touching 'angle': 0.014286 DEBUG (07:20): HR: 68, HR zone: non-touching: 0.535211, touching: 0.542857, non-touching 'angle': 0.014085, touching 'angle': 0.014286 DEBUG (07:20): HR: 69, HR zone: non-touching: 0.549296, touching: 0.557143, non-touching 'angle': 0.014085, touching 'angle': 0.014286 DEBUG (07:20): HR: 70, HR zone: non-touching: 0.563380, touching: 0.571429, non-touching 'angle': 0.014085, touching 'angle': 0.014286 DEBUG (07:20): HR: 71, HR zone: non-touching: 0.577465, touching: 0.585714, non-touching 'angle': 0.014085, touching 'angle': 0.014286 DEBUG (07:20): HR: 72, HR zone: non-touching: 0.591549, touching: 0.600000, non-touching 'angle': 0.014084, touching 'angle': 0.014286 DEBUG (07:20): HR: 73, HR zone: non-touching: 0.605634, touching: 0.614286, non-touching 'angle': 0.014085, touching 'angle': 0.014286 DEBUG (07:20): HR: 74, HR zone: non-touching: 0.619718, touching: 0.628571, non-touching 'angle': 0.014085, touching 'angle': 0.014286 DEBUG (07:20): HR: 75, HR zone: non-touching: 0.633803, touching: 0.642857, non-touching 'angle': 0.014085, touching 'angle': 0.014286 DEBUG (07:20): HR: 76, HR zone: non-touching: 0.647887, touching: 0.657143, non-touching 'angle': 0.014085, touching 'angle': 0.014286 DEBUG (07:20): HR: 77, HR zone: non-touching: 0.661972, touching: 0.671429, non-touching 'angle': 0.014084, touching 'angle': 0.014286 DEBUG (07:20): HR: 78, HR zone: non-touching: 0.676056, touching: 0.685714, non-touching 'angle': 0.014085, touching 'angle': 0.014286 DEBUG (07:20): HR: 79, HR zone: non-touching: 0.690141, touching: 0.700000, non-touching 'angle': 0.014084, touching 'angle': 0.014286 DEBUG (07:20): HR: 80, HR zone: non-touching: 0.704225, touching: 0.714286, non-touching 'angle': 0.014085, touching 'angle': 0.014286 DEBUG (07:20): HR: 81, HR zone: non-touching: 0.718310, touching: 0.728571, non-touching 'angle': 0.014085, touching 'angle': 0.014286 DEBUG (07:20): HR: 82, HR zone: non-touching: 0.732394, touching: 0.742857, non-touching 'angle': 0.014084, touching 'angle': 0.014286 DEBUG (07:20): HR: 83, HR zone: non-touching: 0.746479, touching: 0.757143, non-touching 'angle': 0.014085, touching 'angle': 0.014286 DEBUG (07:20): HR: 84, HR zone: non-touching: 0.760563, touching: 0.771429, non-touching 'angle': 0.014085, touching 'angle': 0.014286 DEBUG (07:20): HR: 85, HR zone: non-touching: 0.774648, touching: 0.785714, non-touching 'angle': 0.014085, touching 'angle': 0.014286 DEBUG (07:20): HR: 86, HR zone: non-touching: 0.788732, touching: 0.800000, non-touching 'angle': 0.014084, touching 'angle': 0.014286 DEBUG (07:20): HR: 87, HR zone: non-touching: 0.802817, touching: 0.814286, non-touching 'angle': 0.014085, touching 'angle': 0.014286 DEBUG (07:20): HR: 88, HR zone: non-touching: 0.816901, touching: 0.828571, non-touching 'angle': 0.014084, touching 'angle': 0.014286 DEBUG (07:20): HR: 89, HR zone: non-touching: 0.830986, touching: 0.842857, non-touching 'angle': 0.014085, touching 'angle': 0.014286 DEBUG (07:20): HR: 90, HR zone: non-touching: 0.845070, touching: 0.857143, non-touching 'angle': 0.014084, touching 'angle': 0.014286 DEBUG (07:20): HR: 91, HR zone: non-touching: 0.859155, touching: 0.871429, non-touching 'angle': 0.014084, touching 'angle': 0.014286 DEBUG (07:20): HR: 92, HR zone: non-touching: 0.873239, touching: 0.885714, non-touching 'angle': 0.014085, touching 'angle': 0.014286 DEBUG (07:20): HR: 93, HR zone: non-touching: 0.887324, touching: 0.900000, non-touching 'angle': 0.014084, touching 'angle': 0.014286 DEBUG (07:20): HR: 94, HR zone: non-touching: 0.901408, touching: 0.914286, non-touching 'angle': 0.014085, touching 'angle': 0.014286 DEBUG (07:20): HR: 95, HR zone: non-touching: 0.915493, touching: 0.928571, non-touching 'angle': 0.014085, touching 'angle': 0.014286 DEBUG (07:20): HR: 96, HR zone: non-touching: 0.929577, touching: 0.942857, non-touching 'angle': 0.014085, touching 'angle': 0.014286 DEBUG (07:20): HR: 97, HR zone: non-touching: 0.943662, touching: 0.957143, non-touching 'angle': 0.014084, touching 'angle': 0.014286 DEBUG (07:20): HR: 98, HR zone: non-touching: 0.957747, touching: 0.971429, non-touching 'angle': 0.014085, touching 'angle': 0.014286 DEBUG (07:20): HR: 99, HR zone: non-touching: 0.971831, touching: 0.985714, non-touching 'angle': 0.014084, touching 'angle': 0.014286 DEBUG (07:20): HR: 100, HR zone: non-touching: 0.985916, touching: 1.000000, non-touching 'angle': 0.014085, touching 'angle': 0.014286 DEBUG (07:20): HR: 101, HR zone: non-touching: 1.000000, touching: 1.050000, non-touching 'angle': 0.014084, touching 'angle': 0.050000 DEBUG (07:20): HR: 102, HR zone: non-touching: 1.050000, touching: 1.100000, non-touching 'angle': 0.050000, touching 'angle': 0.050000 DEBUG (07:20): HR: 103, HR zone: non-touching: 1.100000, touching: 1.150000, non-touching 'angle': 0.050000, touching 'angle': 0.050000 DEBUG (07:20): HR: 104, HR zone: non-touching: 1.150000, touching: 1.200000, non-touching 'angle': 0.050000, touching 'angle': 0.050000 DEBUG (07:20): HR: 105, HR zone: non-touching: 1.200000, touching: 1.250000, non-touching 'angle': 0.050000, touching 'angle': 0.050000 DEBUG (07:20): HR: 106, HR zone: non-touching: 1.250000, touching: 1.300000, non-touching 'angle': 0.050000, touching 'angle': 0.050000 DEBUG (07:20): HR: 107, HR zone: non-touching: 1.300000, touching: 1.350000, non-touching 'angle': 0.050000, touching 'angle': 0.050000 DEBUG (07:20): HR: 108, HR zone: non-touching: 1.350000, touching: 1.400000, non-touching 'angle': 0.050000, touching 'angle': 0.050000 DEBUG (07:20): HR: 109, HR zone: non-touching: 1.400000, touching: 1.450000, non-touching 'angle': 0.050000, touching 'angle': 0.050000 DEBUG (07:20): HR: 110, HR zone: non-touching: 1.450000, touching: 1.500000, non-touching 'angle': 0.050000, touching 'angle': 0.050000 DEBUG (07:20): HR: 111, HR zone: non-touching: 1.500000, touching: 1.550000, non-touching 'angle': 0.050000, touching 'angle': 0.050000 DEBUG (07:20): HR: 112, HR zone: non-touching: 1.550000, touching: 1.600000, non-touching 'angle': 0.050000, touching 'angle': 0.050000 DEBUG (07:20): HR: 113, HR zone: non-touching: 1.600000, touching: 1.650000, non-touching 'angle': 0.050000, touching 'angle': 0.050000 DEBUG (07:20): HR: 114, HR zone: non-touching: 1.650000, touching: 1.700000, non-touching 'angle': 0.050000, touching 'angle': 0.050000 DEBUG (07:20): HR: 115, HR zone: non-touching: 1.700000, touching: 1.750000, non-touching 'angle': 0.050000, touching 'angle': 0.050000 DEBUG (07:20): HR: 116, HR zone: non-touching: 1.750000, touching: 1.800000, non-touching 'angle': 0.050000, touching 'angle': 0.050000 DEBUG (07:20): HR: 117, HR zone: non-touching: 1.800000, touching: 1.850000, non-touching 'angle': 0.050000, touching 'angle': 0.050000 DEBUG (07:20): HR: 118, HR zone: non-touching: 1.850000, touching: 1.900000, non-touching 'angle': 0.050000, touching 'angle': 0.050000 DEBUG (07:20): HR: 119, HR zone: non-touching: 1.900000, touching: 1.950000, non-touching 'angle': 0.050000, touching 'angle': 0.050000 DEBUG (07:20): HR: 120, HR zone: non-touching: 1.950000, touching: 2.000000, non-touching 'angle': 0.050000, touching 'angle': 0.050000 DEBUG (07:20): HR: 121, HR zone: non-touching: 2.000000, touching: 2.050000, non-touching 'angle': 0.050000, touching 'angle': 0.050000 DEBUG (07:20): HR: 122, HR zone: non-touching: 2.050000, touching: 2.100000, non-touching 'angle': 0.050000, touching 'angle': 0.050000 DEBUG (07:20): HR: 123, HR zone: non-touching: 2.100000, touching: 2.150000, non-touching 'angle': 0.050000, touching 'angle': 0.050000 DEBUG (07:20): HR: 124, HR zone: non-touching: 2.150000, touching: 2.200000, non-touching 'angle': 0.050000, touching 'angle': 0.050000 DEBUG (07:20): HR: 125, HR zone: non-touching: 2.200000, touching: 2.250000, non-touching 'angle': 0.050000, touching 'angle': 0.050000 DEBUG (07:20): HR: 126, HR zone: non-touching: 2.250000, touching: 2.300000, non-touching 'angle': 0.050000, touching 'angle': 0.050000 DEBUG (07:20): HR: 127, HR zone: non-touching: 2.300000, touching: 2.350000, non-touching 'angle': 0.050000, touching 'angle': 0.050000 DEBUG (07:20): HR: 128, HR zone: non-touching: 2.350000, touching: 2.400000, non-touching 'angle': 0.050000, touching 'angle': 0.050000 DEBUG (07:20): HR: 129, HR zone: non-touching: 2.400000, touching: 2.450000, non-touching 'angle': 0.050000, touching 'angle': 0.050000 DEBUG (07:20): HR: 130, HR zone: non-touching: 2.450000, touching: 2.500000, non-touching 'angle': 0.050000, touching 'angle': 0.050000 DEBUG (07:20): HR: 131, HR zone: non-touching: 2.500000, touching: 2.550000, non-touching 'angle': 0.050000, touching 'angle': 0.050000 DEBUG (07:20): HR: 132, HR zone: non-touching: 2.550000, touching: 2.600000, non-touching 'angle': 0.050000, touching 'angle': 0.050000 DEBUG (07:20): HR: 133, HR zone: non-touching: 2.600000, touching: 2.650000, non-touching 'angle': 0.050000, touching 'angle': 0.050000 DEBUG (07:20): HR: 134, HR zone: non-touching: 2.650000, touching: 2.700000, non-touching 'angle': 0.050000, touching 'angle': 0.050000 DEBUG (07:20): HR: 135, HR zone: non-touching: 2.700000, touching: 2.750000, non-touching 'angle': 0.050000, touching 'angle': 0.050000 DEBUG (07:20): HR: 136, HR zone: non-touching: 2.750000, touching: 2.800000, non-touching 'angle': 0.050000, touching 'angle': 0.050000 DEBUG (07:20): HR: 137, HR zone: non-touching: 2.800000, touching: 2.850000, non-touching 'angle': 0.050000, touching 'angle': 0.050000 DEBUG (07:20): HR: 138, HR zone: non-touching: 2.850000, touching: 2.900000, non-touching 'angle': 0.050000, touching 'angle': 0.050000 DEBUG (07:20): HR: 139, HR zone: non-touching: 2.900000, touching: 2.950000, non-touching 'angle': 0.050000, touching 'angle': 0.050000 DEBUG (07:20): HR: 140, HR zone: non-touching: 2.950000, touching: 3.000000, non-touching 'angle': 0.050000, touching 'angle': 0.050000 DEBUG (07:20): HR: 141, HR zone: non-touching: 3.000000, touching: 3.050000, non-touching 'angle': 0.050000, touching 'angle': 0.050000 DEBUG (07:20): HR: 142, HR zone: non-touching: 3.050000, touching: 3.100000, non-touching 'angle': 0.050000, touching 'angle': 0.050000 DEBUG (07:20): HR: 143, HR zone: non-touching: 3.100000, touching: 3.150000, non-touching 'angle': 0.050000, touching 'angle': 0.050000 DEBUG (07:20): HR: 144, HR zone: non-touching: 3.150000, touching: 3.200000, non-touching 'angle': 0.050000, touching 'angle': 0.050000 DEBUG (07:20): HR: 145, HR zone: non-touching: 3.200000, touching: 3.250000, non-touching 'angle': 0.050000, touching 'angle': 0.050000 DEBUG (07:20): HR: 146, HR zone: non-touching: 3.250000, touching: 3.300000, non-touching 'angle': 0.050000, touching 'angle': 0.050000 DEBUG (07:20): HR: 147, HR zone: non-touching: 3.300000, touching: 3.350000, non-touching 'angle': 0.050000, touching 'angle': 0.050000 DEBUG (07:20): HR: 148, HR zone: non-touching: 3.350000, touching: 3.400000, non-touching 'angle': 0.050000, touching 'angle': 0.050000 DEBUG (07:20): HR: 149, HR zone: non-touching: 3.400000, touching: 3.450000, non-touching 'angle': 0.050000, touching 'angle': 0.050000 DEBUG (07:20): HR: 150, HR zone: non-touching: 3.450000, touching: 3.500000, non-touching 'angle': 0.050000, touching 'angle': 0.050000 DEBUG (07:20): HR: 151, HR zone: non-touching: 3.500000, touching: 3.550000, non-touching 'angle': 0.050000, touching 'angle': 0.050000 DEBUG (07:20): HR: 152, HR zone: non-touching: 3.550000, touching: 3.600000, non-touching 'angle': 0.050000, touching 'angle': 0.050000 DEBUG (07:20): HR: 153, HR zone: non-touching: 3.600000, touching: 3.650000, non-touching 'angle': 0.050000, touching 'angle': 0.050000 DEBUG (07:20): HR: 154, HR zone: non-touching: 3.650000, touching: 3.700000, non-touching 'angle': 0.050000, touching 'angle': 0.050000 DEBUG (07:20): HR: 155, HR zone: non-touching: 3.700000, touching: 3.750000, non-touching 'angle': 0.050000, touching 'angle': 0.050000 DEBUG (07:20): HR: 156, HR zone: non-touching: 3.750000, touching: 3.800000, non-touching 'angle': 0.050000, touching 'angle': 0.050000 DEBUG (07:20): HR: 157, HR zone: non-touching: 3.800000, touching: 3.850000, non-touching 'angle': 0.050000, touching 'angle': 0.050000 DEBUG (07:20): HR: 158, HR zone: non-touching: 3.850000, touching: 3.900000, non-touching 'angle': 0.050000, touching 'angle': 0.050000 DEBUG (07:20): HR: 159, HR zone: non-touching: 3.900000, touching: 3.950000, non-touching 'angle': 0.050000, touching 'angle': 0.050000 DEBUG (07:20): HR: 160, HR zone: non-touching: 3.950000, touching: 4.000000, non-touching 'angle': 0.050000, touching 'angle': 0.050000 DEBUG (07:20): HR: 161, HR zone: non-touching: 4.000000, touching: 4.066667, non-touching 'angle': 0.050000, touching 'angle': 0.066667 DEBUG (07:20): HR: 162, HR zone: non-touching: 4.066667, touching: 4.133333, non-touching 'angle': 0.066667, touching 'angle': 0.066667 DEBUG (07:20): HR: 163, HR zone: non-touching: 4.133333, touching: 4.200000, non-touching 'angle': 0.066667, touching 'angle': 0.066667 DEBUG (07:20): HR: 164, HR zone: non-touching: 4.200000, touching: 4.266667, non-touching 'angle': 0.066667, touching 'angle': 0.066667 DEBUG (07:20): HR: 165, HR zone: non-touching: 4.266666, touching: 4.333333, non-touching 'angle': 0.066667, touching 'angle': 0.066667 DEBUG (07:20): HR: 166, HR zone: non-touching: 4.333333, touching: 4.400000, non-touching 'angle': 0.066667, touching 'angle': 0.066667 DEBUG (07:20): HR: 167, HR zone: non-touching: 4.400000, touching: 4.466667, non-touching 'angle': 0.066667, touching 'angle': 0.066667 DEBUG (07:20): HR: 168, HR zone: non-touching: 4.466667, touching: 4.533333, non-touching 'angle': 0.066667, touching 'angle': 0.066667 DEBUG (07:20): HR: 169, HR zone: non-touching: 4.533333, touching: 4.600000, non-touching 'angle': 0.066667, touching 'angle': 0.066667 DEBUG (07:20): HR: 170, HR zone: non-touching: 4.600000, touching: 4.666667, non-touching 'angle': 0.066667, touching 'angle': 0.066667 DEBUG (07:20): HR: 171, HR zone: non-touching: 4.666667, touching: 4.733334, non-touching 'angle': 0.066667, touching 'angle': 0.066667 DEBUG (07:20): HR: 172, HR zone: non-touching: 4.733334, touching: 4.800000, non-touching 'angle': 0.066667, touching 'angle': 0.066667 DEBUG (07:20): HR: 173, HR zone: non-touching: 4.800000, touching: 4.866667, non-touching 'angle': 0.066667, touching 'angle': 0.066667 DEBUG (07:20): HR: 174, HR zone: non-touching: 4.866667, touching: 4.933333, non-touching 'angle': 0.066667, touching 'angle': 0.066667 DEBUG (07:20): HR: 175, HR zone: non-touching: 4.933333, touching: 5.000000, non-touching 'angle': 0.066667, touching 'angle': 0.066667 DEBUG (07:20): HR: 176, HR zone: non-touching: 5.000000, touching: 5.066667, non-touching 'angle': 0.066667, touching 'angle': 0.066667 DEBUG (07:20): HR: 177, HR zone: non-touching: 5.066667, touching: 5.133333, non-touching 'angle': 0.066667, touching 'angle': 0.066667 DEBUG (07:20): HR: 178, HR zone: non-touching: 5.133333, touching: 5.200000, non-touching 'angle': 0.066667, touching 'angle': 0.066667 DEBUG (07:20): HR: 179, HR zone: non-touching: 5.200000, touching: 5.266667, non-touching 'angle': 0.066667, touching 'angle': 0.066667 DEBUG (07:20): HR: 180, HR zone: non-touching: 5.266666, touching: 5.333333, non-touching 'angle': 0.066667, touching 'angle': 0.066667 DEBUG (07:20): HR: 181, HR zone: non-touching: 5.333333, touching: 5.400000, non-touching 'angle': 0.066667, touching 'angle': 0.066667 DEBUG (07:20): HR: 182, HR zone: non-touching: 5.400000, touching: 5.466667, non-touching 'angle': 0.066667, touching 'angle': 0.066667 DEBUG (07:20): HR: 183, HR zone: non-touching: 5.466667, touching: 5.533333, non-touching 'angle': 0.066667, touching 'angle': 0.066667 DEBUG (07:20): HR: 184, HR zone: non-touching: 5.533333, touching: 5.600000, non-touching 'angle': 0.066667, touching 'angle': 0.066667 DEBUG (07:20): HR: 185, HR zone: non-touching: 5.600000, touching: 5.666667, non-touching 'angle': 0.066667, touching 'angle': 0.066667 DEBUG (07:20): HR: 186, HR zone: non-touching: 5.666667, touching: 5.733334, non-touching 'angle': 0.066667, touching 'angle': 0.066667 DEBUG (07:20): HR: 187, HR zone: non-touching: 5.733334, touching: 5.800000, non-touching 'angle': 0.066667, touching 'angle': 0.066667 DEBUG (07:20): HR: 188, HR zone: non-touching: 5.800000, touching: 5.866667, non-touching 'angle': 0.066667, touching 'angle': 0.066667 DEBUG (07:20): HR: 189, HR zone: non-touching: 5.866667, touching: 5.933333, non-touching 'angle': 0.066667, touching 'angle': 0.066667 DEBUG (07:20): HR: 190, HR zone: non-touching: 5.933333, touching: 6.000000, non-touching 'angle': 0.066667, touching 'angle': 0.066667 DEBUG (07:20): HR: 191, HR zone: non-touching: 6.000000, touching: 6.000000, non-touching 'angle': 0.066667, touching 'angle': 0.000000 DEBUG (07:20): HR: 192, HR zone: non-touching: 6.066667, touching: 6.000000, non-touching 'angle': 0.066667, touching 'angle': 0.000000 DEBUG (07:20): HR: 193, HR zone: non-touching: 6.133333, touching: 6.000000, non-touching 'angle': 0.066667, touching 'angle': 0.000000 DEBUG (07:20): HR: 194, HR zone: non-touching: 6.200000, touching: 6.000000, non-touching 'angle': 0.066667, touching 'angle': 0.000000 DEBUG (07:20): HR: 195, HR zone: non-touching: 6.266666, touching: 6.000000, non-touching 'angle': 0.066667, touching 'angle': 0.000000 DEBUG (07:20): HR: 196, HR zone: non-touching: 6.333333, touching: 6.000000, non-touching 'angle': 0.066667, touching 'angle': 0.000000 DEBUG (07:20): HR: 197, HR zone: non-touching: 6.400000, touching: 6.000000, non-touching 'angle': 0.066667, touching 'angle': 0.000000 DEBUG (07:20): HR: 198, HR zone: non-touching: 6.466667, touching: 6.000000, non-touching 'angle': 0.066667, touching 'angle': 0.000000 DEBUG (07:20): HR: 199, HR zone: non-touching: 6.533333, touching: 6.000000, non-touching 'angle': 0.066667, touching 'angle': 0.000000 DEBUG (07:20): HR: 200, HR zone: non-touching: 6.600000, touching: 6.000000, non-touching 'angle': 0.066667, touching 'angle': 0.000000 DEBUG (07:20): HR: 201, HR zone: non-touching: 6.666667, touching: 6.000000, non-touching 'angle': 0.066667, touching 'angle': 0.000000 DEBUG (07:20): HR: 202, HR zone: non-touching: 6.733333, touching: 6.000000, non-touching 'angle': 0.066666, touching 'angle': 0.000000 DEBUG (07:20): HR: 203, HR zone: non-touching: 6.800000, touching: 6.000000, non-touching 'angle': 0.066667, touching 'angle': 0.000000 DEBUG (07:20): HR: 204, HR zone: non-touching: 6.866667, touching: 6.000000, non-touching 'angle': 0.066667, touching 'angle': 0.000000 DEBUG (07:20): HR: 205, HR zone: non-touching: 6.933333, touching: 6.000000, non-touching 'angle': 0.066667, touching 'angle': 0.000000 DEBUG (07:20): HR: 206, HR zone: non-touching: 7.000000, touching: 6.000000, non-touching 'angle': 0.066667, touching 'angle': 0.000000 DEBUG (07:20): HR: 207, HR zone: non-touching: 7.066667, touching: 6.000000, non-touching 'angle': 0.066667, touching 'angle': 0.000000 DEBUG (07:20): HR: 208, HR zone: non-touching: 7.133333, touching: 6.000000, non-touching 'angle': 0.066667, touching 'angle': 0.000000 DEBUG (07:20): HR: 209, HR zone: non-touching: 7.200000, touching: 6.000000, non-touching 'angle': 0.066667, touching 'angle': 0.000000 DEBUG (07:20): HR: 210, HR zone: non-touching: 7.266666, touching: 6.000000, non-touching 'angle': 0.066667, touching 'angle': 0.000000 DEBUG (07:20): HR: 211, HR zone: non-touching: 7.333333, touching: 6.000000, non-touching 'angle': 0.066667, touching 'angle': 0.000000 DEBUG (07:20): HR: 212, HR zone: non-touching: 7.400000, touching: 6.000000, non-touching 'angle': 0.066667, touching 'angle': 0.000000 DEBUG (07:20): HR: 213, HR zone: non-touching: 7.466667, touching: 6.000000, non-touching 'angle': 0.066667, touching 'angle': 0.000000 DEBUG (07:20): HR: 214, HR zone: non-touching: 7.533333, touching: 6.000000, non-touching 'angle': 0.066667, touching 'angle': 0.000000 DEBUG (07:20): HR: 215, HR zone: non-touching: 7.600000, touching: 6.000000, non-touching 'angle': 0.066667, touching 'angle': 0.000000 DEBUG (07:20): HR: 216, HR zone: non-touching: 7.666667, touching: 6.000000, non-touching 'angle': 0.066667, touching 'angle': 0.000000 DEBUG (07:20): HR: 217, HR zone: non-touching: 7.733334, touching: 6.000000, non-touching 'angle': 0.066667, touching 'angle': 0.000000 DEBUG (07:20): HR: 218, HR zone: non-touching: 7.800000, touching: 6.000000, non-touching 'angle': 0.066667, touching 'angle': 0.000000 DEBUG (07:20): HR: 219, HR zone: non-touching: 7.866667, touching: 6.000000, non-touching 'angle': 0.066667, touching 'angle': 0.000000 DEBUG (07:20): HR: 220, HR zone: non-touching: 7.933333, touching: 6.000000, non-touching 'angle': 0.066667, touching 'angle': 0.000000 DEBUG (07:20): HR: 221, HR zone: non-touching: 8.000000, touching: 6.000000, non-touching 'angle': 0.066667, touching 'angle': 0.000000 DEBUG (07:20): HR: 222, HR zone: non-touching: 8.066667, touching: 6.000000, non-touching 'angle': 0.066667, touching 'angle': 0.000000 DEBUG (07:20): HR: 223, HR zone: non-touching: 8.133333, touching: 6.000000, non-touching 'angle': 0.066667, touching 'angle': 0.000000 DEBUG (07:20): HR: 224, HR zone: non-touching: 8.200000, touching: 6.000000, non-touching 'angle': 0.066667, touching 'angle': 0.000000 DEBUG (07:20): HR: 225, HR zone: non-touching: 8.266666, touching: 6.000000, non-touching 'angle': 0.066667, touching 'angle': 0.000000 DEBUG (07:20): HR: 226, HR zone: non-touching: 8.333334, touching: 6.000000, non-touching 'angle': 0.066668, touching 'angle': 0.000000 DEBUG (07:20): HR: 227, HR zone: non-touching: 8.400000, touching: 6.000000, non-touching 'angle': 0.066666, touching 'angle': 0.000000 DEBUG (07:20): HR: 228, HR zone: non-touching: 8.466666, touching: 6.000000, non-touching 'angle': 0.066667, touching 'angle': 0.000000 DEBUG (07:20): HR: 229, HR zone: non-touching: 8.533334, touching: 6.000000, non-touching 'angle': 0.066668, touching 'angle': 0.000000 DEBUG (07:20): HR: 230, HR zone: non-touching: 8.600000, touching: 6.000000, non-touching 'angle': 0.066667, touching 'angle': 0.000000 DEBUG (07:20): HR: 231, HR zone: non-touching: 8.666666, touching: 6.000000, non-touching 'angle': 0.066666, touching 'angle': 0.000000 DEBUG (07:20): HR: 232, HR zone: non-touching: 8.733334, touching: 6.000000, non-touching 'angle': 0.066668, touching 'angle': 0.000000 DEBUG (07:20): HR: 233, HR zone: non-touching: 8.800000, touching: 6.000000, non-touching 'angle': 0.066667, touching 'angle': 0.000000 DEBUG (07:20): HR: 234, HR zone: non-touching: 8.866667, touching: 6.000000, non-touching 'angle': 0.066667, touching 'angle': 0.000000 DEBUG (07:20): HR: 235, HR zone: non-touching: 8.933333, touching: 6.000000, non-touching 'angle': 0.066667, touching 'angle': 0.000000 DEBUG (07:20): HR: 236, HR zone: non-touching: 9.000000, touching: 6.000000, non-touching 'angle': 0.066667, touching 'angle': 0.000000 DEBUG (07:20): HR: 237, HR zone: non-touching: 9.066667, touching: 6.000000, non-touching 'angle': 0.066667, touching 'angle': 0.000000 DEBUG (07:20): HR: 238, HR zone: non-touching: 9.133333, touching: 6.000000, non-touching 'angle': 0.066667, touching 'angle': 0.000000 DEBUG (07:20): HR: 239, HR zone: non-touching: 9.200000, touching: 6.000000, non-touching 'angle': 0.066667, touching 'angle': 0.000000 DEBUG (07:20): HR: 240, HR zone: non-touching: 9.266666, touching: 6.000000, non-touching 'angle': 0.066667, touching 'angle': 0.000000 DEBUG (07:20): HR: 241, HR zone: non-touching: 9.333334, touching: 6.000000, non-touching 'angle': 0.066668, touching 'angle': 0.000000 DEBUG (07:20): HR: 242, HR zone: non-touching: 9.400000, touching: 6.000000, non-touching 'angle': 0.066666, touching 'angle': 0.000000 DEBUG (07:20): HR: 243, HR zone: non-touching: 9.466667, touching: 6.000000, non-touching 'angle': 0.066668, touching 'angle': 0.000000 DEBUG (07:20): HR: 244, HR zone: non-touching: 9.533333, touching: 6.000000, non-touching 'angle': 0.066666, touching 'angle': 0.000000 DEBUG (07:20): HR: 245, HR zone: non-touching: 9.600000, touching: 6.000000, non-touching 'angle': 0.066668, touching 'angle': 0.000000 DEBUG (07:20): HR: 246, HR zone: non-touching: 9.666666, touching: 6.000000, non-touching 'angle': 0.066666, touching 'angle': 0.000000 DEBUG (07:20): HR: 247, HR zone: non-touching: 9.733334, touching: 6.000000, non-touching 'angle': 0.066668, touching 'angle': 0.000000 DEBUG (07:20): HR: 248, HR zone: non-touching: 9.800000, touching: 6.000000, non-touching 'angle': 0.066667, touching 'angle': 0.000000 DEBUG (07:20): HR: 249, HR zone: non-touching: 9.866667, touching: 6.000000, non-touching 'angle': 0.066667, touching 'angle': 0.000000 DEBUG (07:20): HR: 250, HR zone: non-touching: 9.933333, touching: 6.000000, non-touching 'angle': 0.066667, touching 'angle': 0.000000 DEBUG (07:20): HR: 251, HR zone: non-touching: 10.000000, touching: 6.000000, non-touching 'angle': 0.066667, touching 'angle': 0.000000 DEBUG (07:20): HR: 252, HR zone: non-touching: 10.066667, touching: 6.000000, non-touching 'angle': 0.066667, touching 'angle': 0.000000 DEBUG (07:20): HR: 253, HR zone: non-touching: 10.133333, touching: 6.000000, non-touching 'angle': 0.066667, touching 'angle': 0.000000 DEBUG (07:20): HR: 254, HR zone: non-touching: 10.200000, touching: 6.000000, non-touching 'angle': 0.066667, touching 'angle': 0.000000 DEBUG (07:20): HR: 255, HR zone: non-touching: 10.266666, touching: 6.000000, non-touching 'angle': 0.066667, touching 'angle': 0.000000
You will see that our algorithms do *not* produce identical results. Yeah maybe they will look similar after rounding to 1 decimal place, and maybe none of this matters at all.
Actually, definitely none of this matters at all.
(also, if you're going to log the "angle" or slope, you should be logging it for both algorithms, not just mine, which I've done in the above logs.)
As far as the "bends" thing goes, yeah, your algorithm probably has the same number of bends as mine (0 or 1 per border). Like I said, it's possible that the slope of the line that connects the two zones (which don't touch) is always the same as either the slope of the zone on the left or the zone on the right.
I just didn't bother to try to prove or disprove it.
And again, none of this matters.
But thanks for following me down this rabbit hole! Or do I have that the other way around?
I'm not talking theoretically. I ran this already. I can tell you that even now, with your latest version that uses absoluteMax = heartRateZones[5] all the integer inputs between [30, 190] computeHrZoneTouching and computeHrZoneFlowState are equal 6 digits after the dot! There are a few that differ later (but it doesn't print it so I can't tell what's the difference, but it's obviously less than 0.000001
You have a bug in your code that prints the lines. There's 1 line shift between the values of either the touching or non-touching. See this:
(:test) function compareHrZones(logger as Logger) as Boolean { var prev = 0; for (var hr = 0; hr < 256; hr++) { var old = computeHrZoneFlocsy(hr); var touching = computeHrZoneTouching(hr); var flowState = computeHrZoneFlowState(hr); logger.debug("HR: " + hr + ", HR zone: old: " + old + ", touching: " + touching + ", FlowState: " + flowState + ", angle: " + (flowState - prev) + ", equal: " + (touching == flowState)); prev = flowState; } return true; }
I can tell you that even now, with your latest version that uses absoluteMax = heartRateZones[5] all the integer inputs between [30, 190] computeHrZoneTouching and computeHrZoneFlowState are equal 6 digits after the dot! There are a few that differ later (but it doesn't print it so I can't tell what's the difference, but it's obviously less than 0.000001
I ran your original code (in OP) and got different values
> You have a bug in your code that prints the lines.
lmao I used a modified version of your code.
> I'm not talking theoretically
neither am I. I literally manually "ran" both algorithms on the value of 140 with my favorite partial set of test zones before this thread even existed, and I got the same answer with the code that we have now (adjusted for the fact that the test zones are shifted over by 1)
DEBUG (07:20): HR: 140, HR zone: non-touching: 2.950000, touching: 3.000000, non-touching 'angle': 0.050000, touching 'angle': 0.050000
Remember when I predicted that 140 would produce different values for both of our algorithms, with zones that look like ..., 120, 140, 160, ...? Yeah, it works the same when I actually run the code, too.
If I run the code that you originally posted with ZERO modifications, it shows that our algorithms are different and produce different results. But I really can't understand why you even need to run the code to see that, it should be obvious (as I've been saying for HOURS).
Go ahead, run this code (by that I mean YOUR CODE):
I just ran it, after only adding the following lines at the global scope:
const INVALID_ZONE = -1;
const INVALID_FRACTIONAL_ZONE = -1;
Here's my output:
Executing test compareHrZones... DEBUG (07:38): HR: 0, HR zone: old: -0.303030, new: -0.306122, angle: -0.306122 DEBUG (07:38): HR: 1, HR zone: old: -0.292929, new: -0.295918, angle: 0.010204 DEBUG (07:38): HR: 2, HR zone: old: -0.282828, new: -0.285714, angle: 0.010204 DEBUG (07:38): HR: 3, HR zone: old: -0.272727, new: -0.275510, angle: 0.010204 DEBUG (07:38): HR: 4, HR zone: old: -0.262626, new: -0.265306, angle: 0.010204 DEBUG (07:38): HR: 5, HR zone: old: -0.252525, new: -0.255102, angle: 0.010204 DEBUG (07:38): HR: 6, HR zone: old: -0.242424, new: -0.244898, angle: 0.010204 DEBUG (07:38): HR: 7, HR zone: old: -0.232323, new: -0.234694, angle: 0.010204 DEBUG (07:38): HR: 8, HR zone: old: -0.222222, new: -0.224490, angle: 0.010204 DEBUG (07:38): HR: 9, HR zone: old: -0.212121, new: -0.214286, angle: 0.010204 DEBUG (07:38): HR: 10, HR zone: old: -0.202020, new: -0.204082, angle: 0.010204 DEBUG (07:38): HR: 11, HR zone: old: -0.191919, new: -0.193878, angle: 0.010204 DEBUG (07:38): HR: 12, HR zone: old: -0.181818, new: -0.183673, angle: 0.010204 DEBUG (07:38): HR: 13, HR zone: old: -0.171717, new: -0.173469, angle: 0.010204 DEBUG (07:38): HR: 14, HR zone: old: -0.161616, new: -0.163265, angle: 0.010204 DEBUG (07:38): HR: 15, HR zone: old: -0.151515, new: -0.153061, angle: 0.010204 DEBUG (07:38): HR: 16, HR zone: old: -0.141414, new: -0.142857, angle: 0.010204 DEBUG (07:38): HR: 17, HR zone: old: -0.131313, new: -0.132653, angle: 0.010204 DEBUG (07:38): HR: 18, HR zone: old: -0.121212, new: -0.122449, angle: 0.010204 DEBUG (07:38): HR: 19, HR zone: old: -0.111111, new: -0.112245, angle: 0.010204 DEBUG (07:38): HR: 20, HR zone: old: -0.101010, new: -0.102041, angle: 0.010204 DEBUG (07:38): HR: 21, HR zone: old: -0.090909, new: -0.091837, angle: 0.010204 DEBUG (07:38): HR: 22, HR zone: old: -0.080808, new: -0.081633, angle: 0.010204 DEBUG (07:38): HR: 23, HR zone: old: -0.070707, new: -0.071429, angle: 0.010204 DEBUG (07:38): HR: 24, HR zone: old: -0.060606, new: -0.061224, angle: 0.010204 DEBUG (07:38): HR: 25, HR zone: old: -0.050505, new: -0.051020, angle: 0.010204 DEBUG (07:38): HR: 26, HR zone: old: -0.040404, new: -0.040816, angle: 0.010204 DEBUG (07:38): HR: 27, HR zone: old: -0.030303, new: -0.030612, angle: 0.010204 DEBUG (07:38): HR: 28, HR zone: old: -0.020202, new: -0.020408, angle: 0.010204 DEBUG (07:38): HR: 29, HR zone: old: -0.010101, new: -0.010204, angle: 0.010204 DEBUG (07:38): HR: 30, HR zone: old: 0.000000, new: 0.000000, angle: 0.010204 DEBUG (07:38): HR: 31, HR zone: old: 0.010101, new: 0.010204, angle: 0.010204 DEBUG (07:38): HR: 32, HR zone: old: 0.020202, new: 0.020408, angle: 0.010204 DEBUG (07:38): HR: 33, HR zone: old: 0.030303, new: 0.030612, angle: 0.010204 DEBUG (07:38): HR: 34, HR zone: old: 0.040404, new: 0.040816, angle: 0.010204 DEBUG (07:38): HR: 35, HR zone: old: 0.050505, new: 0.051020, angle: 0.010204 DEBUG (07:38): HR: 36, HR zone: old: 0.060606, new: 0.061224, angle: 0.010204 DEBUG (07:38): HR: 37, HR zone: old: 0.070707, new: 0.071429, angle: 0.010204 DEBUG (07:38): HR: 38, HR zone: old: 0.080808, new: 0.081633, angle: 0.010204 DEBUG (07:38): HR: 39, HR zone: old: 0.090909, new: 0.091837, angle: 0.010204 DEBUG (07:38): HR: 40, HR zone: old: 0.101010, new: 0.102041, angle: 0.010204 DEBUG (07:38): HR: 41, HR zone: old: 0.111111, new: 0.112245, angle: 0.010204 DEBUG (07:38): HR: 42, HR zone: old: 0.121212, new: 0.122449, angle: 0.010204 DEBUG (07:38): HR: 43, HR zone: old: 0.131313, new: 0.132653, angle: 0.010204 DEBUG (07:38): HR: 44, HR zone: old: 0.141414, new: 0.142857, angle: 0.010204 DEBUG (07:38): HR: 45, HR zone: old: 0.151515, new: 0.153061, angle: 0.010204 DEBUG (07:38): HR: 46, HR zone: old: 0.161616, new: 0.163265, angle: 0.010204 DEBUG (07:38): HR: 47, HR zone: old: 0.171717, new: 0.173469, angle: 0.010204 DEBUG (07:38): HR: 48, HR zone: old: 0.181818, new: 0.183673, angle: 0.010204 DEBUG (07:38): HR: 49, HR zone: old: 0.191919, new: 0.193878, angle: 0.010204 DEBUG (07:38): HR: 50, HR zone: old: 0.202020, new: 0.204082, angle: 0.010204 DEBUG (07:38): HR: 51, HR zone: old: 0.212121, new: 0.214286, angle: 0.010204 DEBUG (07:38): HR: 52, HR zone: old: 0.222222, new: 0.224490, angle: 0.010204 DEBUG (07:38): HR: 53, HR zone: old: 0.232323, new: 0.234694, angle: 0.010204 DEBUG (07:38): HR: 54, HR zone: old: 0.242424, new: 0.244898, angle: 0.010204 DEBUG (07:38): HR: 55, HR zone: old: 0.252525, new: 0.255102, angle: 0.010204 DEBUG (07:38): HR: 56, HR zone: old: 0.262626, new: 0.265306, angle: 0.010204 DEBUG (07:38): HR: 57, HR zone: old: 0.272727, new: 0.275510, angle: 0.010204 DEBUG (07:38): HR: 58, HR zone: old: 0.282828, new: 0.285714, angle: 0.010204 DEBUG (07:38): HR: 59, HR zone: old: 0.292929, new: 0.295918, angle: 0.010204 DEBUG (07:38): HR: 60, HR zone: old: 0.303030, new: 0.306122, angle: 0.010204 DEBUG (07:38): HR: 61, HR zone: old: 0.313131, new: 0.316327, angle: 0.010204 DEBUG (07:38): HR: 62, HR zone: old: 0.323232, new: 0.326531, angle: 0.010204 DEBUG (07:38): HR: 63, HR zone: old: 0.333333, new: 0.336735, angle: 0.010204 DEBUG (07:38): HR: 64, HR zone: old: 0.343434, new: 0.346939, angle: 0.010204 DEBUG (07:38): HR: 65, HR zone: old: 0.353535, new: 0.357143, angle: 0.010204 DEBUG (07:38): HR: 66, HR zone: old: 0.363636, new: 0.367347, angle: 0.010204 DEBUG (07:38): HR: 67, HR zone: old: 0.373737, new: 0.377551, angle: 0.010204 DEBUG (07:38): HR: 68, HR zone: old: 0.383838, new: 0.387755, angle: 0.010204 DEBUG (07:38): HR: 69, HR zone: old: 0.393939, new: 0.397959, angle: 0.010204 DEBUG (07:38): HR: 70, HR zone: old: 0.404040, new: 0.408163, angle: 0.010204 DEBUG (07:38): HR: 71, HR zone: old: 0.414141, new: 0.418367, angle: 0.010204 DEBUG (07:38): HR: 72, HR zone: old: 0.424242, new: 0.428571, angle: 0.010204 DEBUG (07:38): HR: 73, HR zone: old: 0.434343, new: 0.438776, angle: 0.010204 DEBUG (07:38): HR: 74, HR zone: old: 0.444444, new: 0.448980, angle: 0.010204 DEBUG (07:38): HR: 75, HR zone: old: 0.454545, new: 0.459184, angle: 0.010204 DEBUG (07:38): HR: 76, HR zone: old: 0.464646, new: 0.469388, angle: 0.010204 DEBUG (07:38): HR: 77, HR zone: old: 0.474747, new: 0.479592, angle: 0.010204 DEBUG (07:38): HR: 78, HR zone: old: 0.484848, new: 0.489796, angle: 0.010204 DEBUG (07:38): HR: 79, HR zone: old: 0.494949, new: 0.500000, angle: 0.010204 DEBUG (07:38): HR: 80, HR zone: old: 0.505050, new: 0.510204, angle: 0.010204 DEBUG (07:38): HR: 81, HR zone: old: 0.515152, new: 0.520408, angle: 0.010204 DEBUG (07:38): HR: 82, HR zone: old: 0.525253, new: 0.530612, angle: 0.010204 DEBUG (07:38): HR: 83, HR zone: old: 0.535354, new: 0.540816, angle: 0.010204 DEBUG (07:38): HR: 84, HR zone: old: 0.545455, new: 0.551020, angle: 0.010204 DEBUG (07:38): HR: 85, HR zone: old: 0.555556, new: 0.561224, angle: 0.010204 DEBUG (07:38): HR: 86, HR zone: old: 0.565657, new: 0.571429, angle: 0.010204 DEBUG (07:38): HR: 87, HR zone: old: 0.575758, new: 0.581633, angle: 0.010204 DEBUG (07:38): HR: 88, HR zone: old: 0.585859, new: 0.591837, angle: 0.010204 DEBUG (07:38): HR: 89, HR zone: old: 0.595960, new: 0.602041, angle: 0.010204 DEBUG (07:38): HR: 90, HR zone: old: 0.606061, new: 0.612245, angle: 0.010204 DEBUG (07:38): HR: 91, HR zone: old: 0.616162, new: 0.622449, angle: 0.010204 DEBUG (07:38): HR: 92, HR zone: old: 0.626263, new: 0.632653, angle: 0.010204 DEBUG (07:38): HR: 93, HR zone: old: 0.636364, new: 0.642857, angle: 0.010204 DEBUG (07:38): HR: 94, HR zone: old: 0.646465, new: 0.653061, angle: 0.010204 DEBUG (07:38): HR: 95, HR zone: old: 0.656566, new: 0.663265, angle: 0.010204 DEBUG (07:38): HR: 96, HR zone: old: 0.666667, new: 0.673469, angle: 0.010204 DEBUG (07:38): HR: 97, HR zone: old: 0.676768, new: 0.683674, angle: 0.010204 DEBUG (07:38): HR: 98, HR zone: old: 0.686869, new: 0.693878, angle: 0.010204 DEBUG (07:38): HR: 99, HR zone: old: 0.696970, new: 0.704082, angle: 0.010204 DEBUG (07:38): HR: 100, HR zone: old: 0.707071, new: 0.714286, angle: 0.010204 DEBUG (07:38): HR: 101, HR zone: old: 0.717172, new: 0.724490, angle: 0.010204 DEBUG (07:38): HR: 102, HR zone: old: 0.727273, new: 0.734694, angle: 0.010204 DEBUG (07:38): HR: 103, HR zone: old: 0.737374, new: 0.744898, angle: 0.010204 DEBUG (07:38): HR: 104, HR zone: old: 0.747475, new: 0.755102, angle: 0.010204 DEBUG (07:38): HR: 105, HR zone: old: 0.757576, new: 0.765306, angle: 0.010204 DEBUG (07:38): HR: 106, HR zone: old: 0.767677, new: 0.775510, angle: 0.010204 DEBUG (07:38): HR: 107, HR zone: old: 0.777778, new: 0.785714, angle: 0.010204 DEBUG (07:38): HR: 108, HR zone: old: 0.787879, new: 0.795918, angle: 0.010204 DEBUG (07:38): HR: 109, HR zone: old: 0.797980, new: 0.806122, angle: 0.010204 DEBUG (07:38): HR: 110, HR zone: old: 0.808081, new: 0.816326, angle: 0.010204 DEBUG (07:38): HR: 111, HR zone: old: 0.818182, new: 0.826531, angle: 0.010204 DEBUG (07:38): HR: 112, HR zone: old: 0.828283, new: 0.836735, angle: 0.010204 DEBUG (07:38): HR: 113, HR zone: old: 0.838384, new: 0.846939, angle: 0.010204 DEBUG (07:38): HR: 114, HR zone: old: 0.848485, new: 0.857143, angle: 0.010204 DEBUG (07:38): HR: 115, HR zone: old: 0.858586, new: 0.867347, angle: 0.010204 DEBUG (07:38): HR: 116, HR zone: old: 0.868687, new: 0.877551, angle: 0.010204 DEBUG (07:38): HR: 117, HR zone: old: 0.878788, new: 0.887755, angle: 0.010204 DEBUG (07:38): HR: 118, HR zone: old: 0.888889, new: 0.897959, angle: 0.010204 DEBUG (07:38): HR: 119, HR zone: old: 0.898990, new: 0.908163, angle: 0.010204 DEBUG (07:38): HR: 120, HR zone: old: 0.909091, new: 0.918367, angle: 0.010204 DEBUG (07:38): HR: 121, HR zone: old: 0.919192, new: 0.928571, angle: 0.010204 DEBUG (07:38): HR: 122, HR zone: old: 0.929293, new: 0.938775, angle: 0.010204 DEBUG (07:38): HR: 123, HR zone: old: 0.939394, new: 0.948980, angle: 0.010204 DEBUG (07:38): HR: 124, HR zone: old: 0.949495, new: 0.959184, angle: 0.010204 DEBUG (07:38): HR: 125, HR zone: old: 0.959596, new: 0.969388, angle: 0.010204 DEBUG (07:38): HR: 126, HR zone: old: 0.969697, new: 0.979592, angle: 0.010204 DEBUG (07:38): HR: 127, HR zone: old: 0.979798, new: 0.989796, angle: 0.010204 DEBUG (07:38): HR: 128, HR zone: old: 0.989899, new: 1.000000, angle: 0.010204 DEBUG (07:38): HR: 129, HR zone: old: 1.000000, new: 1.040000, angle: 0.040000 DEBUG (07:38): HR: 130, HR zone: old: 1.040000, new: 1.080000, angle: 0.040000 DEBUG (07:38): HR: 131, HR zone: old: 1.080000, new: 1.120000, angle: 0.040000 DEBUG (07:38): HR: 132, HR zone: old: 1.120000, new: 1.160000, angle: 0.040000 DEBUG (07:38): HR: 133, HR zone: old: 1.160000, new: 1.200000, angle: 0.040000 DEBUG (07:38): HR: 134, HR zone: old: 1.200000, new: 1.240000, angle: 0.040000 DEBUG (07:38): HR: 135, HR zone: old: 1.240000, new: 1.280000, angle: 0.040000 DEBUG (07:38): HR: 136, HR zone: old: 1.280000, new: 1.320000, angle: 0.040000 DEBUG (07:38): HR: 137, HR zone: old: 1.320000, new: 1.360000, angle: 0.040000 DEBUG (07:38): HR: 138, HR zone: old: 1.360000, new: 1.400000, angle: 0.040000 DEBUG (07:38): HR: 139, HR zone: old: 1.400000, new: 1.440000, angle: 0.040000 DEBUG (07:38): HR: 140, HR zone: old: 1.440000, new: 1.480000, angle: 0.040000 DEBUG (07:38): HR: 141, HR zone: old: 1.480000, new: 1.520000, angle: 0.040000 DEBUG (07:38): HR: 142, HR zone: old: 1.520000, new: 1.560000, angle: 0.040000 DEBUG (07:38): HR: 143, HR zone: old: 1.560000, new: 1.600000, angle: 0.040000 DEBUG (07:38): HR: 144, HR zone: old: 1.600000, new: 1.640000, angle: 0.040000 DEBUG (07:38): HR: 145, HR zone: old: 1.640000, new: 1.680000, angle: 0.040000 DEBUG (07:38): HR: 146, HR zone: old: 1.680000, new: 1.720000, angle: 0.040000 DEBUG (07:38): HR: 147, HR zone: old: 1.720000, new: 1.760000, angle: 0.040000 DEBUG (07:38): HR: 148, HR zone: old: 1.760000, new: 1.800000, angle: 0.040000 DEBUG (07:38): HR: 149, HR zone: old: 1.800000, new: 1.840000, angle: 0.040000 DEBUG (07:38): HR: 150, HR zone: old: 1.840000, new: 1.880000, angle: 0.040000 DEBUG (07:38): HR: 151, HR zone: old: 1.880000, new: 1.920000, angle: 0.040000 DEBUG (07:38): HR: 152, HR zone: old: 1.920000, new: 1.960000, angle: 0.040000 DEBUG (07:38): HR: 153, HR zone: old: 1.960000, new: 2.000000, angle: 0.040000 DEBUG (07:38): HR: 154, HR zone: old: 2.000000, new: 2.111111, angle: 0.111111 DEBUG (07:38): HR: 155, HR zone: old: 2.111111, new: 2.222222, angle: 0.111111 DEBUG (07:38): HR: 156, HR zone: old: 2.222222, new: 2.333333, angle: 0.111111 DEBUG (07:38): HR: 157, HR zone: old: 2.333333, new: 2.444444, angle: 0.111111 DEBUG (07:38): HR: 158, HR zone: old: 2.444444, new: 2.555556, angle: 0.111111 DEBUG (07:38): HR: 159, HR zone: old: 2.555556, new: 2.666667, angle: 0.111111 DEBUG (07:38): HR: 160, HR zone: old: 2.666667, new: 2.777778, angle: 0.111111 DEBUG (07:38): HR: 161, HR zone: old: 2.777778, new: 2.888889, angle: 0.111111 DEBUG (07:38): HR: 162, HR zone: old: 2.888889, new: 3.000000, angle: 0.111111 DEBUG (07:38): HR: 163, HR zone: old: 3.000000, new: 3.055556, angle: 0.055556 DEBUG (07:38): HR: 164, HR zone: old: 3.055556, new: 3.111111, angle: 0.055556 DEBUG (07:38): HR: 165, HR zone: old: 3.111111, new: 3.166667, angle: 0.055556 DEBUG (07:38): HR: 166, HR zone: old: 3.166667, new: 3.222222, angle: 0.055556 DEBUG (07:38): HR: 167, HR zone: old: 3.222222, new: 3.277778, angle: 0.055555 DEBUG (07:38): HR: 168, HR zone: old: 3.277778, new: 3.333333, angle: 0.055556 DEBUG (07:38): HR: 169, HR zone: old: 3.333333, new: 3.388889, angle: 0.055556 DEBUG (07:38): HR: 170, HR zone: old: 3.388889, new: 3.444444, angle: 0.055556 DEBUG (07:38): HR: 171, HR zone: old: 3.444444, new: 3.500000, angle: 0.055556 DEBUG (07:38): HR: 172, HR zone: old: 3.500000, new: 3.555556, angle: 0.055556 DEBUG (07:38): HR: 173, HR zone: old: 3.555556, new: 3.611111, angle: 0.055556 DEBUG (07:38): HR: 174, HR zone: old: 3.611111, new: 3.666667, angle: 0.055555 DEBUG (07:38): HR: 175, HR zone: old: 3.666667, new: 3.722222, angle: 0.055556 DEBUG (07:38): HR: 176, HR zone: old: 3.722222, new: 3.777778, angle: 0.055555 DEBUG (07:38): HR: 177, HR zone: old: 3.777778, new: 3.833333, angle: 0.055556 DEBUG (07:38): HR: 178, HR zone: old: 3.833333, new: 3.888889, angle: 0.055555 DEBUG (07:38): HR: 179, HR zone: old: 3.888889, new: 3.944444, angle: 0.055556 DEBUG (07:38): HR: 180, HR zone: old: 3.944444, new: 4.000000, angle: 0.055556 DEBUG (07:38): HR: 181, HR zone: old: 4.000000, new: 4.200000, angle: 0.200000 DEBUG (07:38): HR: 182, HR zone: old: 4.200000, new: 4.400000, angle: 0.200000 DEBUG (07:38): HR: 183, HR zone: old: 4.400000, new: 4.600000, angle: 0.200000 DEBUG (07:38): HR: 184, HR zone: old: 4.600000, new: 4.800000, angle: 0.200000 DEBUG (07:38): HR: 185, HR zone: old: 4.800000, new: 5.000000, angle: 0.200000 DEBUG (07:38): HR: 186, HR zone: old: 5.000000, new: 5.200000, angle: 0.200000 DEBUG (07:38): HR: 187, HR zone: old: 5.200000, new: 5.400000, angle: 0.200000 DEBUG (07:38): HR: 188, HR zone: old: 5.400000, new: 5.600000, angle: 0.200000 DEBUG (07:38): HR: 189, HR zone: old: 5.600000, new: 5.800000, angle: 0.200000 DEBUG (07:38): HR: 190, HR zone: old: 5.800000, new: 6.000000, angle: 0.200000 DEBUG (07:38): HR: 191, HR zone: old: 6.000000, new: 6.200000, angle: 0.200000 DEBUG (07:38): HR: 192, HR zone: old: 6.200000, new: 6.400000, angle: 0.200000 DEBUG (07:38): HR: 193, HR zone: old: 6.400000, new: 6.600000, angle: 0.200000 DEBUG (07:38): HR: 194, HR zone: old: 6.600000, new: 6.800000, angle: 0.200000 DEBUG (07:38): HR: 195, HR zone: old: 6.800000, new: 7.000000, angle: 0.200000 DEBUG (07:38): HR: 196, HR zone: old: 7.000000, new: 7.200000, angle: 0.200000 DEBUG (07:38): HR: 197, HR zone: old: 7.200000, new: 7.400000, angle: 0.200000 DEBUG (07:38): HR: 198, HR zone: old: 7.400000, new: 7.600000, angle: 0.200000 DEBUG (07:38): HR: 199, HR zone: old: 7.600000, new: 7.800000, angle: 0.200000 DEBUG (07:38): HR: 200, HR zone: old: 7.800000, new: 8.000000, angle: 0.200000 DEBUG (07:38): HR: 201, HR zone: old: 8.000000, new: 8.200000, angle: 0.200000 DEBUG (07:38): HR: 202, HR zone: old: 8.200000, new: 8.400000, angle: 0.200000 DEBUG (07:38): HR: 203, HR zone: old: 8.400000, new: 8.600000, angle: 0.200001 DEBUG (07:38): HR: 204, HR zone: old: 8.600000, new: 8.800000, angle: 0.200000 DEBUG (07:38): HR: 205, HR zone: old: 8.800000, new: 9.000000, angle: 0.200000 DEBUG (07:38): HR: 206, HR zone: old: 9.000000, new: 9.200000, angle: 0.200000 DEBUG (07:38): HR: 207, HR zone: old: 9.200000, new: 9.400000, angle: 0.200000 DEBUG (07:38): HR: 208, HR zone: old: 9.400000, new: 9.600000, angle: 0.200001 DEBUG (07:38): HR: 209, HR zone: old: 9.600000, new: 9.800000, angle: 0.200000 DEBUG (07:38): HR: 210, HR zone: old: 9.800000, new: 10.000000, angle: 0.200000 DEBUG (07:38): HR: 211, HR zone: old: 10.000000, new: 10.200000, angle: 0.200000 DEBUG (07:38): HR: 212, HR zone: old: 10.200000, new: 10.400000, angle: 0.200000 DEBUG (07:38): HR: 213, HR zone: old: 10.400000, new: 10.600000, angle: 0.200001 DEBUG (07:38): HR: 214, HR zone: old: 10.600000, new: 10.800000, angle: 0.200000 DEBUG (07:38): HR: 215, HR zone: old: 10.800000, new: 11.000000, angle: 0.200000 DEBUG (07:38): HR: 216, HR zone: old: 11.000000, new: 11.200000, angle: 0.200000 DEBUG (07:38): HR: 217, HR zone: old: 11.200000, new: 11.400000, angle: 0.200000 DEBUG (07:38): HR: 218, HR zone: old: 11.400000, new: 11.600000, angle: 0.200001 DEBUG (07:38): HR: 219, HR zone: old: 11.600000, new: 11.800000, angle: 0.200000 DEBUG (07:38): HR: 220, HR zone: old: 11.800000, new: 12.000000, angle: 0.200000 DEBUG (07:38): HR: 221, HR zone: old: 12.000000, new: 12.200000, angle: 0.200000 DEBUG (07:38): HR: 222, HR zone: old: 12.200000, new: 12.400000, angle: 0.200000 DEBUG (07:38): HR: 223, HR zone: old: 12.400000, new: 12.600000, angle: 0.200001 DEBUG (07:38): HR: 224, HR zone: old: 12.600000, new: 12.800000, angle: 0.200000 DEBUG (07:38): HR: 225, HR zone: old: 12.800000, new: 13.000000, angle: 0.200000 DEBUG (07:38): HR: 226, HR zone: old: 13.000000, new: 13.200000, angle: 0.200000 DEBUG (07:38): HR: 227, HR zone: old: 13.200000, new: 13.400000, angle: 0.200000 DEBUG (07:38): HR: 228, HR zone: old: 13.400000, new: 13.600000, angle: 0.200001 DEBUG (07:38): HR: 229, HR zone: old: 13.600000, new: 13.800000, angle: 0.200000 DEBUG (07:38): HR: 230, HR zone: old: 13.800000, new: 14.000000, angle: 0.200000 DEBUG (07:38): HR: 231, HR zone: old: 14.000000, new: 14.200000, angle: 0.200000 DEBUG (07:38): HR: 232, HR zone: old: 14.200000, new: 14.400000, angle: 0.200000 DEBUG (07:38): HR: 233, HR zone: old: 14.400000, new: 14.600000, angle: 0.200001 DEBUG (07:38): HR: 234, HR zone: old: 14.600000, new: 14.800000, angle: 0.200000 DEBUG (07:38): HR: 235, HR zone: old: 14.800000, new: 15.000000, angle: 0.200000 DEBUG (07:38): HR: 236, HR zone: old: 15.000000, new: 15.200000, angle: 0.200000 DEBUG (07:38): HR: 237, HR zone: old: 15.200000, new: 15.400000, angle: 0.200000 DEBUG (07:38): HR: 238, HR zone: old: 15.400000, new: 15.600000, angle: 0.200001 DEBUG (07:38): HR: 239, HR zone: old: 15.600000, new: 15.800000, angle: 0.200000 DEBUG (07:38): HR: 240, HR zone: old: 15.800000, new: 16.000000, angle: 0.200000 DEBUG (07:38): HR: 241, HR zone: old: 16.000000, new: 16.200001, angle: 0.200001 DEBUG (07:38): HR: 242, HR zone: old: 16.200001, new: 16.400000, angle: 0.199999 DEBUG (07:38): HR: 243, HR zone: old: 16.400000, new: 16.600000, angle: 0.200001 DEBUG (07:38): HR: 244, HR zone: old: 16.600000, new: 16.799999, angle: 0.199999 DEBUG (07:38): HR: 245, HR zone: old: 16.799999, new: 17.000000, angle: 0.200001 DEBUG (07:38): HR: 246, HR zone: old: 17.000000, new: 17.200001, angle: 0.200001 DEBUG (07:38): HR: 247, HR zone: old: 17.200001, new: 17.400000, angle: 0.199999 DEBUG (07:38): HR: 248, HR zone: old: 17.400000, new: 17.600000, angle: 0.200001 DEBUG (07:38): HR: 249, HR zone: old: 17.600000, new: 17.799999, angle: 0.199999 DEBUG (07:38): HR: 250, HR zone: old: 17.799999, new: 18.000000, angle: 0.200001 DEBUG (07:38): HR: 251, HR zone: old: 18.000000, new: 18.200001, angle: 0.200001 DEBUG (07:38): HR: 252, HR zone: old: 18.200001, new: 18.400000, angle: 0.199999 DEBUG (07:38): HR: 253, HR zone: old: 18.400000, new: 18.600000, angle: 0.200001 DEBUG (07:38): HR: 254, HR zone: old: 18.600000, new: 18.799999, angle: 0.199999 DEBUG (07:38): HR: 255, HR zone: old: 18.799999, new: 19.000000, angle: 0.200001 PASS
The reason you think "my code" (actually your code) has a bug which has a 1-line shift between the 2 algos is because that's literally the nature of the difference between the algos: by shifting the min zone value by 1, you're shifting all your answers to the "right" by 1.
That's also why (as you pointed out), our graphs won't be substantially different (in terms of shape or "bends"), at least for zones in the interval [1.0, 6.0). Everything in that interval is just shifted to the right by 1.
Now here's the code I actually tested with (again, based on YOUR CODE).
I'm sure you'll let me know where the problem is:
(: test) function compareHrZones(logger as Logger) as Boolean { var prev1 = 0; var prev2 = 0; logger.debug("HR Zones: " + TEST_HR_ZONES); for (var hr = 0; hr < 256; hr++) { var current1 = computeHrZoneFlocsy(hr, true); var current2 = computeHrZoneFlowState(hr, true); logger.debug("HR: " + hr + ", HR zone: non-touching: " + current1 + ", touching: " + current2 + ", non-touching 'angle': " + (current1 - prev1) + ", touching 'angle': " + (current2 - prev2)); prev1 = current1; prev2 = current2; } return true; }
I think you missed my link to pastebin: https://pastebin.com/W7AwEPj5
I "compare" (well print the results) 3 functions: 1. my original: computeHrZoneFlocsy, 2. a modified version of that, that is called computeHrZoneTouching and your last pasted code: computeHrZoneFlowState. We have long established that computeHrZoneFlocsy is different. I now only look at computeHrZoneTouching and computeHrZoneFlowState
At their current state the only "real" difference between them (for hr: [30, maxHR]) is:
And now back to the real question. Forget the math stuff above. As a Garmin user, when your HR zones are set to (this is what UserProfile.getHeartRateZones returns):
I didn't miss the pastebin, I just didn't bother looking at it (which would normally be hypocritical of me), as again this is not my job and I have literally been up all night discussing this.
It's now 8:00 AM where I live.
I now only look at computeHrZoneTouching and computeHrZoneFlowState
Uhhhhhhh, for a guy who joked that I'm hard to understand (which is fair), it's really hard for me to understand why:
- you would want to compare 2 different versions of my algorithm in a topic dedicated to asking "what's the best algorithm (originally between flocsy and flowstate)"
- you would expect me to understand the above quote of yours from the following statement:
"But I just checked it, and the function I called computeHrZoneFlowState above (now renamed to computeHrZoneTouching) and your's give the exact same numbers for all hr values [30, 220]"
Actually, your original statement makes more sense now.
But yeah, now I see that:
- you renamed computeHrZoneFlowState (the implementation you wrote for me) to computeHrZoneTouching
- you made a *new* function computeHrZoneFlowState to represent my latest implementation
- every time you said "same results" (except for zone 0 and 6) you were comparing your implementation of my algorithm to my implementation of my algorithm
Yeah, that's super easy to understand
I thought the point was to compare the *best* (most correct or most preferred) implementation of each of our respective algorithms? Isn't that the point of this topic???
What is the point of comparing 2 implementations of the SAME algorithm, when it's known that the 2nd implementation is just a refinement of the 1st one?
IOW: The actual question is which algorithm is better?
And we determine that by giving an implementation for each algorithm.
I expected my implementation of my algorithm to replace your implementation of my algorithm, not for the 2 implementations to be compared to each other.
What's the point?
- we already know that my (latest) implementation is closer to my actual algorithm in terms of zone 6 and HR that goes above zone 5 max
- I took out the multiplication and division by 100.0, and added multiplication by 1.0, but we both know that wouldn't really materially affect the results.
I just don't see the point anymore.
If anyone else is crazy enough to be following this thread, just use flocsy's implementation. I was wrong about the "bends" in the graph, and the only real difference (other than HR in zone 0 or above zone 5 max) is that his values are "shifted over to the right by 1" (if you graphed hr on the x-axis and hr zone on the y-axis.)
I will also note that in the previous thread, you claimed that both our algorithms would produce the same graphs if all points were connected, which implies that they would produce the same results in general (neither of those things are true), so you can kind of understand my confusion when you started talking about "same results" in the context of 2 implementations of *my algorithm* (one of which was written by you).