:py:mod:`rofunc.utils.robolab.coord.transform`
==============================================

.. py:module:: rofunc.utils.robolab.coord.transform

.. autodoc2-docstring:: rofunc.utils.robolab.coord.transform
   :allowtitles:

Module Contents
---------------

Classes
~~~~~~~

.. list-table::
   :class: autosummary longtable
   :align: left

   * - :py:obj:`Arcball <rofunc.utils.robolab.coord.transform.Arcball>`
     - .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.Arcball
          :summary:

Functions
~~~~~~~~~

.. list-table::
   :class: autosummary longtable
   :align: left

   * - :py:obj:`identity_matrix <rofunc.utils.robolab.coord.transform.identity_matrix>`
     - .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.identity_matrix
          :summary:
   * - :py:obj:`unit_vector <rofunc.utils.robolab.coord.transform.unit_vector>`
     - .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.unit_vector
          :summary:
   * - :py:obj:`random_vector <rofunc.utils.robolab.coord.transform.random_vector>`
     - .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.random_vector
          :summary:
   * - :py:obj:`random_quaternion <rofunc.utils.robolab.coord.transform.random_quaternion>`
     - .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.random_quaternion
          :summary:
   * - :py:obj:`random_rot_matrix <rofunc.utils.robolab.coord.transform.random_rot_matrix>`
     - .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.random_rot_matrix
          :summary:
   * - :py:obj:`random_homo_matrix <rofunc.utils.robolab.coord.transform.random_homo_matrix>`
     - .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.random_homo_matrix
          :summary:
   * - :py:obj:`vector_norm <rofunc.utils.robolab.coord.transform.vector_norm>`
     - .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.vector_norm
          :summary:
   * - :py:obj:`inverse_matrix <rofunc.utils.robolab.coord.transform.inverse_matrix>`
     - .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.inverse_matrix
          :summary:
   * - :py:obj:`translation_matrix <rofunc.utils.robolab.coord.transform.translation_matrix>`
     - .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.translation_matrix
          :summary:
   * - :py:obj:`translation_from_matrix <rofunc.utils.robolab.coord.transform.translation_from_matrix>`
     - .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.translation_from_matrix
          :summary:
   * - :py:obj:`reflection_matrix <rofunc.utils.robolab.coord.transform.reflection_matrix>`
     - .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.reflection_matrix
          :summary:
   * - :py:obj:`reflection_from_matrix <rofunc.utils.robolab.coord.transform.reflection_from_matrix>`
     - .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.reflection_from_matrix
          :summary:
   * - :py:obj:`rotation_matrix <rofunc.utils.robolab.coord.transform.rotation_matrix>`
     - .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.rotation_matrix
          :summary:
   * - :py:obj:`rotation_from_matrix <rofunc.utils.robolab.coord.transform.rotation_from_matrix>`
     - .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.rotation_from_matrix
          :summary:
   * - :py:obj:`scale_matrix <rofunc.utils.robolab.coord.transform.scale_matrix>`
     - .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.scale_matrix
          :summary:
   * - :py:obj:`scale_from_matrix <rofunc.utils.robolab.coord.transform.scale_from_matrix>`
     - .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.scale_from_matrix
          :summary:
   * - :py:obj:`projection_matrix <rofunc.utils.robolab.coord.transform.projection_matrix>`
     - .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.projection_matrix
          :summary:
   * - :py:obj:`projection_from_matrix <rofunc.utils.robolab.coord.transform.projection_from_matrix>`
     - .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.projection_from_matrix
          :summary:
   * - :py:obj:`clip_matrix <rofunc.utils.robolab.coord.transform.clip_matrix>`
     - .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.clip_matrix
          :summary:
   * - :py:obj:`shear_matrix <rofunc.utils.robolab.coord.transform.shear_matrix>`
     - .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.shear_matrix
          :summary:
   * - :py:obj:`shear_from_matrix <rofunc.utils.robolab.coord.transform.shear_from_matrix>`
     - .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.shear_from_matrix
          :summary:
   * - :py:obj:`decompose_matrix <rofunc.utils.robolab.coord.transform.decompose_matrix>`
     - .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.decompose_matrix
          :summary:
   * - :py:obj:`compose_matrix <rofunc.utils.robolab.coord.transform.compose_matrix>`
     - .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.compose_matrix
          :summary:
   * - :py:obj:`orthogonalization_matrix <rofunc.utils.robolab.coord.transform.orthogonalization_matrix>`
     - .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.orthogonalization_matrix
          :summary:
   * - :py:obj:`superimposition_matrix <rofunc.utils.robolab.coord.transform.superimposition_matrix>`
     - .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.superimposition_matrix
          :summary:
   * - :py:obj:`homo_matrix_from_euler <rofunc.utils.robolab.coord.transform.homo_matrix_from_euler>`
     - .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.homo_matrix_from_euler
          :summary:
   * - :py:obj:`homo_matrix_from_rot_matrix <rofunc.utils.robolab.coord.transform.homo_matrix_from_rot_matrix>`
     - .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.homo_matrix_from_rot_matrix
          :summary:
   * - :py:obj:`homo_matrix_from_quaternion <rofunc.utils.robolab.coord.transform.homo_matrix_from_quaternion>`
     - .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.homo_matrix_from_quaternion
          :summary:
   * - :py:obj:`euler_from_homo_matrix <rofunc.utils.robolab.coord.transform.euler_from_homo_matrix>`
     - .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.euler_from_homo_matrix
          :summary:
   * - :py:obj:`euler_from_quaternion <rofunc.utils.robolab.coord.transform.euler_from_quaternion>`
     - .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.euler_from_quaternion
          :summary:
   * - :py:obj:`quaternion_from_euler <rofunc.utils.robolab.coord.transform.quaternion_from_euler>`
     - .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.quaternion_from_euler
          :summary:
   * - :py:obj:`quaternion_about_axis <rofunc.utils.robolab.coord.transform.quaternion_about_axis>`
     - .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.quaternion_about_axis
          :summary:
   * - :py:obj:`quaternion_from_rot_matrix <rofunc.utils.robolab.coord.transform.quaternion_from_rot_matrix>`
     - .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.quaternion_from_rot_matrix
          :summary:
   * - :py:obj:`quaternion_from_homo_matrix <rofunc.utils.robolab.coord.transform.quaternion_from_homo_matrix>`
     - .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.quaternion_from_homo_matrix
          :summary:
   * - :py:obj:`quaternion_multiply <rofunc.utils.robolab.coord.transform.quaternion_multiply>`
     - .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.quaternion_multiply
          :summary:
   * - :py:obj:`quaternion_multiply_tensor <rofunc.utils.robolab.coord.transform.quaternion_multiply_tensor>`
     - .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.quaternion_multiply_tensor
          :summary:
   * - :py:obj:`quaternion_multiply_tensor_multirow <rofunc.utils.robolab.coord.transform.quaternion_multiply_tensor_multirow>`
     - .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.quaternion_multiply_tensor_multirow
          :summary:
   * - :py:obj:`quaternion_multiply_tensor_multirow2 <rofunc.utils.robolab.coord.transform.quaternion_multiply_tensor_multirow2>`
     - .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.quaternion_multiply_tensor_multirow2
          :summary:
   * - :py:obj:`quaternion_conjugate <rofunc.utils.robolab.coord.transform.quaternion_conjugate>`
     - .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.quaternion_conjugate
          :summary:
   * - :py:obj:`quaternion_inverse <rofunc.utils.robolab.coord.transform.quaternion_inverse>`
     - .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.quaternion_inverse
          :summary:
   * - :py:obj:`quaternion_slerp <rofunc.utils.robolab.coord.transform.quaternion_slerp>`
     - .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.quaternion_slerp
          :summary:
   * - :py:obj:`rot_matrix_from_euler <rofunc.utils.robolab.coord.transform.rot_matrix_from_euler>`
     - .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.rot_matrix_from_euler
          :summary:
   * - :py:obj:`rot_matrix_from_quaternion <rofunc.utils.robolab.coord.transform.rot_matrix_from_quaternion>`
     - .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.rot_matrix_from_quaternion
          :summary:
   * - :py:obj:`concatenate_matrices <rofunc.utils.robolab.coord.transform.concatenate_matrices>`
     - .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.concatenate_matrices
          :summary:
   * - :py:obj:`is_same_transform <rofunc.utils.robolab.coord.transform.is_same_transform>`
     - .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.is_same_transform
          :summary:
   * - :py:obj:`check_rot_matrix <rofunc.utils.robolab.coord.transform.check_rot_matrix>`
     - .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.check_rot_matrix
          :summary:
   * - :py:obj:`arcball_map_to_sphere <rofunc.utils.robolab.coord.transform.arcball_map_to_sphere>`
     - .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.arcball_map_to_sphere
          :summary:
   * - :py:obj:`arcball_constrain_to_axis <rofunc.utils.robolab.coord.transform.arcball_constrain_to_axis>`
     - .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.arcball_constrain_to_axis
          :summary:
   * - :py:obj:`arcball_nearest_axis <rofunc.utils.robolab.coord.transform.arcball_nearest_axis>`
     - .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.arcball_nearest_axis
          :summary:

