removed a bug in the SimpleMovingAverageQueue (see https://github.com/y20k/trackbook/issues/99#issuecomment-830874285)
This commit is contained in:
		
							parent
							
								
									bb00e18312
								
							
						
					
					
						commit
						7663c82c88
					
				
					 1 changed files with 4 additions and 5 deletions
				
			
		| 
						 | 
					@ -529,11 +529,11 @@ class TrackerService: Service(), CoroutineScope, SensorEventListener {
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                // store previous smoothed altitude
 | 
					                // store previous smoothed altitude
 | 
				
			||||||
                val previousAltitude: Double = altitudeValues.average
 | 
					                val previousAltitude: Double = altitudeValues.getAverage()
 | 
				
			||||||
                // put current altitude into queue
 | 
					                // put current altitude into queue
 | 
				
			||||||
                altitudeValues.add(currentBestLocation.altitude)
 | 
					                altitudeValues.add(currentBestLocation.altitude)
 | 
				
			||||||
                // get current smoothed altitude
 | 
					                // get current smoothed altitude
 | 
				
			||||||
                val currentAltitude: Double = altitudeValues.average
 | 
					                val currentAltitude: Double = altitudeValues.getAverage()
 | 
				
			||||||
                // calculate and store elevation differences
 | 
					                // calculate and store elevation differences
 | 
				
			||||||
                track = LocationHelper.calculateElevationDifferences(currentAltitude, previousAltitude, track)
 | 
					                track = LocationHelper.calculateElevationDifferences(currentAltitude, previousAltitude, track)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -562,16 +562,15 @@ class TrackerService: Service(), CoroutineScope, SensorEventListener {
 | 
				
			||||||
    /* Credit: CircularQueue https://stackoverflow.com/a/51923797 */
 | 
					    /* Credit: CircularQueue https://stackoverflow.com/a/51923797 */
 | 
				
			||||||
    class SimpleMovingAverageQueue(var capacity: Int) : LinkedList<Double>() {
 | 
					    class SimpleMovingAverageQueue(var capacity: Int) : LinkedList<Double>() {
 | 
				
			||||||
        private var sum: Double = 0.0
 | 
					        private var sum: Double = 0.0
 | 
				
			||||||
        var average: Double = sum / capacity
 | 
					 | 
				
			||||||
        override fun add(element: Double): Boolean {
 | 
					        override fun add(element: Double): Boolean {
 | 
				
			||||||
            if (this.size >= capacity) {
 | 
					            if (this.size >= capacity) {
 | 
				
			||||||
                sum -= this.first
 | 
					                sum -= this.first
 | 
				
			||||||
                removeFirst()
 | 
					                removeFirst()
 | 
				
			||||||
            } else {
 | 
					 | 
				
			||||||
                sum += element
 | 
					 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					            sum += element
 | 
				
			||||||
            return super.add(element)
 | 
					            return super.add(element)
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        fun getAverage(): Double = sum / capacity
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue