Expressions: Difference between revisions
Jump to navigation
Jump to search
Philosopher (talk | contribs) m (Philosopher moved page Expression to Expressions: To match Bindings) |
Philosopher (talk | contribs) m (→Sample Expressions: Clarification about order, since SGPropertyNodes are generally used as unordered associative containers versus vectors) |
||
Line 13: | Line 13: | ||
== Sample Expressions == | == Sample Expressions == | ||
This is a sample expression for c = sqrt(a*a + b^2) | 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). | ||
<syntaxhighlight lang="xml"> | <syntaxhighlight lang="xml"> | ||
<expression> | <expression> |
Revision as of 02:35, 11 September 2013
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.
Beware: 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
<acos>
<asin>
<atan>
<ceil>
<cos>
<cosh>
<exp>
<floor>
<log>
<log10>
<rad2deg>
<sin>
<sinh>
<sqrt>
<tan>
<tanh>
<atan2>
<div>
<mod>
<pow>
<value>
<property>
<abs> <!-- also: fabs -->
<sqr>
<clip>
<div>
<mod>
<sum>
<difference> <!-- also: dif -->
<product> <!-- also: prod -->
<min>
<max>
<table>