Jump to content

Hvordan beregne en gjennomsnittelig kompasskurs?


2nd Trikker'n

Recommended Posts

La meg beskrive problemstillingen litt bedre.

Jeg leser NMEA data. De kommer ca hvert annet sekund, og spretter litt fram og tilbake. derfor vil jeg bruke gjennonsnittsberegning for å "dempe" kompasskursens hopp og sprett. Gjennomsnitt er enkelt å beregne. Legg sammen en rekke tall og del på antallet.

 

Men hva gjør jeg på en nordlig kurs?

La meg ta et enkelt eksempel med kun to kurser.

 

3580 og 10 . Summert gir det 3590 og delt på 2 blir da 179,50

Riktig svar er 359,50

 

Jeg ser at 179,50 er feil, og det gjør dere også, men ikke PCen min.

 

Derfor er jeg på jakt etter en algoritme som beregner gjennomsnitt innenfor en tallrekke fra 0 til 359, hvor differansen mellom 0 og 359 = 1.

Link to post
Share on other sites

Gjør kompasskursene om til vektorer, legg sammen vektorene, deretter beregner du retingen til summen av vektorene.

 

 

Her er en liten snutt pseudo-code:

 

sum_kurs_x = 0;
sum_kurs_y = 0;
for (i = 0; i < N; i++)
 {
   sum_kurs_x = cos(kompasskurs[i]);
   sum_kurs_y = sin(kompasskurs[i]);
 }
gjennomsnittskurs = atan2(sum_kurs_y, sum_kurs_x);

 

For å beregne vinkelen til en vektor er det viktig at du bruker funksjonen

atan2(y, x)

 

Funksjonen

atan(y/x)

duger ikke. Den kan ikke vite i hvilken kvadrant vektoren peker, pluss at du kan få "Divisjon by Zero" hvis du seiler rett nord eller sør.

Link to post
Share on other sites

Hjertelig takk.seeya.gif Akkurat det jeg trengte. atan2 er riktig nok ukjent for meg, men det finner jeg sikkert ut av på nettet.

 

Det er utrolig hva man kan få svar på her på BP.

Link to post
Share on other sites

Mulig jeg er helt på bærtur her, men jeg forstår ikke hordan du skal bruke dette.

Legger du inn i regneark underveis, eller har du pc koblet opp til gps som lagrer kursene inn på ett eller annet program?

Har "Daycruiser", er "folk i båt", opptatt av kortsiktig glede i form av fartsrus, beryktet for å bruke den fryktelige paraplydreggen.

Link to post
Share on other sites

Jeg kobler PCen til en eller flere NMEA talkers. F.eks en Simrad AT10 som gir NMEA fra Simnett. Kan koble meg til AIS og radar også.

Jeg henter kart fra Statens kartverk sin internett tjeneste, men henter primært bare oversiktskart. Detaljerte kart er tilgjengelig, men tillates ikke brukt til navigasjon. Et unntak er dybdekart. Ved å klikke på oversiktkartet laster jeg ned detaljert dybdeinformasjon. (Ser på det som akseptabelt da egen båt ikke beveger seg i dybdekartet og dybdekartet kun er informasjon).

 

Jeg viser "all" NMEA informasjon i egnede "vinduer".

 

Fordi NMEA data kommer sånn ca. hvert annet sekund og "flagrer litt i hytt og pine" filtrerer jeg de over tid for å få en "menneskevennlig" visning. Dette er ikke noe problem med hastigheter og posisjoner, men ved asimuth data blir dette litt kinkig - og det har jeg slitt med. Nå har jeg fått svaret.

 

 

Siden jeg kan lagre data, så kan jeg bygge opp en "database" som gir mulighet til å plotte polardiagram og vise en effektivitets verdi basert på hva som er oppnådd tidligere ved nåværende vind- retning og styrke.

 

 

I meget korte trekk.

 

Det er bare min egen fantasi som begrenser meg i hva jeg kan gjøre.

Link to post
Share on other sites

Hehe.

Noen er LITT mere interessert i hobbyen sin enn andre...

Morro med noe som er utenom det vanlige :smiley:

Har "Daycruiser", er "folk i båt", opptatt av kortsiktig glede i form av fartsrus, beryktet for å bruke den fryktelige paraplydreggen.

Link to post
Share on other sites

Join the conversation

You can write a topic or comment now, it will be posted after you have registered. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



×
×
  • Create New...