Difference between revisions of "API:FlightGlobals"

From Kerbal Space Program Wiki
Jump to: navigation, search
(Created page with "The FlightGlobals class contains a number of useful static functions and fields. == Useful members == Note: this is not a complete listing of the class's members. It include...")
 
m (Bodies is of the type System.Collections.Generic.List<CelestialBody>, as opposed to CelestialBody(which is just a singe body))
 
(5 intermediate revisions by 4 users not shown)
Line 3: Line 3:
 
== Useful members ==
 
== Useful members ==
  
Note: this is not a complete listing of the class's members. It includes only the members that someone has figured out how to use and written an explanation for. If you figure out what the other members that aren't listed here do, you should add them to the list!
+
{{Box|2=This is not a complete listing of the class's members. It includes only the members that someone has figured out how to use and written an explanation for. If you figure out what the other members that aren't listed here do, you should add them to the list!}}
  
<table border="1">
+
A number of FlightGlobals functions have two versions: one that takes a CelestialBody as an argument and one that doesn't. Presumably the second version uses the mainBody of the active vessel. Below are listed only the versions that take an explicit CelestialBody argument.
<tr>
 
<td><code>static float GetAltitudeAtPos(Vector3 position)</code></td>
 
<td>Gives the altitude above sea level of a given world position. Probably the celestial body used in this calculation is the active vessel's mainBody.</td>
 
</tr>
 
<tr>
 
<td><code>static double getAtmDensity(double pressure)</code></td>
 
