9#ifndef __MATH_VECTOR_INLINE_C__
10#define __MATH_VECTOR_INLINE_C__
210 SWAP(
float, a[0],
b[0]);
211 SWAP(
float, a[1],
b[1]);
216 SWAP(
float, a[0],
b[0]);
217 SWAP(
float, a[1],
b[1]);
218 SWAP(
float, a[2],
b[2]);
223 SWAP(
float, a[0],
b[0]);
224 SWAP(
float, a[1],
b[1]);
225 SWAP(
float, a[2],
b[2]);
226 SWAP(
float, a[3],
b[3]);
302 r[0] = a[0] + (
float)
b[0];
303 r[1] = a[1] + (
float)
b[1];
304 r[2] = a[2] + (
float)
b[2];
376 r[0] = (double)a[0] - (
double)
b[0];
377 r[1] = (double)a[1] - (
double)
b[1];
382 r[0] = (double)a[0] - (
double)
b[0];
383 r[1] = (double)a[1] - (
double)
b[1];
384 r[2] = (double)a[2] - (
double)
b[2];
459 return (mat[0][3] * co[0]) + (mat[1][3] * co[1]) + (mat[2][3] * co[2]) + mat[3][3];
464 return M[0][0] * a[0] +
M[1][0] * a[1] +
M[2][0] * a[2];
468 return M[0][1] * a[0] +
M[1][1] * a[1] +
M[2][1] * a[2];
472 return M[0][2] * a[0] +
M[1][2] * a[1] +
M[2][2] * a[2];
477 return M[0][0] * a[0] +
M[1][0] * a[1] +
M[2][0] * a[2];
481 return M[0][1] * a[0] +
M[1][1] * a[1] +
M[2][1] * a[2];
485 return M[0][2] * a[0] +
M[1][2] * a[1] +
M[2][2] * a[2];
503 r[0] = a[0] +
b[0] * f;
504 r[1] = a[1] +
b[1] * f;
509 r[0] = a[0] +
b[0] * f;
510 r[1] = a[1] +
b[1] * f;
511 r[2] = a[2] +
b[2] * f;
516 r[0] = a[0] +
b[0] * c[0];
517 r[1] = a[1] +
b[1] * c[1];
518 r[2] = a[2] +
b[2] * c[2];
526 r[0] = a[0] +
b[0] * (
float)c[0];
527 r[1] = a[1] +
b[1] * (
float)c[1];
528 r[2] = a[2] +
b[2] * (
float)c[2];
541 r[0] = v1[0] *
v2[0];
542 r[1] = v1[1] *
v2[1];
543 r[2] = v1[2] *
v2[2];
625 return a[0] *
b[0] + a[1] *
b[1];
630 return a[0] *
b[0] + a[1] *
b[1];
635 return a[0] *
b[0] + a[1] *
b[1] + a[2] *
b[2];
642 float vec1[3], vec2[3];
654 return a[0] *
b[0] + a[1] *
b[1] + a[2] *
b[2] + a[3] *
b[3];
659 return a[0] * (double)
b[0] + a[1] * (
double)
b[1] + a[2] * (double)
b[2];
664 return a[0] *
b[0] + a[1] *
b[1] + a[2] *
b[2];
669 return a[0] *
b[1] - a[1] *
b[0];
674 return a[0] *
b[1] - a[1] *
b[0];
680 r[0] = a[1] *
b[2] - a[2] *
b[1];
681 r[1] = a[2] *
b[0] - a[0] *
b[2];
682 r[2] = a[0] *
b[1] - a[1] *
b[0];
688 r[0] = a[1] *
b[2] - a[2] *
b[1];
689 r[1] = a[2] *
b[0] - a[0] *
b[2];
690 r[2] = a[0] *
b[1] - a[1] *
b[0];
695 n[0] += (v_prev[1] - v_curr[1]) * (v_prev[2] + v_curr[2]);
696 n[1] += (v_prev[2] - v_curr[2]) * (v_prev[0] + v_curr[0]);
697 n[2] += (v_prev[0] - v_curr[0]) * (v_prev[1] + v_curr[1]);
704 return v[0] *
v[0] +
v[1] *
v[1];
709 return v[0] *
v[0] +
v[1] *
v[1] +
v[2] *
v[2];
734 return sqrt(
v[0] *
v[0] +
v[1] *
v[1]);
885 double d = n[0] * n[0] + n[1] * n[1] + n[2] * n[2];
893 mul = unit_length / d;
900 n[0] = n[1] = n[2] = 0;
923 out[0] =
in[0] * (1.0f / 32767.0f);
924 out[1] =
in[1] * (1.0f / 32767.0f);
925 out[2] =
in[2] * (1.0f / 32767.0f);
930 out[0] = (short)(
in[0] * 32767.0f);
931 out[1] = (short)(
in[1] * 32767.0f);
932 out[2] = (short)(
in[2] * 32767.0f);
939 return (
v[0] == 0.0f &&
v[1] == 0.0f);
944 return (
v[0] == 0.0f &&
v[1] == 0.0f &&
v[2] == 0.0f);
949 return (
v[0] == 0.0f &&
v[1] == 0.0f &&
v[2] == 0.0f &&
v[3] == 0.0f);
954 return (isfinite(
v[0]) && isfinite(
v[1]));
959 return (isfinite(
v[0]) && isfinite(
v[1]) && isfinite(
v[2]));
964 return (isfinite(
v[0]) && isfinite(
v[1]) && isfinite(
v[2]) && isfinite(
v[3]));
969 return (
v[0] == 1.0f &&
v[1] == 1.0f &&
v[2] == 1.0f);
980 return ((v1[0] ==
v2[0]) && (v1[1] ==
v2[1]));
985 return ((v1[0] ==
v2[0]) && (v1[1] ==
v2[1]) && (v1[2] ==
v2[2]));
990 return ((v1[0] ==
v2[0]) && (v1[1] ==
v2[1]) && (v1[2] ==
v2[2]) && (v1[3] ==
v2[3]));
995 return ((v1[0] ==
v2[0]) && (v1[1] ==
v2[1]) && (v1[2] ==
v2[2]) && (v1[3] ==
v2[3]));
1019 return (
dot_v3v3(d, d) <= (limit * limit));
1024 for (
int i = 0;
i < 3;
i++) {
1025 if (
v2[
i] == 0.0f) {
1027 if (v1[
i] !=
v2[
i]) {
1032 if (
fabsf(v1[
i] /
v2[
i] - 1.0f) > limit) {
1069 return (((l1[0] - pt[0]) * (l2[1] - pt[1])) - ((l2[0] - pt[0]) * (l1[1] - pt[1])));
MINLINE int clamp_i(int value, int min, int max)
MINLINE int compare_ff(float a, float b, float max_diff)
ATTR_WARN_UNUSED_RESULT const BMVert * v2
ATTR_WARN_UNUSED_RESULT const BMVert * v
SIMD_FORCE_INLINE const btScalar & z() const
Return the z value.
SIMD_FORCE_INLINE const btScalar & w() const
Return the w value.
static void mul(btAlignedObjectArray< T > &items, const Q &value)
MINLINE bool is_finite_v2(const float v[2])
MINLINE bool is_finite_v4(const float v[4])
MINLINE void sub_v3db_v3fl_v3fl(double r[3], const float a[3], const float b[3])
MINLINE float dot_v2v2(const float a[2], const float b[2])
MINLINE double normalize_v3_db(double n[3])
MINLINE void mul_v4_fl(float r[4], float f)
MINLINE int len_manhattan_v2v2_int(const int a[2], const int b[2])
MINLINE void madd_v3_v3v3v3(float r[3], const float a[3], const float b[3], const float c[3])
MINLINE void sub_v2_v2v2_int(int r[2], const int a[2], const int b[2])
MINLINE void add_v4_v4(float r[4], const float a[4])
MINLINE void copy_v4_v4(float r[4], const float a[4])
MINLINE void copy_v2fl_v2i(float r[2], const int a[2])
MINLINE void swap_v4_v4(float a[4], float b[4])
MINLINE float len_squared_v3v3(const float a[3], const float b[3])
MINLINE void add_v3fl_v3fl_v3i(float r[3], const float a[3], const int b[3])
MINLINE void madd_v3_v3fl(float r[3], const float a[3], float f)
MINLINE void add_v3_fl(float r[3], float f)
MINLINE void copy_v2_fl2(float v[2], float x, float y)
MINLINE void mul_v2_v2v2(float r[2], const float a[2], const float b[2])
MINLINE void madd_v2_v2fl(float r[2], const float a[2], float f)
MINLINE void copy_v4_fl4(float v[4], float x, float y, float z, float w)
MINLINE void madd_v2_v2v2fl(float r[2], const float a[2], const float b[2], float f)
MINLINE float dot_v4v4(const float a[4], const float b[4])
MINLINE void swap_v2_v2(float a[2], float b[2])
MINLINE void madd_v3fl_v3fl_v3fl_v3i(float r[3], const float a[3], const float b[3], const int c[3])
MINLINE void copy_v2db_v2fl(double r[2], const float a[2])
MINLINE void copy_v2_v2_db(double r[2], const double a[2])
MINLINE float dot_m3_v3_row_x(const float M[3][3], const float a[3])
MINLINE void sub_v2_v2(float r[2], const float a[2])
MINLINE float len_v4v4(const float a[4], const float b[4])
MINLINE bool equals_v4v4_int(const int v1[4], const int v2[4])
MINLINE bool compare_v3v3(const float v1[3], const float v2[3], const float limit)
MINLINE void mul_v3_v3(float r[3], const float a[3])
MINLINE float len_v2v2_int(const int v1[2], const int v2[2])
MINLINE double normalize_v3_length_db(double n[3], const double unit_length)
MINLINE void sub_v3_v3(float r[3], const float a[3])
MINLINE bool is_zero_v3(const float v[3])
MINLINE float dot_m4_v3_row_z(const float M[4][4], const float a[3])
MINLINE void mul_v2_v2(float r[2], const float a[2])
MINLINE float normalize_v2_v2_length(float r[2], const float a[2], const float unit_length)
MINLINE void add_newell_cross_v3_v3v3(float n[3], const float v_prev[3], const float v_curr[3])
MINLINE float len_manhattan_v3(const float v[3])
MINLINE bool is_one_v3(const float v[3])
MINLINE float dot_m3_v3_row_z(const float M[3][3], const float a[3])
MINLINE void sub_v3_v3v3(float r[3], const float a[3], const float b[3])
MINLINE void clamp_v3(float vec[3], const float min, const float max)
MINLINE bool compare_len_v3v3(const float v1[3], const float v2[3], const float limit)
MINLINE void copy_v4_v4_uchar(unsigned char r[4], const unsigned char a[4])
MINLINE void mul_v3db_db(double r[3], double f)
MINLINE void mul_v2_fl(float r[2], float f)
MINLINE float len_v3(const float a[3])
MINLINE void copy_v3_v3_uchar(unsigned char r[3], const unsigned char a[3])
MINLINE void copy_v2_v2(float r[2], const float a[2])
MINLINE void mul_v3_fl(float r[3], float f)
MINLINE void copy_v2_v2_int(int r[2], const int a[2])
MINLINE void add_v3_v3_db(double r[3], const double a[3])
MINLINE void normal_float_to_short_v3(short out[3], const float in[3])
MINLINE float len_manhattan_v2(const float v[2])
MINLINE void mul_v4_v4fl(float r[4], const float a[4], float f)
MINLINE void copy_v3_v3(float r[3], const float a[3])
MINLINE float normalize_v2_length(float n[2], const float unit_length)
MINLINE void zero_v2_int(int r[2])
MINLINE float len_v2(const float v[2])
MINLINE float cross_v2v2(const float a[2], const float b[2])
MINLINE void negate_v3_v3(float r[3], const float a[3])
MINLINE float dot_v3v3(const float a[3], const float b[3])
MINLINE void normal_short_to_float_v3(float out[3], const short in[3])
MINLINE void copy_v3_v3_int(int r[3], const int a[3])
MINLINE void add_v2_v2(float r[2], const float a[2])
MINLINE void copy_v3_fl3(float v[3], float x, float y, float z)
MINLINE void invert_v3_safe(float r[3])
MINLINE double dot_v2v2_db(const double a[2], const double b[2])
MINLINE void negate_v2_v2(float r[2], const float a[2])
MINLINE void add_v3_v3v3(float r[3], const float a[3], const float b[3])
MINLINE void cross_v3_v3v3(float r[3], const float a[3], const float b[3])
MINLINE float len_v4(const float a[4])
MINLINE void clamp_v2(float vec[2], const float min, const float max)
MINLINE void add_v2_fl(float r[2], float f)
MINLINE void zero_v3_int(int r[3])
MINLINE float len_squared_v2(const float v[2])
MINLINE bool compare_size_v3v3(const float v1[3], const float v2[3], const float limit)
MINLINE void copy_v3_v3_short(short r[3], const short a[3])
MINLINE void negate_v4_v4(float r[4], const float a[4])
MINLINE double len_v2v2_db(const double v1[2], const double v2[2])
MINLINE float len_v3v3(const float a[3], const float b[3])
MINLINE void copy_v2_v2_short(short r[2], const short a[2])
MINLINE void negate_v3(float r[3])
MINLINE float dot_m4_v3_row_y(const float M[4][4], const float a[3])
MINLINE void sub_v2db_v2fl_v2fl(double r[2], const float a[2], const float b[2])
MINLINE bool equals_v3v3(const float v1[3], const float v2[3])
MINLINE bool equals_v2v2(const float v1[2], const float v2[2])
MINLINE bool equals_v4v4(const float v1[4], const float v2[4])
MINLINE void copy_v3fl_v3db(float r[3], const double a[3])
MINLINE float mul_project_m4_v3_zfac(const float mat[4][4], const float co[3])
MINLINE void zero_v4(float r[4])
MINLINE void mul_v3_v3v3(float r[3], const float v1[3], const float v2[3])
MINLINE void copy_v3db_v3fl(double r[3], const float a[3])
MINLINE float len_squared_v4v4(const float a[4], const float b[4])
MINLINE void invert_v3(float r[3])
MINLINE void clamp_v4(float vec[4], const float min, const float max)
MINLINE double dot_v3v3_db(const double a[3], const double b[3])
MINLINE float normalize_v3_v3(float r[3], const float a[3])
MINLINE float len_squared_v2v2(const float a[2], const float b[2])
MINLINE double cross_v2v2_db(const double a[2], const double b[2])
MINLINE void add_v2_v2v2(float r[2], const float a[2], const float b[2])
MINLINE void sub_v2_v2v2(float r[2], const float a[2], const float b[2])
MINLINE void sub_v3_v3v3_int(int r[3], const int a[3], const int b[3])
MINLINE void zero_v2(float r[2])
MINLINE void copy_v4fl_v4db(float r[4], const double a[4])
MINLINE void cross_v3_v3v3_db(double r[3], const double a[3], const double b[3])
MINLINE float dot_m3_v3_row_y(const float M[3][3], const float a[3])
MINLINE bool compare_v2v2(const float v1[2], const float v2[2], const float limit)
MINLINE void copy_v4_v4_int(int r[4], const int a[4])
MINLINE float normalize_v2(float n[2])
MINLINE double len_v2_db(const double v[2])
MINLINE bool compare_v4v4(const float v1[4], const float v2[4], const float limit)
MINLINE float normalize_v3_v3_length(float r[3], const float a[3], const float unit_length)
MINLINE void swap_v3_v3(float a[3], float b[3])
MINLINE void copy_v3_fl(float r[3], float f)
MINLINE void madd_v3_v3v3fl(float r[3], const float a[3], const float b[3], float f)
MINLINE void madd_v4_v4fl(float r[4], const float a[4], float f)
MINLINE void copy_v3_v3_db(double r[3], const double a[3])
MINLINE float dot_v3v3v3(const float p[3], const float a[3], const float b[3])
MINLINE void zero_v3(float r[3])
MINLINE float dot_m4_v3_row_x(const float M[4][4], const float a[3])
MINLINE float len_manhattan_v2v2(const float a[2], const float b[2])
MINLINE void copy_v4_v4_db(double r[4], const double a[4])
MINLINE void negate_v3_db(double r[3])
MINLINE void mul_v3_v3fl(float r[3], const float a[3], float f)
MINLINE void mul_v2_v2fl(float r[2], const float a[2], float f)
MINLINE float line_point_side_v2(const float l1[2], const float l2[2], const float pt[2])
MINLINE bool is_zero_v2(const float v[2])
MINLINE void add_v3_v3(float r[3], const float a[3])
MINLINE void invert_v2(float r[2])
MINLINE int len_manhattan_v2_int(const int v[2])
MINLINE void copy_v4_fl(float r[4], float f)
MINLINE float normalize_v2_v2(float r[2], const float a[2])
MINLINE void add_v3_uchar_clamped(uchar r[3], int i)
MINLINE float normalize_v3_length(float n[3], const float unit_length)
MINLINE bool is_finite_v3(const float v[3])
MINLINE double dot_v3db_v3fl(const double a[3], const float b[3])
MINLINE float len_squared_v3(const float v[3])
MINLINE float normalize_v3(float n[3])
MINLINE void sub_v4_v4v4(float r[4], const float a[4], const float b[4])
MINLINE void negate_v4(float r[4])
MINLINE bool is_zero_v4(const float v[4])
MINLINE float len_v2v2(const float v1[2], const float v2[2])
MINLINE void sub_v3_v3v3_db(double r[3], const double a[3], const double b[3])
MINLINE void copy_v2_fl(float r[2], float f)
MINLINE void sub_v2_v2v2_db(double r[2], const double a[2], const double b[2])