API
~~~

.. py:function:: identity_matrix()
   :canonical: rofunc.utils.robolab.coord.transform.identity_matrix

   .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.identity_matrix

.. py:function:: unit_vector(data, axis=None, out=None)
   :canonical: rofunc.utils.robolab.coord.transform.unit_vector

   .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.unit_vector

.. py:function:: random_vector(size)
   :canonical: rofunc.utils.robolab.coord.transform.random_vector

   .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.random_vector

.. py:function:: random_quaternion(rand=None)
   :canonical: rofunc.utils.robolab.coord.transform.random_quaternion

   .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.random_quaternion

.. py:function:: random_rot_matrix(rand=None)
   :canonical: rofunc.utils.robolab.coord.transform.random_rot_matrix

   .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.random_rot_matrix

.. py:function:: random_homo_matrix(rand=None)
   :canonical: rofunc.utils.robolab.coord.transform.random_homo_matrix

   .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.random_homo_matrix

.. py:function:: vector_norm(data, axis=None, out=None)
   :canonical: rofunc.utils.robolab.coord.transform.vector_norm

   .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.vector_norm

.. py:function:: inverse_matrix(matrix)
   :canonical: rofunc.utils.robolab.coord.transform.inverse_matrix

   .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.inverse_matrix

.. py:function:: translation_matrix(direction)
   :canonical: rofunc.utils.robolab.coord.transform.translation_matrix

   .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.translation_matrix

