# copyleft.do_meshes_intersect

## `do_meshes_intersect(V1, F1, V2, F2)`

Finds whether two surface triangle meshes intersect.

Given two triangle meshes A and B, uses exact predicates to compute whether any pair of triangles triA and triB intersect one another.

Parameters:

Name Type Description Default
`V1` `numpy double array`

Matrix of vertex coordinates of the first mesh

required
`F1` `numpy int array`

Matrix of triangle indices of the first mesh

required
`V2` `numpy double array`

Matrix of vertex coordinates of the second mesh

required
`F2` `numpy int array`

Matrix of triangle indices of the second mesh

required

Returns:

Name Type Description
`b` `bool`

True if the meshes have non-trivial intersection, False otherwise

`inters` `numpy int array`

One pair of intersecting triangle indices.

mesh_boolean.

#### Notes

The algorithm stops when it finds one intersection; therefore, the output is not a complete list of all intersecting triangles

Examples:

``````# Meshes in v,f and u,g
b, inters = gpytoolbox.do_meshes_intersect(v,f,u,g)
``````
Source code in `src/gpytoolbox/copyleft/do_meshes_intersect.py`
 ``` 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56``` ``````def do_meshes_intersect(V1,F1,V2,F2): """Finds whether two surface triangle meshes intersect. Given two triangle meshes A and B, uses exact predicates to compute whether any pair of triangles triA and triB intersect one another. Parameters ---------- V1 : numpy double array Matrix of vertex coordinates of the first mesh F1 : numpy int array Matrix of triangle indices of the first mesh V2 : numpy double array Matrix of vertex coordinates of the second mesh F2 : numpy int array Matrix of triangle indices of the second mesh Returns ------- b : bool True if the meshes have non-trivial intersection, False otherwise inters : numpy int array One pair of intersecting triangle indices. See Also -------- mesh_boolean. Notes ----- The algorithm stops when it finds one intersection; therefore, the output is not a complete list of all intersecting triangles Examples -------- ```python # Meshes in v,f and u,g b, inters = gpytoolbox.do_meshes_intersect(v,f,u,g) ``` """ try: from gpytoolbox_bindings_copyleft import _do_meshes_intersect_cpp_impl except: raise ImportError("Gpytoolbox cannot import its C++ binding.") inters = list(_do_meshes_intersect_cpp_impl(V1.astype(np.float64),F1.astype(np.int32),V2.astype(np.float64),F2.astype(np.int32))) # print(inters) b = False if len(inters)>0: b = True # inters = inters[0] else: inters = None return b, inters ``````