@staticmethod
def interpolate(dq0, dq1, t):
    """Return the interpolation of two DualQuaternions.

        This uses the Dual Quaternion Linear Blending Method as described by Matthew Smith's
        'Applications of Dual Quaternions in Three Dimensional Transformation and Interpolation'
        https://www.cosc.canterbury.ac.nz/research/reports/HonsReps/2013/hons_1305.pdf

        Parameters
        ----------
        dq0 : :obj:`DualQuaternion`
            The first DualQuaternion.

        dq1 : :obj:`DualQuaternion`
            The second DualQuaternion.

        t : float
            The interpolation step in [0,1]. When t=0, this returns dq0, and
            when t=1, this returns dq1.

        Returns
        -------
        :obj:`DualQuaternion`
            The interpolated DualQuaternion.

        Raises
        ------
        ValueError
            If t isn't in [0,1].
        """
    if not 0 <= t <= 1:
        raise ValueError('Interpolation step must be between 0 and 1! Got {0}'
            .format(t))
    dqt = dq0 * (1 - t) + dq1 * t
    return dqt.normalized
