Einzelnen Beitrag anzeigen
Alt 07.12.2006, 20:48   #2
harry3
Inventar
 
Registriert seit: 11.06.2001
Alter: 39
Beiträge: 2.397


harry3 eine Nachricht über ICQ schicken
Standard

Gehen wir den interessanten Bereich mal kurz durch.
Solltest du nicht wissen was Stack heißt, so reicht es zu wissen dass es sozusagen ein "Zwischenspeicher" ist, ein Bereich wo der Computer z.B. seine Zwischenergebnisse von Rechnungen ablegt.

PHP-Code:
(A:AMBIENT WIND Y,meter/second) (A:AIRSPEED TRUE,meter/secondsqr 800 / - (A:VERTICAL SPEED,meter/second10 / + (A:SPOILERS LEFT POSITION,percent60 / - (A:RUDDER POSITION,percentabs 245 / - (A:ATTITUDE INDICATOR BANK DEGREES,degreeabs 25 / - (A:SIM ON GROUND,bool) ! * 
Der Wert von (A:AMBIENT WIND Y,meter/second) wird vorerst nur auf den Stack gelegt.

(A:AIRSPEED TRUE,meter/second) wird quadriert und danach durch 800 dividiert, das Ergebnis wird auf dem Stack gelegt.

Nun liegen auf dem Stack die beiden Werte (A:AMBIENT WIND Y,meter/second) und das Ergebnis von oben. Diese beiden werden jetzt voneinander subtrahiert.
Ergebnis landet wieder auf dem Stack.

(A:VERTICAL SPEED,meter/second) wir danach durch 10 dividiert, und das Ergebnis wird mit dem Zwischenergebnis von zuerst, das noch auf dem Stack liegt, zusammengezählt.

(A:SPOILERS LEFT POSITION,percent) wird durch 60 dividiert und danach wird das Ergebnis wieder vom Wert, der noch am Stack liegt, abgezogen.

Von (A:RUDDER POSITION,percent) wird der Absolutwert genommen(also ein evtl. vorhandenes Minus wird "weggestrichen"), durch 245 dividiert und danach wieder vom Zwischenergebnis am Stack abgezogen.

Die Zeile mit (A:ATTITUDE INDICATOR BANK DEGREES,degree) tut im Prinzip das gleiche.

Die Zeile (A:SIM ON GROUND,bool) ! * ist wieder interessant. Die Variable (A:SIM ON GROUND,bool) wird durch das Rufezeichen invertiert, also aus 0 wird 1 und umgekehrt. Ist der Flieger am Boden, so liefert (A:SIM ON GROUND,bool) ! eine 0, und dieses Ergebnis wird dann mit dem Stackwert multipliziert. Am Boden also mit 0, in der Luft mit 1, hat zur Folge dass der Vario am Boden immer 0 anzeigt.

Soweit zur Erklärung des Codes. Wie sich die Formel jetzt mathematisch herleitet kann ich dir nicht sagen, am besten du gehst das ganze mal mit Bleistift und Papier durch, vielleicht kommst du dann dahinter was sich der Programmierer dabei gedacht hat.


Grüße,
Harri
harry3 ist offline   Mit Zitat antworten