Coverage for pyxfem/core/geometry.py: 0%
16 statements
« prev ^ index » next coverage.py v7.17.0, created at 2026-10-24 07:17 +0000
« prev ^ index » next coverage.py v7.17.0, created at 2026-10-24 07:17 +0000
1import numpy as np
3def cross2d(a, b):
4 return a[..., 0] * b[..., 1] - a[..., 1] * b[..., 0]
6def is_left_to_line(a, b, c) :
7 ''' given three point a, b, c return true if c is on the right of segment ab '''
8 return cross2d(b-a, c-a) >= 0.
10def is_in_triangle(t, a) :
11 ''' return true if point a is in triangle t '''
12 return is_left_to_line(t[0], t[1], a) & is_left_to_line(t[1], t[2], a) & is_left_to_line(t[2], t[0], a)
14if __name__ == "__main__":
15 print(is_left_to_line(np.array([0.1,0]),np.array([1., 0.]), np.array([0.,1.])))
16 t1 = np.array([[0.1,0.],[1.,0.],[0.,1.]])
17 t2 = np.array([[1.1,0.],[2.,0.],[1.,1.]])
18 tris = np.array([t1, t2])
19 print(is_left_to_line(t1[0], t1[1], np.array([[1.,0.3], [0.1, -0.3]]) ))
21 print(t2)
23 print(is_in_triangle(t1, np.array([[1.,0.3], [0.1, 0.3]])))
24 print(is_in_triangle(tris, np.array([[1.,0.3], [0.1, 0.3]])))