WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Designer Forum (http://www.wcm.at/forum/forumdisplay.php?f=61)
-   -   Multigauges, shared variables (http://www.wcm.at/forum/showthread.php?t=89046)

pschartau 23.02.2003 11:59

Multigauges, shared variables
 
Hallo,
ich habe mir in C eine kleine Gauge geschrieben, die ich jetzt gerne in Multigauges umwandeln kann, damit ich verschiedene Teile im Cockpit unterschiedlich positionieren kann. Jetzt habe ich eine kleine Frage bzg. globalen Variablen und Performance.
Ein Teil der Gauge berechnet die Distanz von der derzeitigen Flugzeugposition zu einem bestimmten Punkt. Auf den berechneten Wert sollen alle Subgauges zugreifen können. Deswegen habe ich in meinem Mastre Source File folgendes stehen:
Code:

/////////////////////////////////////////////////////////////////////////////
// Getting FS internal variables
/////////////////////////////////////////////////////////////////////////////
MODULE_VAR curr_lat = {PLANE_LATITUDE};
FLOAT64 latit() {
  FLOAT64 result;
  lookup_var(&curr_lat);
  result=curr_lat.var_value.n;
  result=result/40007000.0*360.0;
  return result;
}

MODULE_VAR curr_long = {PLANE_LONGITUDE};
FLOAT64 longit() {
  FLOAT64 result;
  lookup_var(&curr_long);
  result=curr_long.var_value.n;
  result=result/281474976710656.0*360.0;
  return result;
}

/////////////////////////////////////////////////////////////////////////////
// Distance function
/////////////////////////////////////////////////////////////////////////////
FLOAT64 distance(FLOAT64 lat1, FLOAT64 lon1, FLOAT64 lat2, FLOAT64 lon2) {
  FLOAT64 result;
  result=(FLOAT64)(((180*60)/PI)*(acos(sin(lat1)*sin(lat2)+cos(lat1)*cos(lat2)*cos(lon1-lon2))));
  return result;
}

Wenn jetzt eine Multigauge die Distanz braucht, füge ich einfach folgenden Code an der gewünschten Stelle ein:
Code:

distanz=distance(latit(), longit(), lat_ziel, lon_ziel)
(natürlich nicht wortwörtlich so, man muss die Koordinaten für die Formel vorher noch in radians umwandeln...)


Ich bin jetzt nur ein wenig besorgt wegen der Performance, da alle Functionen ja pro Update-Cycle mehrmals aufgerufen werden. Ist es sinnvoll, das so zu machen, oder gibt es einen Weg, wo ein bissel Prozessorlast gespart wird?
Gruß
Philipp

bartels 23.02.2003 18:56

Im Prinzip kannst Du natürlich in einer GAUGECALLBACK-Funktion die Berechnungen durchführen, in allen Gauges zugänglichen Variablen speichern und dann auf diese zugreifen. Andererseits ist die Berechnung die Du brauchst etwas, was der durchschnittliche Prozessor problemlos nebenher erledigt. Ich zweifle, dass Du das überhaupt merkst ob diese Berechnungen ein- oder mehrfach ausgeführt werden.
Arne Bartels
P.S. für Großkreise gibt es übrigens eine modifizierte Formel, die für kurze Distanzen genauer ist, besonders bei Distanz 0 nicht ausflippt, müsste ich aber erst mal wieder ausgraben.

pschartau 23.02.2003 20:45

OK danke, ich werde es dann so lassen, wie es programiertechnisch am übersichtlichsten ist.
Wo wie beim Thema Großkreis sind: Gibt es eine Formel für den Kurs zwischen zwei Punkten, so dass der Kurs über die ganze Strecke konstant bleibt und die Formel nicht nur den zu fliegenden Anfangskurs berechnet? D.h. der Flugweg liegt nicht auf einem Großkreis, sondern auf einer Loxodrome (Kursgleiche).
Gruß
Philipp

bartels 23.02.2003 21:55

Ich habe mich nie mit Loxodromen beschäftigt. Es gab (gibt) eine Seite "Aviations Formulas" oder so ähnlich (URL habe ich gerade nicht bereit), wo meines Wissens Großkreis- und Loxodromformeln beschrieben sind. Oder Du schaust mal in einer besseren Formelsammlung nach, meine liegt im Büro, da kann ich erst morgen nachschauen.
Arne Bartels

bartels 24.02.2003 14:49

Probier mal
http://www.rainerstumpe.de/HTML/body_kurse2.html
und
http://www.rainerstumpe.de/HTML/body_kurse3.html
So einen ähnlichen Ansatz habe ich gestern probiert, aber mich irgendwo verhaspelt.
Arne Bartels

HansHartmann 24.02.2003 14:53

Moin zusammen,

ich habe die URL in meinen Bookmarks gelagert. Ist wirklich nützlich:
http://williams.best.vwh.net/avform.htm

pschartau 25.02.2003 11:51

Ich habe ein fantastisches Dokument gefunden:
http://williams.best.vwh.net/ftp/avsig/gcircle.pdf
Hat sowohl Großkreis- als auch Loxodrom-Berechnungen.

Gruß
Philipp


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:50 Uhr.

Powered by vBulletin® Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag