py3dframe.Frame.get_global_rotation_vector#

Frame.get_global_rotation_vector(*, convention=None, degrees=False)[source]#

Access the rotation vector representation of the rotation between the global frame and this frame in the given convention.

The rotation vector is a compact representation of a rotation in 3D space, where the direction of the vector indicates the axis of rotation and the magnitude represents the angle of rotation.

See also

  • attribute parent to get or set the parent frame.

  • attribute convention to get or set the convention of the frame.

  • attribute global_rotation_vector to get or set the rotation vector between the global frame and this frame in the convention of the frame.

  • method set_global_rotation_vector() to set the rotation vector between the global frame and this frame in a specific convention.

  • method get_rotation_vector() to get the rotation vector between the parent frame and this frame in a specific convention.

Parameters:
  • convention (Optional[int], optional) – Integer in [0, 7] selecting the convention. Defaults to the frame’s own convention.

  • degrees (bool, optional) – If True, the rotation vector is returned in degrees. Default is False (radians).

Returns:

The rotation vector between the global frame and this frame in the given convention with shape (3,).

Return type:

numpy.ndarray

Examples

Lets consider a train and a person standing into the train.

First we can define the train frame relative to the global frame (the canonical frame) and then we can define the person frame relative to the train frame.

from py3dframe import Frame

train = Frame.from_axes(origin=[0, 0, 0], x_axis=[1, 0, 0], y_axis=[0, 1, 0], z_axis=[0, 0, 1], parent=None)
person = Frame.from_axes(origin=[0, 1, 0], x_axis=[1, 0, 0], y_axis=[0, 1, 0], z_axis=[0, 0, 1], parent=train)

Lets assume the train moves and the person moves inside the train.

train.set_translation([10, 0, 0], convention=0) # The train moves of 10 units along the x axis of the global frame.

person.set_translation([0, 2, 0], convention=0) # The person moves by 1 unit along the y axis of the train frame.
person.set_euler_angles([0, 0, 45], convention=0, degrees=True) # The person rotates of 45 degrees around the z axis of the train frame.

If an application using an other convention required the rotation vector between the global frame and the person frame in the convention 4, you can access this rotation vector with the get_global_rotation_vector() method:

global_rotation_vector_person = person.get_global_rotation_vector(convention=4, degrees=True) # Get the rotation vector between the global frame and the person frame in convention 4 in degrees.