Deo zbornika Učimo algoritme

Srednja vrednost uglova

Za računanje srednje vrednosti ugla potrebno je koristiti trigonometriju, jer ugao u kružnici ne možemo prosečno računati kao obične brojeve.

Problem

Imamo senzore na uređaju, koji neprestano mere trenutnu orijentaciju, ali iglu kompasa ne želimo ažurirati svaki put, kako ne bi previše skakala.

Naš program prima niz izmerenih uglova kružnice, između 0 i 360 stepeni. Od niza informacija dobijenih senzorom izračunaj srednju vrednost, kako bi stabilizovao iglu na kompasu.

Rešenje

Prvo treba izračunati srednje vrednosti x i y komponenti, a zatim srednji ugao koristeći arktangens.

function izracunajSrednjiUgao(uglovi) {
  let x = 0
  let y = 0

  for (const ugao of uglovi) {
    x += Math.cos(ugao * Math.PI / 180)
    y += Math.sin(ugao * Math.PI / 180)
  }

  return Math.atan2(y, x) * 180 / Math.PI
}

console.log(izracunajSrednjiUgao([10, 20, 15, 25, 30]))
console.log(izracunajSrednjiUgao([350, 360, 5, 10, 20]))