anim_fly — make animation table to simulate flying motion


anim_fly [-f factor] [-r ] [-p integer] [-b max_bank_angle] [-s step] in.table out.table


This filter is designed to simulate the motion of an airplane. Given a four-column table specifying the desired 3D position of the airplane at each relevant time step, anim_fly produces a seven-column file which also includes the orientation of the plane in terms of yaw, pitch, and roll. The yaw and pitch are manipulated so that the plane faces the direction of motion, while the roll is used to do banking.



This option specifies a factor to control the severity of the banking. The best factor is a subjective decision; a good starting point can best be obtained by using the -b option. Animations representing aircraft of different scales will need different factors. If the slightest curve throws the plane into a 90-degree bank, the factor is too large; if it doesn't bank enough, the factor is too small. The size of the best factor varies inversely with the size of the imagined aircraft plane. If a factor of 0 is used, there will be no banking. This would be appropriate for animating a ground vehicle.


This option is used to estimate a good value for the -f option. The parameter is the maximum desired banking angle. Anim_fly then computes the factor necessary to keep the banking below the specified angle. This value is returned instead of anim_fly's usual output.


Suppress vertical loop smoothing. A special case occurs if the aircraft is to perform a vertical loop. Normally, the algorithm likes to keep the aircraft right-side up. This would cause the airplane to do an instantaneous 180-degree roll as it hits the vertical portion of the loop. To counter this, a capability was built in which prevents this sudden roll, allowing the aircraft to go upside-down in a loop situation. This feature can be suppressed with the -r flag.


Specify the ratio of input rows to output rows, which must be an integer. The default, of course, is one. The accuracy of the output depends on having a large number of input lines, which is not usually a problem in animations, which require a large number of frames per second, anyway. If a test animation with a small number of frames per second is being created, the user should still use an input table with a high number of input rows, reducing the frequency of the output with the -p option. For example, if in.table contains 30 rows for each second of the animation, then the command:

anim_fly -f0.001 -p10 < in.table > out.table

would produce an animation table containing 3 rows for each second of the animation.


Specify the minimum step size for the discrete-time differentiation. At any given point on the flight path, the yaw, pitch, and roll are calculated based on a past point, the current point, and a future point. Normally, these are consecutive points from the input table. If the time difference between the points falls below a certain threshold, then non-consecutive points are used to avoid numerical instability. The default time threshold is 0.1 seconds; this can be raised or lowered using the -s option. Try raising the threshold if the output orientations experience random jitter.


Carl J. Nuzman


This software is Copyright (c) 1993-2016 by the United States Government as represented by U.S. Army Research Laboratory.


Reports of bugs or problems should be submitted via electronic mail to <>.