(q)
return result
Enforce quaternion continuity across the time dimension by selecting
    the representation (q or -q) with minimal distance (or, equivalently, maximal dot product)
    between two consecutive frames.

    Expects a tensor of shape (L, J, 4), where L is the sequence length and J is the number of joints.
    Returns a tensor of the same shape.
Enforce quaternion continuity across the time dimension by selecting
    the representation (q or -q) with minimal distance (or, equivalently, maximal dot product)
    between two consecutive frames.
Enforce quaternion continuity across the time dimension by selecting the representation ( q or - q ) with minimal distance ( or equivalently maximal dot product ) between two consecutive frames .
def qfix(q):
    """
    Enforce quaternion continuity across the time dimension by selecting
    the representation (q or -q) with minimal distance (or, equivalently, maximal dot product)
    between two consecutive frames.

    Expects a tensor of shape (L, J, 4), where L is the sequence length and J is the number of joints.
    Returns a tensor of the same shape.
    """
    assert len(q.shape) == 3
    assert q.shape[-1] == 4

    result = q.copy()
    dot_products = np.sum(q[1:] * q[:-1], axis=2)
    mask = dot_products < 0
    mask = (np.cumsum(mask, axis=0) % 2).astype(bool)
    result[1:][mask] *= -1
    return result
def qfix ( q ) : assert len ( q . shape ) == 3 assert q . shape [ - 1 ] == 4 result = q . copy ( ) dot_products = np . sum ( q [ 1 : ] * q [ : - 1 ] , axis = 2 ) mask = dot_products < 0 mask = ( np . cumsum ( mask , axis = 0 ) % 2 ) . astype ( bool ) result [ 1 : ] [ mask ] *= - 1 return result