def Eul(cls, angles, *, unit='rad'): r""" Create an SE(3) pure rotation from Euler angles :param 𝚪: Euler angles :type 𝚪: array_like or numpy.ndarray with shape=(N,3) :param unit: angular units: 'rad' [default], or 'deg' :type unit: str :return: SE(3) matrix :rtype: SE3 instance ``SE3.Eul(𝚪)`` is an SE(3) rotation defined by a 3-vector of Euler angles :math:`\Gamma=(\phi, \theta, \psi)` which correspond to consecutive rotations about the Z, Y, Z axes respectively. If ``𝚪`` is an Nx3 matrix then the result is a sequence of rotations each defined by Euler angles corresponding to the rows of ``𝚪``. :seealso: :func:`~spatialmath.pose3d.SE3.eul`, :func:`~spatialmath.base.transforms3d.eul2r` :SymPy: supported """ if base.isvector(angles, 3): return cls(base.eul2tr(angles, unit=unit), check=False) else: return cls([base.eul2tr(a, unit=unit) for a in angles], check=False)
def Eul(cls, angles, *, unit='rad'): r""" Create an SE(3) pure rotation from Euler angles :param angles: 3-vector of Euler angles :type angles: array_like or numpy.ndarray with shape=(N,3) :param unit: angular units: 'rad' [default], or 'deg' :type unit: str :return: 4x4 homogeneous transformation matrix :rtype: SE3 instance ``SE3.Eul(ANGLES)`` is an SO(3) rotation defined by a 3-vector of Euler angles :math:`(\phi, \theta, \psi)` which correspond to consecutive rotations about the Z, Y, Z axes respectively. If ``angles`` is an Nx3 matrix then the result is a sequence of rotations each defined by Euler angles corresponding to the rows of angles. :seealso: :func:`~spatialmath.pose3d.SE3.eul`, :func:`~spatialmath.pose3d.SE3.Eul`, :func:`spatialmath.base.transforms3d.eul2r` """ if argcheck.isvector(angles, 3): return cls(tr.eul2tr(angles, unit=unit), check=False) else: return cls([tr.eul2tr(a, unit=unit) for a in angles], check=False)
def Eul(cls, *angles, unit='rad'): r""" Create an SE(3) pure rotation from Euler angles :param 𝚪: Euler angles :type 𝚪: array_like or numpy.ndarray with shape=(N,3) :param unit: angular units: 'rad' [default], or 'deg' :type unit: str :return: SE(3) matrix :rtype: SE3 instance - ``SE3.Eul(𝚪)`` is an SE(3) rotation defined by a 3-vector of Euler angles :math:`\Gamma=(\phi, \theta, \psi)` which correspond to consecutive rotations about the Z, Y, Z axes respectively. If ``𝚪`` is an Nx3 matrix then the result is a sequence of rotations each defined by Euler angles corresponding to the rows of ``𝚪``. - ``SE3.Eul(φ, θ, ψ)`` as above but the angles are provided as three scalars. Example: .. runblock:: pycon >>> from spatialmath import SE3 >>> SE3.Eul(0.1, 0.2, 0.3) >>> SE3.Eul([0.1, 0.2, 0.3]) >>> SE3.Eul(10, 20, 30, unit='deg') :seealso: :func:`~spatialmath.pose3d.SE3.eul`, :func:`~spatialmath.base.transforms3d.eul2r` :SymPy: supported """ if len(angles) == 1: angles = angles[0] if base.isvector(angles, 3): return cls(base.eul2tr(angles, unit=unit), check=False) else: return cls([base.eul2tr(a, unit=unit) for a in angles], check=False)
def Eul(cls, angles, unit='rad'): """ Create an SE(3) pure rotation from Euler angles :param angles: 3-vector of Euler angles :type angles: array_like :param unit: angular units: 'rad' [default], or 'deg' :type unit: str :return: 4x4 homogeneous transformation matrix :rtype: SE3 instance ``SE3.Eul(ANGLES)`` is an SO(3) rotation defined by a 3-vector of Euler angles :math:`(\phi, \theta, \psi)` which correspond to consecutive rotations about the Z, Y, Z axes respectively. :seealso: :func:`~spatialmath.pose3d.SE3.eul`, :func:`~spatialmath.pose3d.SE3.Eul`, :func:`spatialmath.base.transforms3d.eul2r` """ return cls(tr.eul2tr(angles, unit=unit))