<td>Calculates an atmospheric density in some arbitrary units. Presumably it's meant to take as input the output of FlightGlobals.getStaticPressure. The following code seems to work quite well to compute the drag force on a part and may in fact be the same as what the game code does:
 
  
<code>double rho = FlightGlobals.getAtmDensity(FlightGlobals.getStaticPressure(position, body)) / 125.0;
+
{| class="wikitable"
 +
! Signature
 +
! Description
 +
|-
 +
{{Method|returntype=float|name=GetAltitudeAtPos|args={{type|Vector3}} position, {{type|CelestialBody}} body|desc=Gives the altitude of a given world position above body's sea level.}}
 +
{{Method|returntype=double|name=getAtmDensity|args={{type|double}} pressure|desc=Calculates an atmospheric density in some arbitrary units (likely kg/m<sup>3</sup>). Presumably it's meant to take as input the output of FlightGlobals.getStaticPressure. The following code seems to work quite well to compute the drag force on a part and may in fact be the game's drag formula:
  
 +
<syntaxhighlight line lang="csharp">
 +
double rho = FlightGlobals.getAtmDensity(FlightGlobals.getStaticPressure(position, body));
 
Vector3d airVel = vessel.orbit.GetVel() - body.getRFrmVel(position); //the velocity of the vessel relative to the air
 
Vector3d airVel = vessel.orbit.GetVel() - body.getRFrmVel(position); //the velocity of the vessel relative to the air
 
+
Vector3d dragForce = -0.5 * rho * FlightGlobals.DragMultiplier * part.mass * part.maximum_drag * airVel.magnitude * airVel;
Vector3d dragForce = -0.5 * rho * part.mass * part.maximum_drag * airVel.magnitude * airVel;</code>
+
</syntaxhighlight>
</td>
+
}}
</tr>
+
{{Method|returntype=Vector3d|name=getGeeForceAtPosition|args={{type|Vector3d}} pos|desc=The gravitational acceleration (not force) at the position pos. Does this compute which SOI pos is in or does it assume that pos is in the SOI of the active vessel's mainBody?}}
<tr>
+
{{Method|returntype=double|name=getStaticPressure|args={{type|Vector3d}} position, {{type|CelestialBody}} body|desc=The air pressure of body's atmosphere at position, in some arbitrary units (likely atmospheres).}}
<td><code></code></td>
+
{{Property|type=Vessel|name=ActiveVessel|hasget=1|desc=The vessel currently being controlled by the player.}}
<td></td>
+
{{Property|type=List<CelestialBody>|array=[]|name=Bodies|hasget=1|desc=An array containing all the celestial bodies in the universe.}}
</tr>
+
{{Property|type=float|name=DragMultiplier|hasget=1|desc=A proportionality constant that scales the strength of aerodynamic drag forces.}}
<tr>
+
{{Property|type=List|array=&lt;{{type|Vessel}}&gt;|name=Vessels|hasget=1|desc=A list of all the Vessels in the universe.}}
<td><code></code></td>
+
|}
<td></td>
 
</tr>
 
<tr>
 
<td><code></code></td>
 
<td></td>
 
</tr>
 
<tr>
 
<td><code></code></td>
 
<td></td>
 
</tr>
 
<tr>
 
<td><code></code></td>
 
<td></td>
 
</tr>
 
<tr>
 
<td><code></code></td>
 
<td></td>
 
</tr>
 
<tr>
 
<td><code></code></td>
 
<td></td>
 
</tr>
 
<tr>
 
<td><code></code></td>
 
<td></td>
 
</tr>
 
<tr>
 
<td><code></code></td>
 
<td></td>
 
</tr>
 
<tr>
 
<td><code></code></td>
 
<td></td>
 
</tr>
 
<tr>
 
<td><code></code></td>
 
<td></td>
 
</tr>
 
<tr>
 
<td><code></code></td>
 
<td></td>
 
</tr>
 
<tr>
 
<td><code></code></td>
 
<td></td>
 
</tr>
 
<tr>
 
<td><code></code></td>
 
<td></td>
 
</tr>
 
<tr>
 
<td><code></code></td>
 
<td></td>
 
</tr>
 
<tr>
 
<td><code></code></td>
 
<td></td>
 
</tr>
 
<tr>
 
<td><code></code></td>
 
<td></td>
 
</tr>
 
</table>
 
  
 
[[Category:Community API Documentation]]
 
[[Category:Community API Documentation]]

Latest revision as of 23:46, 24 March 2019

The FlightGlobals class contains a number of useful static functions and fields.

Useful members

This is not a complete listing of the class's members. It includes only the members that someone has figured out how to use and written an explanation for. If you figure out what the other members that aren't listed here do, you should add them to the list!

A number of FlightGlobals functions have two versions: one that takes a CelestialBody as an argument and one that doesn't. Presumably the second version uses the mainBody of the active vessel. Below are listed only the versions that take an explicit CelestialBody argument.

Signature Description
float GetAltitudeAtPos(Vector3 position, CelestialBody body) Gives the altitude of a given world position above body's sea level.
double getAtmDensity(double pressure) Calculates an atmospheric density in some arbitrary units (likely kg/m3). Presumably it's meant to take as input the output of FlightGlobals.getStaticPressure. The following code seems to work quite well to compute the drag force on a part and may in fact be the game's drag formula:
  1. double rho = FlightGlobals.getAtmDensity(FlightGlobals.getStaticPressure(position, body));
  2. Vector3d airVel = vessel.orbit.GetVel() - body.getRFrmVel(position); //the velocity of the vessel relative to the air
  3. Vector3d dragForce = -0.5 * rho * FlightGlobals.DragMultiplier * part.mass * part.maximum_drag * airVel.magnitude * airVel;
Vector3d getGeeForceAtPosition(Vector3d pos) The gravitational acceleration (not force) at the position pos. Does this compute which SOI pos is in or does it assume that pos is in the SOI of the active vessel's mainBody?
double getStaticPressure(Vector3d position, CelestialBody body) The air pressure of body's atmosphere at position, in some arbitrary units (likely atmospheres).
Vessel ActiveVessel { get; } The vessel currently being controlled by the player.
List<CelestialBody> Bodies { get; } An array containing all the celestial bodies in the universe.
float DragMultiplier { get; } A proportionality constant that scales the strength of aerodynamic drag forces.
List Vessels { get; } A list of all the Vessels in the universe.