#
# Operations with 3 by 4 matrices where first 3 columns are a rotation and the
# 4th column is a translation.  Rotation is applied and then translation.
#
# The 3 by 4 matrices are called "transforms" and are represented with tuples,
# or lists, or numpy arrays.  Another representation is the Chimera Xform
# class implemented in C++.
#
# Vectors and points are represented as tuples, lists, numpy arrays, or
# Chimera C++ objects Point and Vector.
#

# Operations on vectors
from matrix import apply_matrix
from matrix import apply_matrix_without_translation
from matrix import apply_inverse_matrix
from matrix import transform_points
from matrix import transform_vectors
from matrix import xform_xyz
from matrix import xform_points
from matrix import xform_vectors
from matrix import cross_product
from matrix import cross_products
from matrix import normalize_vector
from matrix import normalize_vectors
from matrix import norm
from matrix import maximum_norm
from matrix import inner_product
from matrix import vector_angle
from matrix import length
from matrix import distance
from matrix import linear_combination
from matrix import linear_combination_3
from matrix import vector_sum
from matrix import point_bounds
from _volume import inner_product_64
from matrix import project_to_axis

# Operations on transform and xform matrices.
from matrix import invert_matrix
from matrix import multiply_matrices
from matrix import matrix_products
from matrix import transpose            # For square matrices
from matrix import transpose_matrix     # Rotation part only, 3x4 -> 3x4.
from matrix import zero_translation
from matrix import coordinate_transform
from matrix import coordinate_transform_list
from matrix import coordinate_transform_xforms
from matrix import orthogonalize
from matrix import interpolate_xforms
from matrix import fractional_xform

# Comparing and converting transforms.
from matrix import xforms_differ
from matrix import same_xform
from matrix import xform_matrix
from matrix import chimera_xform

# Creating transform matrices
from matrix import identity_matrix
from matrix import translation_matrix
from matrix import scale_matrix
from matrix import rotation_transform
from matrix import rotation_from_axis_angle
from matrix import vector_rotation_transform
from matrix import cross_product_transform
from matrix import orthonormal_frame
from matrix import skew_axes
from matrix import euler_xform
from matrix import euler_rotation

# Transform properties
from matrix import is_identity_matrix
from matrix import rotation_axis_angle
from matrix import axis_center_angle_shift
from matrix import axis_point_adjust
from matrix import shift_and_angle
from matrix import determinant
from matrix import cell_angles_and_rotation
from matrix import cell_angles
from matrix import euler_angles
from matrix import transformation_description

# Miscellaneous
from matrix import sign