Main Page | Modules | Class List | File List | Class Members | File Members

3x4matrix.c File Reference

#include <math.h>
#include <gandalf/linalg/3x4matrix.h>
#include <gandalf/common/misc_error.h>
#include <gandalf/common/endian_io.h>

Defines

#define GAN_MATTYPE   Gan_Matrix34
#define GAN_MATRIX_TYPE   Gan_Matrix
#define GAN_SQUMATRIX_TYPE   Gan_SquMatrix
#define GAN_VECTOR_TYPE   Gan_Vector
#define GAN_MAT_ELEMENT_TYPE   GAN_DOUBLE
#define GAN_REALTYPE   double
#define GAN_FWRITE_LENDIAN   gan_fwrite_lendian_f64
#define GAN_FREAD_LENDIAN   gan_fread_lendian_f64
#define GAN_VECTYPE1   Gan_Vector3
#define GAN_VECTYPE2   Gan_Vector4
#define GAN_MATTYPEL   Gan_Matrix33
#define GAN_MATTYPER   Gan_Matrix44
#define GAN_SQUMATTYPEL   Gan_SquMatrix33
#define GAN_SQUMATTYPER   Gan_SquMatrix44
#define GAN_MAT_FPRINT   gan_mat34_fprint
#define GAN_MAT_PRINT   gan_mat34_print
#define GAN_MAT_FSCANF   gan_mat34_fscanf
#define GAN_MAT_FWRITE   gan_mat34_fwrite
#define GAN_MAT_FREAD   gan_mat34_fread
#define GAN_MAT_ZERO_Q   gan_mat34_zero_q
#define GAN_MAT_ZERO_S   gan_mat34_zero_s
#define GAN_MAT_COPY_Q   gan_mat34_copy_q
#define GAN_MAT_COPY_S   gan_mat34_copy_s
#define GAN_MAT_SCALE_Q   gan_mat34_scale_q
#define GAN_MAT_SCALE_I   gan_mat34_scale_i
#define GAN_MAT_SCALE_S   gan_mat34_scale_s
#define GAN_MAT_DIVIDE_Q   gan_mat34_divide_q
#define GAN_MAT_DIVIDE_I   gan_mat34_divide_i
#define GAN_MAT_DIVIDE_S   gan_mat34_divide_s
#define GAN_MAT_NEGATE_Q   gan_mat34_negate_q
#define GAN_MAT_NEGATE_I   gan_mat34_negate_i
#define GAN_MAT_NEGATE_S   gan_mat34_negate_s
#define GAN_MAT_UNIT_Q   gan_mat34_unit_q
#define GAN_MAT_UNIT_I   gan_mat34_unit_i
#define GAN_MAT_UNIT_S   gan_mat34_unit_s
#define GAN_MAT_ADD_Q   gan_mat34_add_q
#define GAN_MAT_ADD_I1   gan_mat34_add_i1
#define GAN_MAT_ADD_I2   gan_mat34_add_i2
#define GAN_MAT_INCREMENT   gan_mat34_increment
#define GAN_MAT_ADD_S   gan_mat34_add_s
#define GAN_MAT_SUB_Q   gan_mat34_sub_q
#define GAN_MAT_SUB_I1   gan_mat34_sub_i1
#define GAN_MAT_SUB_I2   gan_mat34_sub_i2
#define GAN_MAT_DECREMENT   gan_mat34_decrement
#define GAN_MAT_SUB_S   gan_mat34_sub_s
#define GAN_VEC_OUTER_Q   gan_vec34_outer_q
#define GAN_VEC_OUTER_S   gan_vec34_outer_s
#define GAN_MAT_MULTV_Q   gan_mat34_multv4_q
#define GAN_MAT_MULTV_S   gan_mat34_multv4_s
#define GAN_MATT_MULTV_Q   gan_mat34T_multv3_q
#define GAN_MATT_MULTV_S   gan_mat34T_multv3_s
#define GAN_MAT_LMULTM_Q   gan_mat34_lmultm33_q
#define GAN_MAT_LMULTM_S   gan_mat34_lmultm33_s
#define GAN_MAT_LMULTMT_Q   gan_mat34_lmultm33T_q
#define GAN_MAT_LMULTMT_S   gan_mat34_lmultm33T_s
#define GAN_MAT_RMULTM_Q   gan_mat34_rmultm44_q
#define GAN_MAT_RMULTM_S   gan_mat34_rmultm44_s
#define GAN_MAT_RMULTMT_Q   gan_mat34_rmultm44T_q
#define GAN_MAT_RMULTMT_S   gan_mat34_rmultm44T_s
#define GAN_MAT_LMULTMT_SYM_Q   gan_mat34_lmultm34T_sym_q
#define GAN_MAT_LMULTMT_SYM_S   gan_mat34_lmultm34T_sym_s
#define GAN_MAT_RMULTMT_SYM_Q   gan_mat34_rmultm34T_sym_q
#define GAN_MAT_RMULTMT_SYM_S   gan_mat34_rmultm34T_sym_s
#define GAN_MAT_SLMULTT_Q   gan_mat34_slmultT_q
#define GAN_MAT_SLMULTT_S   gan_mat34_slmultT_s
#define GAN_MAT_SRMULTT_Q   gan_mat34_srmultT_q
#define GAN_MAT_SRMULTT_S   gan_mat34_srmultT_s
#define GAN_MAT_LMULTS_Q   gan_mat34_lmults33_q
#define GAN_MAT_LMULTS_S   gan_mat34_lmults33_s
#define GAN_MAT_RMULTS_Q   gan_mat34_rmults44_q
#define GAN_MAT_RMULTS_S   gan_mat34_rmults44_s
#define GAN_SYMMATL_LRMULT_Q   gan_symmat33_lrmultm34T_q
#define GAN_SYMMATL_LRMULT_S   gan_symmat33_lrmultm34T_s
#define GAN_SYMMATR_LRMULT_Q   gan_symmat44_lrmultm34_q
#define GAN_SYMMATR_LRMULT_S   gan_symmat44_lrmultm34_s
#define GAN_MAT_LMULTL_Q   gan_mat34_lmultl33_q
#define GAN_MAT_LMULTL_S   gan_mat34_lmultl33_s
#define GAN_MAT_LMULTL_I   gan_mat34_lmultl33_i
#define GAN_MAT_LMULTLI_Q   gan_mat34_lmultl33I_q
#define GAN_MAT_LMULTLI_S   gan_mat34_lmultl33I_s
#define GAN_MAT_LMULTLI_I   gan_mat34_lmultl33I_i
#define GAN_MAT_LMULTLT_Q   gan_mat34_lmultl33T_q
#define GAN_MAT_LMULTLT_S   gan_mat34_lmultl33T_s
#define GAN_MAT_LMULTLT_I   gan_mat34_lmultl33T_i
#define GAN_MAT_LMULTLIT_Q   gan_mat34_lmultl33IT_q
#define GAN_MAT_LMULTLIT_S   gan_mat34_lmultl33IT_s
#define GAN_MAT_LMULTLIT_I   gan_mat34_lmultl33IT_i
#define GAN_MAT_RMULTL_Q   gan_mat34_rmultl44_q
#define GAN_MAT_RMULTL_S   gan_mat34_rmultl44_s
#define GAN_MAT_RMULTL_I   gan_mat34_rmultl44_i
#define GAN_MAT_RMULTLI_Q   gan_mat34_rmultl44I_q
#define GAN_MAT_RMULTLI_S   gan_mat34_rmultl44I_s
#define GAN_MAT_RMULTLI_I   gan_mat34_rmultl44I_i
#define GAN_MAT_RMULTLT_Q   gan_mat34_rmultl44T_q
#define GAN_MAT_RMULTLT_S   gan_mat34_rmultl44T_s
#define GAN_MAT_RMULTLT_I   gan_mat34_rmultl44T_i
#define GAN_MAT_RMULTLIT_Q   gan_mat34_rmultl44IT_q
#define GAN_MAT_RMULTLIT_S   gan_mat34_rmultl44IT_s
#define GAN_MAT_RMULTLIT_I   gan_mat34_rmultl44IT_i
#define GAN_MAT_SUMSQR_Q   gan_mat34_sumsqr_q
#define GAN_MAT_SUMSQR_S   gan_mat34_sumsqr_s
#define GAN_MAT_FNORM_Q   gan_mat34_Fnorm_q
#define GAN_MAT_FNORM_S   gan_mat34_Fnorm_s
#define GAN_MAT_FROM_MAT_Q   gan_mat34_from_mat_q
#define GAN_MAT_FROM_MAT_S   gan_mat34_from_mat_s

