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.
-f#
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.
-b#
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.
-r
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.
-p
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.
-s
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.