コード例 #1
0
def norm_quat(q, tolerance=0.00001):
    r"""
    Return a copy of the normalised quaternion (adjust length to 1 if deviation larger than given tolerance).

    Args:
       :tolerance(float): Maximum deviation of length before rescaling (default ``0.00001``)
    """
    # Adjust length
    l = linalg.length(q)
    if abs(l - 1.) > tolerance:
        q_norm = q_norm/linalg.length(q_norm)
    else:
        q_norm = q.copy()
    return q_norm
コード例 #2
0
ファイル: rotation.py プロジェクト: zbsun/condor
def norm_quat(q, tolerance=0.00001):
    r"""
    Return a copy of the normalised quaternion (adjust length to 1 if deviation larger than given tolerance).

    Args:
       :tolerance(float): Maximum deviation of length before rescaling (default ``0.00001``)
    """
    # Adjust length
    l = linalg.length(q)
    if abs(l - 1.) > tolerance:
        q_norm = q_norm / linalg.length(q_norm)
    else:
        q_norm = q.copy()
    return q_norm
コード例 #3
0
def q_from_p(p, wavelength):
    r"""
    Return scattering vector from pixel position vector and photon wavelength.

    Args:
      :p (array): Pixel position vector :math:`\vec{p}=(p_x,p_y,p_z)` with respect to the interaction point in unit meter

      :wavelength (float): Photon wavelength in unit meter
    """
    p0 = p / linalg.length(p)
    R_Ewald = 2*numpy.pi / wavelength
    k0 = R_Ewald * numpy.array([0.,0.,1.])
    k1 = R_Ewald * p0
    q = k0 - k1
    return q
コード例 #4
0
ファイル: scattering_vector.py プロジェクト: zbsun/condor
def q_from_p(p, wavelength):
    r"""
    Return scattering vector from pixel position vector and photon wavelength.

    Args:
      :p (array): Pixel position vector :math:`\vec{p}=(p_x,p_y,p_z)` with respect to the interaction point in unit meter

      :wavelength (float): Photon wavelength in unit meter
    """
    p0 = p / linalg.length(p)
    R_Ewald = 2 * numpy.pi / wavelength
    k0 = R_Ewald * numpy.array([0., 0., 1.])
    k1 = R_Ewald * p0
    q = k0 - k1
    return q