Matteproblem

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
Frippe
Inlägg: 248
Blev medlem: 5 augusti 2004, 11:17:52
Skype: Fred_nord
Ort: Landvetter
Kontakt:

Inlägg av Frippe »

att det var 15 år sedan jag läste matte... :D
Problemet uppstår att du har inte samma skala på lat. och long.
Man mäter alltid avstånd (distans) på lat. skalan. Och tittar man på hur sjökorten är ritade så används oftas Mercators projektion och det innebär att korten inte är riktig proptionella med verkligheten.
Om jag räknar enl. formeln med datan fart:20 knop, kurs:045 grader så får jag följande:
efter 10 min har jag en total förflyttning på ca:
lat + 3,5
long + 3,5

men eftersom long. skalan är "kortare" så kommer man inte "rätt".
// Fredrik
danei
EF Sponsor
Inlägg: 26423
Blev medlem: 2 juni 2003, 14:21:34
Ort: Östergötland
Kontakt:

Inlägg av danei »

Du skrev ingen enhet på ditt svar. Är det riktings komposanten så är det fel. Då borde du få 14knop. Det är samma sak som (1grad/60)/h på latituden. För att räkna om det till för att det ska stämma med logituden måste du multiplicera med en kostant som är beroende på vilken latitud du är på. 1 på ekvatiorn och 0 på polerna. frågan är om det är så enkelt så att konstnten är cos (latitud) ? Det verkar rimligt men jag orkar inte räkna på det nu...

Jag har bortsett från att jorden inte är en perfekt svär i mina förklaringar.

EDIT: Efter lite funderande kom jag fram till att det stämmer. Fråga igen om du vill ha mer förklaringar eller färdiga formler.

EDIT2: Nu såg jag att det var förflyttning på 10 min du hadde räknat ut.
Jag får det till:
longitud + 2,4*cos(latitud)
latitud + 2,4
Användarvisningsbild
Frippe
Inlägg: 248
Blev medlem: 5 augusti 2004, 11:17:52
Skype: Fred_nord
Ort: Landvetter
Kontakt:

Inlägg av Frippe »

Jag har nu gjort en tur på sjökortet :
Fart: 10 Knop = 10 sjömil / 10 = 5,14 m/s
Kurs: 45 grader

Startpunkt: N57 30´
E11 25´

efter 1 timme är jag vid :
N57 37,1´
E11 38,2´

Detta måste ju gå att räkna ut i en PIC med picbasic

// Fredrik
danei
EF Sponsor
Inlägg: 26423
Blev medlem: 2 juni 2003, 14:21:34
Ort: Östergötland
Kontakt:

Inlägg av danei »

Fart: 10 Knop = 10 sjömil / h = 5,14 m/s
Kurs: 45 grader

Startpunkt: N57 30´
E11 25´


Nordlig fart
cos45 * 10knop = 7,07 knop
Nordlig sträcka
7,07knop * 1h = 7,07 sjömil
position
N57 30´ + 7,07´sjömil = N57 37,07´

Östlig fart.
sin45 * 10knop = 7,07 knop
Östlig sträcka
7,07knop * 1h = 7,07 sjömil
kompensering
cos 57,5 = 0,537
position
E11 25´ + 7,07´sjömil/0,537 = E11 38,16

Det verkar vara samma sak som du kom fram till.
Användarvisningsbild
Frippe
Inlägg: 248
Blev medlem: 5 augusti 2004, 11:17:52
Skype: Fred_nord
Ort: Landvetter
Kontakt:

Inlägg av Frippe »

:cry: Fattar inte.. :D
Vart kom kompenseringen ifrån ?

Nu gäller det bara att inte använda för många float variabler (funkar inget bra i picbasic)

(Här skall testas)
Tack på förhand
// Fredrik
danei
EF Sponsor
Inlägg: 26423
Blev medlem: 2 juni 2003, 14:21:34
Ort: Östergötland
Kontakt:

Inlägg av danei »

Du behöve kompensera för att en grad i öst-västlig rikning är lika lång beroende på hur långt från ekvatorn du är. På ekvatorn är 1°/60 samma sak som en sjömil. Det är det inte om du lämnar ekvatorn. Då är 1°/60 samma sak som cos(latituden) sjömil. Det sämmer även för ekvatorn då cos (0) = 1
Användarvisningsbild
Frippe
Inlägg: 248
Blev medlem: 5 augusti 2004, 11:17:52
Skype: Fred_nord
Ort: Landvetter
Kontakt:

Inlägg av Frippe »

:lol: misstänkte det.

Men nu är det bara så att när jag knappade in detta i picbasic:

Kod: Markera allt

speed = 10
heading = 45
comp = cos 57.5
cos_ = cos heading
sin_ = sin heading
lat = speed * cos_
ychange = speed * sin_
long = ychange / comp
och tittade på lat och long så fick jag lat:5.235 och long:14.655 som värden. Jag tror den är lika dum som jag. :oops:
edit :

lade in följande:

Kod: Markera allt

speed = 10
heading = 45
compvalue = 0.537
comp = cos compvalue
cos_ = cos heading
sin_ = sin heading
ychange = sin_ * speed
lat = cos_ * speed
long = ychange / comp
och fick lat:6.530 och long:7.071

// Fredrik
danei
EF Sponsor
Inlägg: 26423
Blev medlem: 2 juni 2003, 14:21:34
Ort: Östergötland
Kontakt:

Inlägg av danei »

Det är inte så enkelt så att den räknar i radiander eller så? Jag kan inte pic basic
matseng
Inlägg: 2360
Blev medlem: 16 september 2003, 17:18:13
Ort: Dubai, United Arab Emirates
Kontakt:

Inlägg av matseng »

Nä, varesig i radianer eller grader:

Sålunda talade $tiff i ett tidigare inlägg:
"för att göra saken änn jobbigare så är cos/sin i PICBasic angivet i "B-RAD". dv.s. löper från -128 till 127 radianer. Därför måste man konvertera grader till "b-rads" också."
danei
EF Sponsor
Inlägg: 26423
Blev medlem: 2 juni 2003, 14:21:34
Ort: Östergötland
Kontakt:

Inlägg av danei »

Fördelen med det här forumet är att det oftast finns någon som vet... :D
Användarvisningsbild
Frippe
Inlägg: 248
Blev medlem: 5 augusti 2004, 11:17:52
Skype: Fred_nord
Ort: Landvetter
Kontakt:

Inlägg av Frippe »

Från Proton Picbasic manualen:
With 12, and 14-bit core devices, COS returns the 8-bit cosine of a value, compatible with the BASIC Stamp syntax. The result is in two's complement form (i.e. -127 to 127). COS starts with a value in binary radians, 0 to 255, instead of the customary 0 to 359 degrees.

However, with the extra functionality, and more linear memory offered by the 16-bit core devices, full 32-bit floating point COSINE is implemented.
Och just ju testar jag med 18F452 så det borde ju gå, men jag får nog uppgradera min Proton.
Skriv svar