24 #ifndef MAT_VEC_FNS_II_H_INCLUDED 25 #define MAT_VEC_FNS_II_H_INCLUDED 35 template <
class t_scalar>
bool sameSign(t_scalar a, t_scalar b);
114 template <
class t_scalar,
class brr3>
void tangent(brr3 &vecA, brr3 &vecB, brr3 &t);
120 template <
class t_scalar,
class brr3>
void getUnitNormal(brr3 &u, brr3 &v, brr3 &w);
123 template <
class t_scalar,
class brr3>
void getNormal(brr3 &v1, brr3 &v2, brr3 &v3, brr3 &n);
130 template <
class t_scalar,
class brr3>
void getNormalInwards(brr3 (&tetA)[4],
int n0,
int n1,
int n2, brr3 (&n));
131 template <
class t_scalar,
class brr3>
void getNormalInwards(brr3 &f0, brr3 &f1, brr3 &f2, brr3 &p3, brr3 (&n));
137 template <
class t_scalar,
class brr3>
bool sameSidePlane(brr3 &vec, brr3 &test, brr3 &p1, brr3 &p2, brr3 &p3);
144 template <
class t_scalar,
class brr3>
bool sameSideLine(brr3 &e, brr3 &p1, brr3 &p2, brr3 &p3);
150 template <
class t_scalar,
class brr3>
bool nodeInTet(brr3 &vec, brr3 (tet)[4]);
151 template <
class t_scalar,
class brr3>
bool nodeInTet(brr3 &vec, brr3 &tet0, brr3 &tet1, brr3 &tet2, brr3 &tet3);
159 template <
class t_scalar,
class brr3>
void linePlaneIntersectionPoint(brr3 &ip, brr3 &e1, brr3 &e2, brr3 &p1, brr3 &p2, brr3 &p3);
175 template <
class t_scalar,
class brr3>
bool lineFaceIntersectionPoint(brr3 (&ip), brr3 (&e1), brr3 (&e2), brr3 (&p1), brr3 (&p2), brr3 (&p3));
182 template <
class t_scalar,
class brr3>
bool isPointInFace(brr3 &ip, brr3 &p1, brr3 &p2, brr3 &p3);
192 template <
class t_scalar,
class brr3>
bool intersectionPoint(brr3 &(ip), brr3 (&e1), brr3 (&e2), brr3 (&tet)[4],
int f1,
int f2,
int f3);
193 template <
class t_scalar,
class brr3>
bool intersectionPoint(brr3 &ip, brr3 &e1, brr3 &e2, brr3 &f1, brr3 &f2, brr3 &f3);
197 template <
class brr3>
void faceCentroid(brr3 &p1, brr3 &p2, brr3 &p3, brr3 &c);
200 template <
class t_scalar,
class brr3>
bool samePlane(brr3 &p1, brr3 &p2, brr3 &p3, brr3 &p4);
217 template <
class brr3>
void getTetrahedraCM(brr3 &p1, brr3 &p2, brr3 &p3, brr3 &p4, brr3 &c);
220 template <
class t_scalar,
class brr3,
class brr4>
void getLocalCoordinatesForLinTet(
arr3_view<t_scalar,brr3> t0,
arr3_view<t_scalar,brr3> t1,
arr3_view<t_scalar,brr3> t2,
arr3_view<t_scalar,brr3> t3,
arr3_view<t_scalar,brr3> p, brr4 &phi);
scalar vec3Arr3DotProduct(vector3 &u, arr3 &v)
Definition: mat_vec_fns_II.cpp:810
void arr3Normalise(arr3_view< t_scalar, brr3 > e)
Definition: mat_vec_fns_II.cpp:149
t_scalar getTetrahedraVolume(arr3_view< t_scalar, brr3 > p0, arr3_view< t_scalar, brr3 > p1, arr3_view< t_scalar, brr3 > p2, arr3_view< t_scalar, brr3 > p3)
Definition: mat_vec_fns_II.cpp:708
bool sameSidePlane(brr3 &vec, brr3 &test, brr3 &p1, brr3 &p2, brr3 &p3)
Definition: mat_vec_fns_II.cpp:383
void vec3Arr3SubsToArr3(vector3 &u, arr3 &v, arr3 &w)
Definition: mat_vec_fns_II.cpp:778
t_scalar distanceFromPointToLine(arr3_view< t_scalar, brr3 > p0, arr3_view< t_scalar, brr3 > p1, arr3_view< t_scalar, brr3 > p2)
Definition: mat_vec_fns_II.cpp:683
void getRestOfNodes(int iN, int &iO0, int &iO1, int &iO2)
Definition: mat_vec_fns_II.cpp:64
void getMissingPair(int in0, int in1, int &on0, int &on1)
Definition: mat_vec_fns_II.cpp:88
bool sameSign(t_scalar a, t_scalar b)
check whether two scalars have the same sign
Definition: mat_vec_fns_II.cpp:34
void vec3Vec3AddToArr3(vector3 &u, vector3 &v, arr3(&w))
void arr3Store(arr3_view< t_scalar, brr3 > u, arr3_view< t_scalar, brr3 > v)
Definition: mat_vec_fns_II.cpp:208
void arr3Initialise(brr3 &v)
Definition: mat_vec_fns_II.cpp:253
void arr3arr3Substract(arr3_view< t_scalar, brr3 > vecA, arr3_view< t_scalar, brr3 > vecB, arr3_view< t_scalar, brr3 > res)
Definition: mat_vec_fns_II.cpp:117
t_scalar arr3arr3Distance(arr3_view< t_scalar, brr3 > vecA, arr3_view< t_scalar, brr3 > vecB)
Definition: mat_vec_fns_II.cpp:218
t_scalar detByRows(arr3_view< t_scalar, brr3 > a, arr3_view< t_scalar, brr3 > b, arr3_view< t_scalar, brr3 > c)
Definition: mat_vec_fns_II.cpp:261
void arr3Resize(t_scalar f, arr3_view< t_scalar, brr3 > u)
Definition: mat_vec_fns_II.cpp:179
bool isPointInFace(brr3 &ip, brr3 &p1, brr3 &p2, brr3 &p3)
Definition: mat_vec_fns_II.cpp:531
bool sameSideLine(brr3 &e, brr3 &p1, brr3 &p2, brr3 &p3)
Definition: mat_vec_fns_II.cpp:405
void getTetrahedraCM(brr3 &p1, brr3 &p2, brr3 &p3, brr3 &p4, brr3 &c)
Definition: mat_vec_fns_II.cpp:717
bool safeLinePlaneIntersectionPoint(brr3 &ip, brr3 &e1, brr3 &e2, brr3 &p1, brr3 &p2, brr3 &p3)
Definition: mat_vec_fns_II.cpp:480
scalar arr3[3]
Definition: mat_vec_types.h:70
void vec3ResizeToArr3(scalar f, vector3 &u, arr3 &v)
Definition: mat_vec_fns_II.cpp:802
void arr3Resize3(t_scalar f, arr3_view< t_scalar, brr3 > u, arr3_view< t_scalar, brr3 > v)
Definition: mat_vec_fns_II.cpp:198
void arr3Resize2(t_scalar f, arr3_view< t_scalar, brr3 > u, arr3_view< t_scalar, brr3 > v)
Definition: mat_vec_fns_II.cpp:188
void getNormalInwards(brr3(&tetA)[4], int n0, int n1, int n2, brr3(&n))
Definition: mat_vec_fns_II.cpp:338
void vec3Vec3SubsToArr3(vector3 &u, vector3 &v, brr3(&w))
Definition: mat_vec_fns_II.cpp:770
void tangent(brr3 &vecA, brr3 &vecB, brr3 &t)
Definition: mat_vec_fns_II.cpp:295
t_scalar detByCols(arr3_view< t_scalar, brr3 > a, arr3_view< t_scalar, brr3 > b, arr3_view< t_scalar, brr3 > c)
Definition: mat_vec_fns_II.cpp:271
void getNormal(brr3 &v1, brr3 &v2, brr3 &v3, brr3 &n)
Definition: mat_vec_fns_II.cpp:325
void arr3arr3VectorProduct(arr3_view< t_scalar, brr3 > u, arr3_view< t_scalar, brr3 > v, arr3_view< t_scalar, brr3 > w)
Definition: mat_vec_fns_II.cpp:127
void intersectingPointToLine(arr3_view< t_scalar, brr3 > p0, arr3_view< t_scalar, brr3 > p1, arr3_view< t_scalar, brr3 > p2p1, arr3_view< t_scalar, brr3 > p3)
Definition: mat_vec_fns_II.cpp:590
void getUnitNormal(brr3 &u, brr3 &v, brr3 &w)
Definition: mat_vec_fns_II.cpp:311
int getMissingNode(int n0, int n1, int n2)
Definition: mat_vec_fns_II.cpp:43
Definition: mat_vec_types.h:104
void vec3Arr3AddToArr3(vector3 &u, arr3(&v), arr3(&w))
Definition: mat_vec_fns_II.cpp:794
t_scalar mag2(arr3_view< t_scalar, brr3 > v)
Definition: mat_vec_fns_II.cpp:242
bool intersectionPoint(brr3 &(ip), brr3(&e1), brr3(&e2), brr3(&tet)[4], int f1, int f2, int f3)
Definition: mat_vec_fns_II.cpp:549
t_scalar arr3arr3DotProduct(arr3_view< t_scalar, brr3 > vecA, arr3_view< t_scalar, brr3 > vecB)
Definition: mat_vec_fns_II.cpp:138
void faceCentroid(brr3 &p1, brr3 &p2, brr3 &p3, brr3 &c)
void arr3arr3Add(arr3_view< t_scalar, brr3 > vecA, arr3_view< t_scalar, brr3 > vecB, arr3_view< t_scalar, brr3 > res)
Definition: mat_vec_fns_II.cpp:105
void linePlaneIntersectionPoint(brr3 &ip, brr3 &e1, brr3 &e2, brr3 &p1, brr3 &p2, brr3 &p3)
Definition: mat_vec_fns_II.cpp:450
Definition: mat_vec_types.h:90
double scalar
Definition: mat_vec_types.h:36
bool samePlane(brr3 &p1, brr3 &p2, brr3 &p3, brr3 &p4)
bool lineFaceIntersectionPoint(brr3(&ip), brr3(&e1), brr3(&e2), brr3(&p1), brr3(&p2), brr3(&p3))
Definition: mat_vec_fns_II.cpp:515
bool nodeInTet(brr3 &vec, brr3(tet)[4])
Definition: mat_vec_fns_II.cpp:423
t_scalar mag(arr3_view< t_scalar, brr3 > v)
Definition: mat_vec_fns_II.cpp:229
void getLocalCoordinatesForLinTet(arr3_view< t_scalar, brr3 > t0, arr3_view< t_scalar, brr3 > t1, arr3_view< t_scalar, brr3 > t2, arr3_view< t_scalar, brr3 > t3, arr3_view< t_scalar, brr3 > p, brr4 &phi)
Definition: mat_vec_fns_II.cpp:725
void arr3Normalise2(arr3_view< t_scalar, brr3 > e, arr3_view< t_scalar, brr3 > n)
Definition: mat_vec_fns_II.cpp:164
void arr3Vec3SubsToArr3(arr3(&u), vector3 &v, arr3(&w))
Definition: mat_vec_fns_II.cpp:786