.. py:function:: translation_from_matrix(matrix)
   :canonical: rofunc.utils.robolab.coord.transform.translation_from_matrix

   .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.translation_from_matrix

.. py:function:: reflection_matrix(point, normal)
   :canonical: rofunc.utils.robolab.coord.transform.reflection_matrix

   .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.reflection_matrix

.. py:function:: reflection_from_matrix(matrix)
   :canonical: rofunc.utils.robolab.coord.transform.reflection_from_matrix

   .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.reflection_from_matrix

.. py:function:: rotation_matrix(angle, direction, point=None)
   :canonical: rofunc.utils.robolab.coord.transform.rotation_matrix

   .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.rotation_matrix

.. py:function:: rotation_from_matrix(matrix)
   :canonical: rofunc.utils.robolab.coord.transform.rotation_from_matrix

   .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.rotation_from_matrix

.. py:function:: scale_matrix(factor, origin=None, direction=None)
   :canonical: rofunc.utils.robolab.coord.transform.scale_matrix

   .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.scale_matrix

.. py:function:: scale_from_matrix(matrix)
   :canonical: rofunc.utils.robolab.coord.transform.scale_from_matrix

   .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.scale_from_matrix

.. py:function:: projection_matrix(point, normal, direction=None, perspective=None, pseudo=False)
   :canonical: rofunc.utils.robolab.coord.transform.projection_matrix

   .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.projection_matrix