Functions

Gan_Bool gan_mat34_fprint (FILE *fp, const Gan_Matrix34 *A, const char *prefix, int indent, const char *fmt)
 Print 3x4 matrix to file.
Gan_Bool gan_mat34_fscanf (FILE *fp, Gan_Matrix34 *A, char *prefix, int prefix_len)
 Read 3x4 matrix from file.
Gan_Matrix34 gan_mat34_fill_s (double XX, double XY, double XZ, double XW, double YX, double YY, double YZ, double YW, double ZX, double ZY, double ZZ, double ZW)
 Fill 3x4 matrix with values.
Gan_Vector3 gan_mat34_multv3h_s (const Gan_Matrix34 *A, const Gan_Vector3 *p, double h)
 Multiply 3x4 matrix by homogeneous 3-vector.
Gan_Bool gan_mat34h_invert_q (const Gan_Matrix34 *A, double a, Gan_Matrix34 *B, double *b)
 Compute inverse of completed 4x4 matrix.
Gan_Matrix34 gan_mat34h_invert_s (const Gan_Matrix34 *A, double a, double *b)
 Compute inverse of completed 4x4 matrix.
void gan_mat34_get_rows_s (const Gan_Matrix34 *A, Gan_Vector4 *p, Gan_Vector4 *q, Gan_Vector4 *r)
 Extract rows of 3x4 matrix.
