#include "common.h"
#include <math.h>
#include <string.h>
#include "bio.h"
#include "bu/debug.h"
#include "bu/log.h"
#include "bu/malloc.h"
#include "bu/str.h"
#include "vmath.h"
#include "bn/mat.h"
#include "bn/plane_calc.h"
Include dependency graph for mat.c:

Go to the source code of this file.


void bn_mat_print_guts (const char *title, const mat_t m, char *buf, int buflen)
void bn_mat_print (const char *title, const mat_t m)
void bn_mat_print_vls (const char *title, const mat_t m, struct bu_vls *vls)
double bn_atan2 (double x, double y)
void bn_mat_mul (register mat_t o, register const mat_t a, register const mat_t b)
void bn_mat_mul2 (register const mat_t i, register mat_t o)
void bn_mat_mul3 (mat_t o, const mat_t a, const mat_t b, const mat_t c)
void bn_mat_mul4 (mat_t o, const mat_t a, const mat_t b, const mat_t c, const mat_t d)
void bn_matXvec (register vect_t ov, register const mat_t im, register const vect_t iv)
void bn_mat_inv (register mat_t output, const mat_t input)
int bn_mat_inverse (register mat_t output, const mat_t input)
void bn_vtoh_move (register vect_t h, register const vect_t v)
void bn_htov_move (register vect_t v, register const vect_t h)
void bn_mat_trn (mat_t om, register const mat_t im)
void bn_mat_ae (register fastf_t *m, double azimuth, double elev)
void bn_ae_vec (fastf_t *azp, fastf_t *elp, const vect_t v)
void bn_aet_vec (fastf_t *az, fastf_t *el, fastf_t *twist, fastf_t *vec_ae, fastf_t *vec_twist, fastf_t accuracy)
void bn_vec_ae (vect_t vec, fastf_t az, fastf_t el)
void bn_vec_aed (vect_t vec, fastf_t az, fastf_t el, fastf_t dist)
void bn_mat_angles (register fastf_t *mat, double alpha_in, double beta_in, double ggamma_in)
void bn_mat_angles_rad (register mat_t mat, double alpha, double beta, double ggamma)
void bn_eigen2x2 (fastf_t *val1, fastf_t *val2, fastf_t *vec1, fastf_t *vec2, fastf_t a, fastf_t b, fastf_t c)
void bn_vec_perp (vect_t new_vec, const vect_t old_vec)
void bn_mat_fromto (mat_t m, const fastf_t *from, const fastf_t *to, const struct bn_tol *tol)
void bn_mat_xrot (fastf_t *m, double sinx, double cosx)
void bn_mat_yrot (fastf_t *m, double siny, double cosy)
void bn_mat_zrot (fastf_t *m, double sinz, double cosz)
void bn_mat_lookat (mat_t rot, const vect_t dir, int yflip)
void bn_vec_ortho (register vect_t out, register const vect_t in)
int bn_mat_scale_about_pt (mat_t mat, const point_t pt, const double scale)
void bn_mat_xform_about_pt (mat_t mat, const mat_t xform, const point_t pt)
int bn_mat_is_equal (const mat_t a, const mat_t b, const struct bn_tol *tol)
int bn_mat_is_identity (const mat_t m)
void bn_mat_arb_rot (mat_t m, const point_t pt, const vect_t dir, const fastf_t ang)
matp_t bn_mat_dup (const mat_t in)
int bn_mat_ck (const char *title, const mat_t m)
fastf_t bn_mat_det3 (const mat_t m)
fastf_t bn_mat_determinant (const mat_t m)
int bn_mat_is_non_unif (const mat_t m)
void bn_wrt_point_direc (mat_t out, const mat_t change, const mat_t in, const point_t point, const vect_t direc, const struct bn_tol *tol)
void persp_mat (mat_t m, fastf_t fovy, fastf_t aspect, fastf_t near1, fastf_t far1, fastf_t backoff)
void mike_persp_mat (fastf_t *pmat, const fastf_t *eye)
void deering_persp_mat (fastf_t *m, const fastf_t *l, const fastf_t *h, const fastf_t *eye)


const mat_t bn_mat_identity = MAT_INIT_IDN
 Matrix and vector functionality. More...

Detailed Description

TODO: need a better way to control tolerancing, either via additional tolerance parameters or perhaps providing a global tolerance state interface.

Definition in file mat.c.