initialize_aabbtree
initialize_aabbtree(V, F=None, vmin=None, vmax=None)
Axis-Aligned Bounding Box hierarchy for efficient computation
Computes an AABB tree by recursively dividing cells along the biggest dimension. May be called for any dimension and simplex size
Parameters:
Name | Type | Description | Default |
---|---|---|---|
V |
numpy double array
|
Matrix of mesh vertex coordinates |
required |
F |
numpy int array, optional (default None)
|
Matrix of element indices into V (if None, treated as point cloud) |
None
|
Returns:
Name | Type | Description |
---|---|---|
C |
numpy double array
|
Matrix of box centers |
W |
numpy double array
|
Matrix of box widths |
CH |
numpy int array
|
Matrix of child indeces (-1 if leaf node) |
PAR |
numpy int array
|
Vector of immediate parent indeces (to traverse upwards) |
D |
numpy int array
|
Vector of tree depths |
tri_indices |
numpy int array
|
Vector of element indices (-1 if not leaf node) |
split_dir |
numpy int array
|
Vector of split directions (0,1,2,...) |
See Also
traverse_aabbtree, initialize_quadtree.
Notes
This code is purposefully not optimized beyond asymptotics for simplicity in understanding its functionality and translating it to other programming languages beyond prototyping.
Examples:
from gpytoolbox import initialize_aabbtree
P = np.array([[0,0,0],[0.1,0,0],[0,0,0],[0.02,0.1,0],[1,1,0.9],[1,1,1]])
F = np.array([[0,1],[2,3],[4,5]],dtype=int)
C,W,CH,PAR,D,tri_ind = gpytoolbox.initialize_aabbtree(P,F)
Source code in src/gpytoolbox/initialize_aabbtree.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 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
|