void gan_mat34_get_cols_s (const Gan_Matrix34 *A, Gan_Vector3 *p, Gan_Vector3 *q, Gan_Vector3 *r, Gan_Vector3 *s)
 Extract columns of 3x4 matrix.
Gan_Matrix33 gan_mat34_get_m33l_s (const Gan_Matrix34 *A)
 Extract left-hand 3x3 part of 3x4 matrix.
Gan_Vector3 gan_mat34_get_v3r_s (const Gan_Matrix34 *A)
 Extract right-hand column of 3x4 matrix.
Gan_Matrix34 gan_mat34_set_parts_s (const Gan_Matrix33 *B, const Gan_Vector3 *p)
 Build 3x4 matrix from 3x3 matrix and column 3-vector.
Gan_Matrix34 gan_mat34_set_cols_s (const Gan_Vector3 *p, const Gan_Vector3 *q, const Gan_Vector3 *r, const Gan_Vector3 *s)
 Build 3x4 matrix from 3-vector columns.
Gan_Matrix34 gan_mat34_set_rows_s (const Gan_Vector4 *p, const Gan_Vector4 *q, const Gan_Vector4 *r)
 Build 3x4 matrix from 4-vector rows.
Gan_Matrix34gan_mat34_from_mat_q (const Gan_Matrix *A, Gan_Matrix34 *B)
 Convert generic rectangular matrix to 3x4 matrix structure.
Gan_Bool gan_mat34_print (const Gan_Matrix34 *A, const char *prefix, int indent, const char *fmt)
 Print fixed size matrix to standard output.
Gan_Bool gan_mat34_fwrite (FILE *fp, const Gan_Matrix34 *A, gan_uint32 magic_number)
 Write fixed size matrix to file stream.
Gan_Bool gan_mat34_fread (FILE *fp, Gan_Matrix34 *A, gan_uint32 *magic_number)
 Read fixed size matrix from file stream.
Gan_Matrix34 gan_mat34_zero_s (void)
 Set fixed size matrix to zero.
Gan_Matrix34 gan_mat34_copy_s (const Gan_Matrix34 *A)
 Copy fixed size matrix.
Gan_Matrix34 gan_mat34_scale_s (const Gan_Matrix34 *A, double a)
 Scale fixed size matrix.
Gan_Matrix34 gan_mat34_divide_s (const Gan_Matrix34 *A, double a)
 Divide fixed size matrix by scalar.
Gan_Matrix34 gan_mat34_negate_s (const Gan_Matrix34 *A)
 Negate fixed size matrix.
Gan_Matrix34gan_mat34_unit_q (Gan_Matrix34 *A, Gan_Matrix34 *B)
 Scale matrix to unit norm.
Gan_Matrix34 gan_mat34_unit_s (const Gan_Matrix34 *A)
 Scale matrix to unit norm.
Gan_Matrix34 gan_mat34_add_s (const Gan_Matrix34 *A, const Gan_Matrix34 *B)
 Add two fixed size matrices.
Gan_Matrix34 gan_mat34_sub_s (const Gan_Matrix34 *A, const Gan_Matrix34 *B)
 Subtract two fixed size matrices.
Gan_Matrix34 gan_vec34_outer_s (const Gan_Vector3 *p, const Gan_Vector4 *q)
 Compute the outer product of two fixed size vectors.
Gan_Vector3 gan_mat34_multv4_s (const Gan_Matrix34 *A, const Gan_Vector4 *p)
 Matrix/vector product.
Gan_Vector4 gan_mat34T_multv3_s (const Gan_Matrix34 *A, const Gan_Vector3 *p)
 Matrix/vector product with the matrix transposed.
Gan_Matrix34 gan_mat34_lmultm33_s (const Gan_Matrix34 *A, const Gan_Matrix33 *B)
 Left-multiply a matrix by another matrix.
Gan_Matrix34 gan_mat34_lmultm33T_s (const Gan_Matrix34 *A, const Gan_Matrix33 *B)
 Left-multiply a matrix by the transpose of another matrix.
Gan_Matrix34 gan_mat34_rmultm44_s (const Gan_Matrix34 *A, const Gan_Matrix44 *B)
 Right-multiply a matrix by another matrix.
Gan_Matrix34 gan_mat34_rmultm44T_s (const Gan_Matrix34 *A, const Gan_Matrix44 *B)
 Right-multiply a matrix by the transpose of another matrix.
Gan_SquMatrix44 gan_mat34_lmultm34T_sym_s (const Gan_Matrix34 *A, const Gan_Matrix34 *B)
 Matrix product producing a symmetric matrix.
Gan_SquMatrix33 gan_mat34_rmultm34T_sym_s (const Gan_Matrix34 *A, const Gan_Matrix34 *B)
 Matrix product producing a symmetric matrix.
Gan_SquMatrix44 gan_mat34_slmultT_s (const Gan_Matrix34 *A)
 Left-multiply a matrix by its own transpose, producing a symmetric matrix.
Gan_SquMatrix33 gan_mat34_srmultT_s (const Gan_Matrix34 *A)
 Right-multiply a matrix by its own transpose, producing a symmetric matrix.
Gan_Matrix34 gan_mat34_lmults33_s (const Gan_Matrix34 *A, const Gan_SquMatrix33 *B)
 Left-multiply a matrix by a symmetric matrix.
Gan_Matrix34 gan_mat34_rmults44_s (const Gan_Matrix34 *A, const Gan_SquMatrix44 *B)
 Right-multiply a matrix by a symmetric matrix.
Gan_SquMatrix44 gan_symmat33_lrmultm34T_s (const Gan_SquMatrix33 *A, const Gan_Matrix34 *B, Gan_Matrix34 *C)
 Matrix triple product involving symmetric matrices.
Gan_SquMatrix33 gan_symmat44_lrmultm34_s (const Gan_SquMatrix44 *A, const Gan_Matrix34 *B, Gan_Matrix34 *C)
 Matrix triple product involving symmetric matrices.
Gan_Matrix34 gan_mat34_lmultl33_s (const Gan_Matrix34 *A, const Gan_SquMatrix33 *B)
 Left-multiply a matrix by a lower-triangular matrix.
Gan_Matrix34 gan_mat34_lmultl33I_s (const Gan_Matrix34 *A, const Gan_SquMatrix33 *B)
 Left-multiply a matrix by the inverse of a lower-triangular matrix.
Gan_Matrix34 gan_mat34_lmultl33T_s (const Gan_Matrix34 *A, const Gan_SquMatrix33 *B)
 Left-multiply a matrix by the transpose of a lower-triangular matrix.
Gan_Matrix34 gan_mat34_lmultl33IT_s (const Gan_Matrix34 *A, const Gan_SquMatrix33 *B)
 Left-multiply a matrix by the inverse transpose of a lower-triangular matrix.
Gan_Matrix34 gan_mat34_rmultl44_s (const Gan_Matrix34 *A, const Gan_SquMatrix44 *B)
 Right-multiply a matrix by a lower-triangular matrix.
Gan_Matrix34 gan_mat34_rmultl44I_s (const Gan_Matrix34 *A, const Gan_SquMatrix44 *B)
 Right-multiply a matrix by the inverse of a lower-triangular matrix.
Gan_Matrix34 gan_mat34_rmultl44T_s (const Gan_Matrix34 *A, const Gan_SquMatrix44 *B)
 Right-multiply a matrix by the transpose of a lower-triangular matrix.
Gan_Matrix34 gan_mat34_rmultl44IT_s (const Gan_Matrix34 *A, const Gan_SquMatrix44 *B)
 Right-multiply a matrix by the inverse transpose of a lower-triangular matrix.
double gan_mat34_sumsqr_s (const Gan_Matrix34 *A)
 Returns sum of squares of matrix elements.
double gan_mat34_Fnorm_s (const Gan_Matrix34 *A)
 Frobenius norm of matrix.
Gan_Matrix34 gan_mat34_from_mat_s (const Gan_Matrix *A)
 Convert generic rectangular matrix to fixed size matrix structure.

Detailed Description

Module: 3x4 matrices (double precision)

Part of: Gandalf Library

Version:
1.16
Date:
2004/03/18 18:26:20
Author:
pm
Copyright: (c) 2000 Imagineer Software Limited
Generated on Fri Mar 17 12:44:49 2006 by  doxygen 1.3.9.1