WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Simulationen > Designer Forum

Designer Forum Treffpunkt für Gedankenaustausch von Simmern, die selbst

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 23.02.2003, 11:59   #1
pschartau
Newbie
 
Registriert seit: 05.02.2003
Beiträge: 12


Frage 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
pschartau ist offline   Mit Zitat antworten
Alt 23.02.2003, 18:56   #2
bartels
Jr. Member
 
Registriert seit: 01.10.2002
Alter: 57
Beiträge: 90


Standard

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.
bartels ist offline   Mit Zitat antworten
Alt 23.02.2003, 20:45   #3
pschartau
Newbie
 
Registriert seit: 05.02.2003
Beiträge: 12


Standard

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
pschartau ist offline   Mit Zitat antworten
Alt 23.02.2003, 21:55   #4
bartels
Jr. Member
 
Registriert seit: 01.10.2002
Alter: 57
Beiträge: 90


Standard

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 ist offline   Mit Zitat antworten
Alt 24.02.2003, 14:49   #5
bartels
Jr. Member
 
Registriert seit: 01.10.2002
Alter: 57
Beiträge: 90


Standard

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
bartels ist offline   Mit Zitat antworten
Alt 24.02.2003, 14:53   #6
HansHartmann
Inventar
 
Registriert seit: 12.02.2001
Alter: 57
Beiträge: 2.908


Standard

Moin zusammen,

ich habe die URL in meinen Bookmarks gelagert. Ist wirklich nützlich:
http://williams.best.vwh.net/avform.htm
____________________________________
Bis dann,
Hans
Digital Aviation
HansHartmann ist offline   Mit Zitat antworten
Alt 25.02.2003, 11:51   #7
pschartau
Newbie
 
Registriert seit: 05.02.2003
Beiträge: 12


Standard

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
pschartau ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist an.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 22:10 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag