# AnglePath3D

AnglePath3D[{{α1,β1,γ1},{α2,β2,γ2},}]

gives the list of 3D coordinates of a path of an object that starts at {0,0,0}, then takes a series of steps of unit length, each in the direction of the axis obtained after successive rotation of the object by the Euler angles αi, βi, γi.

AnglePath3D[{{α1,β1},{α2,β2},}]

assumes the Euler angles γi to be 0.

AnglePath3D[{mat1,mat2,}]

takes the successive rotations to be specified by the 3D rotation matrices mati.

AnglePath3D[{{r1,rot1},{r2,rot2},}]

takes successive steps of length ri with Euler angles or rotation matrices specified by roti.

AnglePath3D[{x0,y0,z0},steps]

starts at the point {x0,y0,z0}.

AnglePath3D[{rot0},steps]

starts in the axis direction specified by rotating the object according to Euler angles or rotation matrix rot0.

AnglePath3D[{{x0,y0,z0},rot0},steps]

starts at point {x0,y0,z0} with the axis direction specified by rot0.

AnglePath3D[init,steps,form]

returns at each step the data of the form specified by form.

# Details

• The successive directions taken in AnglePath3D are defined by the axes of successive local frames, which can be thought of as defining the orientation of a 3D object.
• By default, the orientation of the initial frame is aligned with the coordinate axes.
• At each step, the local frame is rotated, then the path advances by the specified distance along the axis in the new frame.
• A triple of angles {αi,βi,γi} is generally equivalent to the Euler rotation matrix EulerMatrix[{αi,βi,γi},{3,2,1}]. In this convention, αi can be thought of as a longitude angle, βi as a latitude angle and γi as a rotation angle about the displacement axis.
• The lengths of the steps can be specified with {{r1,rot1},{r2,rot2},}, or equivalently with {{r1,r2,},{rot1,rot2,}}.
• For a step of length ri with direction specified by mati, the next position pi={xi,yi,zi} is obtained by pi=pi-1+fi.{ri,0,0}, with the frame rotation matrix fi given by fi=fi-1.mati and f0=mat0.
• AnglePath3D[steps,form] is equivalent to AnglePath3D[{0,0,0},steps,form].
• Possible choices for form in AnglePath3D[,form] include:
•  "Position" Cartesian coordinates {xi,yi,zi} (default) "FrameMatrix" rotation matrix of the frame fi with respect to f0 "EulerMatrix" rotation matrix of the frame fi with respect to fi - 1 "FrameAngles" EulerAngles[fi,{3,2,1}] "EulerAngles" {αi,βi,γi} "Translation" TranslationTransform[{xi,yi,zi}] "Rotation" AffineTransform[fi] "RotationTranslation" AffineTransform[{fi,{xi,yi,zi}}] {form1,form2,…} a list of forms
• The arguments init and steps can be symbolic. They can also be Quantity objects.

# Examples

open allclose all

## Basic Examples(6)

Starting at {0,0,0} along the axis, move several unit steps, rotating by 90° with respect to the local axis at each step:

 In[1]:=
 Out[1]=

Move several unit steps, rotating the local frame by Euler angles 30°, 30° and 90° with respect to the local axes , and :

 In[2]:=
 Out[2]=

Move with steps of different lengths, rotating the local frame by Euler angles 90° with respect to the local axes and :

 In[1]:=
 Out[1]=

Advance 20 steps, always rotating the local frame by Euler angles 100° with respect to all axes:

 In[1]:=
 Out[1]=

Draw a helix:

 In[1]:=
 In[2]:=
 Out[2]=

Generate the transformation functions of a path:

 In[1]:=
 Out[1]=

Apply them to a triceratops:

 In[2]:=
 Out[2]=

Use symbolic inputs:

 In[1]:=
 Out[1]=