Expressions: Difference between revisions
Jump to navigation
Jump to search
(→Related content: + Conditions) |
Red Leader (talk | contribs) (update repo links; add break) |
||
Line 1: | Line 1: | ||
{{Stub}} | {{Stub}} | ||
{{-}} | |||
'''Expressions''' (or '''SGExpressions''') are a feature of the SimGear library and provide a nice way of implementing complex math formulas using XML syntax. | '''Expressions''' (or '''SGExpressions''') are a feature of the SimGear library and provide a nice way of implementing complex math formulas using XML syntax. | ||
They are supported in many systems within the FlightGear code. | They are supported in many systems within the FlightGear code. | ||
Line 13: | Line 14: | ||
== Sample Expressions == | == Sample Expressions == | ||
This is a sample expression for c = sqrt(a*a + b^2). Children/arguments are parsed in the order they appear in in the file (or the order in which they are set via property methods). | This is a sample expression for <code>c = sqrt(a*a + b^2)</code>. Children/arguments are parsed in the order they appear in in the file (or the order in which they are set via property methods). | ||
<syntaxhighlight lang="xml"> | <syntaxhighlight lang="xml"> | ||
<expression> | <expression> | ||
Line 72: | Line 73: | ||
=== Source code === | === Source code === | ||
* {{ | * {{simgear file|simgear/structure/SGExpression.hxx}} | ||
* {{ | * {{simgear file|simgear/structure/SGExpression.cxx}} | ||
[[Category:XML]] | [[Category:XML]] |
Revision as of 18:14, 15 November 2015
This article is a stub. You can help the wiki by expanding it. |
Expressions (or SGExpressions) are a feature of the SimGear library and provide a nice way of implementing complex math formulas using XML syntax.
They are supported in many systems within the FlightGear code.
Caution Expressions do not check if your math creates floating point exceptions (like division by zero conditions, taking the square root of a negative number, etc.). This can cause undefined behavior and may result in NaNs or even Cascading NaNs. |
Usage
Expressions are supported in
- Autopilot configuration files
- Particle system configuration files
- Animations (translate, rotate, scale, range, blend)
- The shader technique
Sample Expressions
This is a sample expression for c = sqrt(a*a + b^2)
. Children/arguments are parsed in the order they appear in in the file (or the order in which they are set via property methods).
<expression>
<sqrt>
<sum>
<product>
<property>/value/a</property>
<property>/value/a</property>
</product>
<pow>
<property>/value/b</property>
<value>2</value>
</pow>
</sum>
</sqrt>
</expression>
Supported elements
<abs> <!-- also: fabs -->
<acos>
<asin>
<atan>
<atan2>
<ceil>
<clip>
<cos>
<cosh>
<difference> <!-- also: dif -->
<div>
<exp>
<floor>
<log>
<log10>
<max>
<min>
<mod>
<pow>
<product> <!-- also: prod -->
<property>
<rad2deg>
<deg2rad>
<sin>
<sinh>
<sqr>
<sqrt>
<sum>
<table>
<tan>
<tanh>
<value>