00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
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);
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
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]);