.. py:function:: projection_from_matrix(matrix, pseudo=False)
   :canonical: rofunc.utils.robolab.coord.transform.projection_from_matrix

   .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.projection_from_matrix

.. py:function:: clip_matrix(left, right, bottom, top, near, far, perspective=False)
   :canonical: rofunc.utils.robolab.coord.transform.clip_matrix

   .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.clip_matrix

.. py:function:: shear_matrix(angle, direction, point, normal)
   :canonical: rofunc.utils.robolab.coord.transform.shear_matrix

   .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.shear_matrix

.. py:function:: shear_from_matrix(matrix)
   :canonical: rofunc.utils.robolab.coord.transform.shear_from_matrix

   .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.shear_from_matrix

.. py:function:: decompose_matrix(matrix)
   :canonical: rofunc.utils.robolab.coord.transform.decompose_matrix

   .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.decompose_matrix

.. py:function:: compose_matrix(scale=None, shear=None, angles=None, translate=None, perspective=None)
   :canonical: rofunc.utils.robolab.coord.transform.compose_matrix

   .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.compose_matrix

.. py:function:: orthogonalization_matrix(lengths, angles)
   :canonical: rofunc.utils.robolab.coord.transform.orthogonalization_matrix

   .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.orthogonalization_matrix

.. py:function:: superimposition_matrix(v0, v1, scaling=False, usesvd=True)
   :canonical: rofunc.utils.robolab.coord.transform.superimposition_matrix

   .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.superimposition_matrix

.. py:function:: homo_matrix_from_euler(ai, aj, ak, axes='sxyz', translation=None)
   :canonical: rofunc.utils.robolab.coord.transform.homo_matrix_from_euler

   .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.homo_matrix_from_euler

.. py:function:: homo_matrix_from_rot_matrix(rot_matrix, translation=None)
   :canonical: rofunc.utils.robolab.coord.transform.homo_matrix_from_rot_matrix

   .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.homo_matrix_from_rot_matrix

.. py:function:: homo_matrix_from_quaternion(quaternion, translation=None)
   :canonical: rofunc.utils.robolab.coord.transform.homo_matrix_from_quaternion

   .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.homo_matrix_from_quaternion

.. py:function:: euler_from_homo_matrix(homo_matrix, axes='sxyz')
   :canonical: rofunc.utils.robolab.coord.transform.euler_from_homo_matrix

   .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.euler_from_homo_matrix

.. py:function:: euler_from_quaternion(quaternion, axes='sxyz')
   :canonical: rofunc.utils.robolab.coord.transform.euler_from_quaternion

   .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.euler_from_quaternion

.. py:function:: quaternion_from_euler(ai, aj, ak, axes='sxyz')
   :canonical: rofunc.utils.robolab.coord.transform.quaternion_from_euler

   .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.quaternion_from_euler

.. py:function:: quaternion_about_axis(angle, axis)
   :canonical: rofunc.utils.robolab.coord.transform.quaternion_about_axis

   .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.quaternion_about_axis

.. py:function:: quaternion_from_rot_matrix(rot_matrix)
   :canonical: rofunc.utils.robolab.coord.transform.quaternion_from_rot_matrix

   .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.quaternion_from_rot_matrix

.. py:function:: quaternion_from_homo_matrix(homo_matrix)
   :canonical: rofunc.utils.robolab.coord.transform.quaternion_from_homo_matrix

   .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.quaternion_from_homo_matrix

.. py:function:: quaternion_multiply(quaternion1, quaternion0)
   :canonical: rofunc.utils.robolab.coord.transform.quaternion_multiply

   .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.quaternion_multiply

.. py:function:: quaternion_multiply_tensor(quaternion1, quaternion0)
   :canonical: rofunc.utils.robolab.coord.transform.quaternion_multiply_tensor

   .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.quaternion_multiply_tensor

.. py:function:: quaternion_multiply_tensor_multirow(quaternion1, quaternion0)
   :canonical: rofunc.utils.robolab.coord.transform.quaternion_multiply_tensor_multirow

   .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.quaternion_multiply_tensor_multirow

