# NAME

anim_turn - make animation table for vehicle with front-wheel steering.

# SYNOPSIS

anim_turn -l length [-a angle] [-r radius] [-f factor] [-p integer] < in.table > out.table

# DESCRIPTION

The motion of a front wheel steered vehicle is not simple - the instaneous velocity of the front wheels is in the direction they are pointed, while the instantaneous velocity of the back wheels is the direction the vehicle is pointed. The purpose of anim_turn is to produce a complete animation table for such a vehicle, given a table specifying the desired position of the front axle at each relevant time step. The input table should contain four columns, specifying the time and 3D position of the center of the front axle. Actually, the path is assumed to be confined to an x-y plane, but the three columns are included for consistency with other animation routines.

The output is normally a seven-column table which is a copy of the input table with three extra columns specifying the yaw, pitch, and roll of the truck at each time. The pitch and roll are always zero, since the motion is assumed be in an x-y plane.

The -l# option is not optional, and is used to specify the length of the wheelbase (from the front axle to the rear axle).

# OPTIONS

-a#
  In the first frame of the animation, the truck is normally oriented to face the direction defined by the first two positions in the input table. If another initial yaw is desired, then it may be specified with the -a option.
-r#
  Create an animation table for the front wheels. The argument to this option is the radius of the front wheels. The output table has four columns: time, swivel, rotation, and a zero-filled column. These columns represent the orientation of the front wheels in terms of yaw, pitch, and roll; the table can be piped directly into anim_script to animate the wheels.
-f#
  Specify a factor to be used to animate a steering wheel. If this option is selected, the output table will contain four columns: time, swivel, and two zero columns. This table can be used directly by anim_script to make an animation script for a steering wheel. The argument to the option should be the factor by which to exagerate the swiveling of the wheels. For example, on a typical truck, you may need to turn the steering wheel 360=18x20 degrees in order for the wheels to swivel 20 degrees. To model this effect, a factor of 18 would be used.
-p#
  Specify the ratio of input rows to output rows, which must be an integer. The default, of course, is one. The accuracy and smoothness of the steering algorithm are best when the frame rate of the input table is high. This can lead to a degradation of performance when creating a preview animation with a small frame rate. In this case, the user should still use a high frame rate table as input to anim_turn, and decrease the frame rate 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_turn -l 3000 -p10 < in.table > out.table

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

# BUGS

The algorithm used only works for motion in an x-y plane.

# AUTHOR

Carl J. Nuzman

# "BUG REPORTS"

Reports of bugs or problems should be submitted via electronic mail to <devs@brlcad.org>.