Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   Related Pages  

mathtools.h

00001 /*******************************************************************************
00002 
00003    MATHTOOLS.H
00004 
00005    Author: Peter Loan
00006 
00007    Date: 28-OCT-98
00008 
00009    Copyright (c) 1998-2001 MusculoGraphics, a division of Motion Analysis Corp.
00010    All rights reserved.
00011 
00012 *******************************************************************************/
00013 
00014 void   append_4x4matrix(double mat1[][4], double mat2[][4]);
00015 void   make_translation_matrix(double mat[][4], int axis, double trans);
00016 void   make_scale_matrix(double mat[][4], int axis, double scale);
00017 int    find_end_of_array(int list[], int* length);
00018 void   mult_4x4matrix_by_vector(double mat[][4], double vector[], double result[]);
00019 void   mult_4x4matrices(double mat1[][4], double mat2[][4], double result[][4]);
00020 void   transpose_4x4matrix(double mat[][4], double mat_transpose[][4]);
00021 void   cross_vectors(double vector1[], double vector2[], double result[]);
00022 double normalize_vector(double vector[], double norm_vector[]);
00023 void   calc_spline_coefficients(SplineFunction* f);
00024 double interpolate_spline(double abscissa, SplineFunction* func, Derivative deriv,
00025            double velocity, double acceleration);
00026 void   format_double(double number, char format[]);
00027 void   reset_4x4matrix(double mat[][4]);
00028 void   make_4x4dircos_matrix(double angle, double axis[], double mat[][4]);
00029 SBoolean intersect_line_plane01(double pt1[], double pt2[], 
00030             double plane[], double d, double inter[], double* t);
00031 int    polygon_ray_inter3d(PolyhedronStruct* newph,int poly_index, 
00032             double pt[3],int axes);
00033 int    polygon_ray_inter_jordanstheorem(double** poly_pts, int numpts,
00034                double ptray[3], int axes);
00035 int point_ray_relation(double* pt, double ptray[], int axes);
00036 void   make_rotation_matrix(double** mat, double normal[]);
00037 int    intersect_lines(double p1[], double p2[], double p3[], double p4[],
00038              double p_int1[], double* t, double p_int2[], double* s);
00039 int    intersect_lines_scaled(double p1[], double p2[], double p3[], double p4[],
00040                double p_int1[], double* t, double* mag1,
00041                double p_int2[], double* s, double* mag2);
00042 void clear_vector(double a[], int n);
00043 void   mult_3x3matrix_by_vector(double mat[][3], double vector[], double result[]);
00044 void make_3x3_xrot_matrix(double a, double m[][3]);
00045 void make_3x3dircos_matrix(double angle, double axis[], double mat[][3]);
00046 void reset_3x3matrix(double matrix[][3]);
00047 void mult_3x3matrices(double mat1[][3], double mat2[][3], double result[][3]);
00048 void transpose_3x3matrix(double mat[][3], double mat_transpose[][3]);
00049 void copy_3x3matrix(double from[][3], double to[][3]);
00050 void mult_3x3_by_vector(double mat[][3], double vec[]);
00051 int intersect_lines(double p1[], double p2[], double p3[], double p4[],
00052           double p_int1[], double* t, double p_int2[], double* s);
00053 void find_plane_normal_to_line(PlaneStruct* plane, double pt1[], double pt2[]);
00054 double compute_angle_between_vectors(double vector1[], double vector2[]);
00055 void project_point_onto_plane(double pt[], PlaneStruct* plane, double projpt[]);
00056 double distance_between_vertices(double vertex1[], double vertex2[]);
00057 double distancesqr_between_vertices(double vertex1[], double vertex2[]);
00058 double get_distsqr_point_line(double point[], double pl[], double vl[]);
00059 void get_point_from_point_line(double point[], double pt[], double vec[],
00060                 double closest_pt[]);
00061 double atan3(double y, double x);
00062 void identity_matrix(double m[][4]);
00063 void x_rotate_matrix_bodyfixed(double m[][4], double radians);  /* body-fixed rotation */
00064 void y_rotate_matrix_bodyfixed(double m[][4], double radians);
00065 void z_rotate_matrix_bodyfixed(double m[][4], double radians);
00066 void x_rotate_matrix_spacefixed(double m[][4], double radians);
00067 void y_rotate_matrix_spacefixed(double m[][4], double radians);
00068 void z_rotate_matrix_spacefixed(double m[][4], double radians);
00069 void rotate_matrix_axis_angle(double m[][4], const double* axis, double angle);
00070 void translate_matrix(double m[][4], double* delta);
00071 /*void append_matrix(DMatrix m, const DMatrix b);*/
00072 void append_matrix(DMatrix m, DMatrix b);
00073 
00074 void transform_pt(double m[][4], double* pt);
00075 void transform_vec(double m[][4], double* vec);
00076 void extract_rotation(double m[][4], Coord3D* axis, double* angle);
00077 void extract_xyz_rot_spacefixed(double m[][4], double xyz_rot[3]);
00078 void extract_xyz_rot_bodyfixed(double m[][4], double xyz_rot[3]);
00079 void lerp_pt(double start[3], double end[3], double t, double result[3]);
00080 void slerp(const Coord3D* axisStart, double angleStart,
00081            const Coord3D* axisEnd,   double angleEnd,
00082            double t, Coord3D* axisResult, double* angleResult);
00083 
00084 SBoolean vectCompare(double a[3], double b[3]);
00085 SBoolean vect_equal_within_tol(double a[3], double b[3], double tol);
00086 void make_3x3matrix(double m[3][3], double m11, double m12, double m13, 
00087    double m21, double m22, double m23, double m31, double m32, double m33);
00088 void make_vector(double vec[3], double x, double y, double z);
00089 SBoolean zero_3x3matrix(double m[][3]);

Generated on Wed Aug 20 02:17:05 2003 for Simulation Software by doxygen1.3