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.

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]:=
Click for copyable input
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]:=
Click for copyable input
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]:=
Click for copyable input
Out[1]=

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

In[1]:=
Click for copyable input
Out[1]=

Draw a helix:

In[1]:=
Click for copyable input
In[2]:=
Click for copyable input
Out[2]=

Generate the transformation functions of a path:

In[1]:=
Click for copyable input
Out[1]=

Apply them to a triceratops:

In[2]:=
Click for copyable input
Out[2]=

Use symbolic inputs:

In[1]:=
Click for copyable input
Out[1]=

Scope  (20)

Applications  (7)

Properties & Relations  (6)

Possible Issues  (1)

Interactive Examples  (1)

Neat Examples  (3)

See Also

AnglePath  EulerAngles  EulerMatrix  RotationMatrix  GeometricTransformation  AffineTransform  TranslationTransform  RotationTransform

Introduced in 2017
(11.1)