.. py:function:: quaternion_multiply_tensor_multirow2(quaternion1, quaternion0)
   :canonical: rofunc.utils.robolab.coord.transform.quaternion_multiply_tensor_multirow2

   .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.quaternion_multiply_tensor_multirow2

.. py:function:: quaternion_conjugate(quaternion)
   :canonical: rofunc.utils.robolab.coord.transform.quaternion_conjugate

   .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.quaternion_conjugate

.. py:function:: quaternion_inverse(quaternion)
   :canonical: rofunc.utils.robolab.coord.transform.quaternion_inverse

   .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.quaternion_inverse

.. py:function:: quaternion_slerp(quat0, quat1, fraction, spin=0, shortestpath=True)
   :canonical: rofunc.utils.robolab.coord.transform.quaternion_slerp

   .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.quaternion_slerp

.. py:function:: rot_matrix_from_euler(ai, aj, ak, axes='sxyz')
   :canonical: rofunc.utils.robolab.coord.transform.rot_matrix_from_euler

   .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.rot_matrix_from_euler

.. py:function:: rot_matrix_from_quaternion(quaternion)
   :canonical: rofunc.utils.robolab.coord.transform.rot_matrix_from_quaternion

   .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.rot_matrix_from_quaternion

.. py:function:: concatenate_matrices(*matrices)
   :canonical: rofunc.utils.robolab.coord.transform.concatenate_matrices

   .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.concatenate_matrices

.. py:function:: is_same_transform(matrix0, matrix1)
   :canonical: rofunc.utils.robolab.coord.transform.is_same_transform

   .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.is_same_transform

.. py:function:: check_rot_matrix(R, tolerance=1e-06, strict_check=True)
   :canonical: rofunc.utils.robolab.coord.transform.check_rot_matrix

   .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.check_rot_matrix

.. py:class:: Arcball(initial=None)
   :canonical: rofunc.utils.robolab.coord.transform.Arcball

   Bases: :py:obj:`object`

   .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.Arcball

   .. rubric:: Initialization

   .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.Arcball.__init__

   .. py:method:: place(center, radius)
      :canonical: rofunc.utils.robolab.coord.transform.Arcball.place

      .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.Arcball.place

   .. py:method:: setaxes(*axes)
      :canonical: rofunc.utils.robolab.coord.transform.Arcball.setaxes

      .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.Arcball.setaxes

   .. py:method:: setconstrain(constrain)
      :canonical: rofunc.utils.robolab.coord.transform.Arcball.setconstrain

      .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.Arcball.setconstrain

   .. py:method:: getconstrain()
      :canonical: rofunc.utils.robolab.coord.transform.Arcball.getconstrain

      .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.Arcball.getconstrain

   .. py:method:: down(point)
      :canonical: rofunc.utils.robolab.coord.transform.Arcball.down

      .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.Arcball.down

   .. py:method:: drag(point)
      :canonical: rofunc.utils.robolab.coord.transform.Arcball.drag

      .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.Arcball.drag

   .. py:method:: next(acceleration=0.0)
      :canonical: rofunc.utils.robolab.coord.transform.Arcball.next

      .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.Arcball.next

   .. py:method:: matrix()
      :canonical: rofunc.utils.robolab.coord.transform.Arcball.matrix

      .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.Arcball.matrix

.. py:function:: arcball_map_to_sphere(point, center, radius)
   :canonical: rofunc.utils.robolab.coord.transform.arcball_map_to_sphere

   .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.arcball_map_to_sphere

.. py:function:: arcball_constrain_to_axis(point, axis)
   :canonical: rofunc.utils.robolab.coord.transform.arcball_constrain_to_axis

   .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.arcball_constrain_to_axis

.. py:function:: arcball_nearest_axis(point, axes)
   :canonical: rofunc.utils.robolab.coord.transform.arcball_nearest_axis

   .. autodoc2-docstring:: rofunc.utils.robolab.coord.transform.arcball_nearest_axis
