3 TriCoord::TriCoord(vtkUnstructuredGrid
* surf_grid
, vtkIdType id_tri
, vec3_t x
)
5 m_SurfGrid
= surf_grid
;
9 void TriCoord::setPosition(vec3_t x
)
12 bool intersects_face = GeometryTools::intersectEdgeAndTriangle(T.a, T.b, T.c, x1, x2, xi, ri);
13 if (!intersects_face) {
14 double kab = GeometryTools::intersection(T.a, T.b - T.a, xp, T.b - T.a);
15 double kac = GeometryTools::intersection(T.a, T.c - T.a, xp, T.c - T.a);
16 double kbc = GeometryTools::intersection(T.b, T.c - T.b, xp, T.c - T.b);
17 double dab = (T.a + kab*(T.b-T.a) - xp).abs();
18 double dac = (T.a + kac*(T.c-T.a) - xp).abs();
19 double dbc = (T.b + kbc*(T.c-T.b) - xp).abs();
21 if ((kab >= 0) && (kab <= 1)) {
23 xi = T.a + kab*(T.b-T.a);
28 if ((kac >= 0) && (kac <= 1)) {
30 xi = T.a + kac*(T.c-T.a);
35 if ((kbc >= 0) && (kbc <= 1)) {
37 xi = T.b + kbc*(T.c-T.b);
42 double da = (T.a - xp).abs();
43 double db = (T.b - xp).abs();
44 double dc = (T.c - xp).abs();