def add_rotation(
     self,
     axis: QVector3D,
     angle: float,
     name: str = None,
     depends_on: Transformation = None,
     values: Dataset = Dataset(
         parent_node=None,
         name="",
         values=0,
         type=ValueTypes.DOUBLE,
     ),
     target_pos: int = -1,
 ) -> Transformation:
     """
     Note, currently assumes angle is in degrees
     :param axis: axis
     :param angle:
     :param name: Name of the rotation group (Optional)
     :param depends_on: existing transformation which the new one depends on (otherwise relative to origin)
     :param values: The translation distance information.
     :param target_pos: Target position.
     """
     values.parent_node = self
     return self._create_and_add_transform(
         name,
         TransformationType.ROTATION,
         angle,
         "degrees",
         axis,
         depends_on,
         values,
         target_pos,
     )
 def add_translation(
     self,
     vector: QVector3D,
     name: str = None,
     depends_on: Transformation = None,
     values: Dataset = Dataset(parent_node=None,
                               name="",
                               values=0,
                               type=ValueTypes.DOUBLE),
     target_pos: int = -1,
 ) -> Transformation:
     """
     Note, currently assumes translation is in metres
     :param vector: direction and magnitude of translation as a 3D vector
     :param name: name of the translation group (Optional)
     :param depends_on: existing transformation which the new one depends on (otherwise relative to origin)
     :param values: The translation distance information.
     :param target_pos: Target position.
     """
     values.parent_node = self
     unit_vector, _ = _normalise(vector)
     return self._create_and_add_transform(
         name,
         TransformationType.TRANSLATION,
         0.0,
         "m",
         unit_vector,
         depends_on,
         values,
         target_pos,
     )