Source code for svcco.collision.sphere_proximity

import numpy as np
import numba as nb

[docs]@nb.jit(nopython=True,cache=True,nogil=True) def sphere_proximity(data,edge): C1 = (edge[0:3] + edge[3:6]) / 2 C2 = (data[:,0:3] + data[:,3:6]) / 2 r1 = np.sqrt(edge[21]**2+(edge[20]/2)**2) r2 = np.sqrt(data[:,21]**2+(data[:,20]/2)**2) D = np.sqrt(np.sum(np.square(C1 - C2), axis=1)) return np.argwhere(D < (r1 + r2)).flatten()
[docs]@nb.jit(nopython=True,cache=True,nogil=True) def sphere_point_query(point,distance,data): C = (data[:,0:3] + data[:,3:6]) / 2 R = np.sqrt(data[:,21]**2+(data[:,20]/2)**2) D = np.sqrt(np.sum(np.square(C - point), axis=1)) return np.argwhere(D<(distance+R)).flatten()
[docs]@nb.jit(nopython=True,nogil=True) def sphere_proximity_testing(data,edge): C1 = (edge[0:3] + edge[3:6]) / 2 C2 = (data[:,0:3] + data[:,3:6]) / 2 r1 = np.sqrt(edge[21]**2+(edge[20]/2)**2) r2 = np.sqrt(data[:,21]**2+(data[:,20]/2)**2) D = np.sqrt(np.sum(np.square(C1 - C2), axis=1)) return np.argwhere(D < (r1 + r2)).flatten()