ray_polyline_intersect
ray_polyline_intersect(position, direction, polyline_vertices, max_distance=100.0, EC=None)
Shoot a ray in 2D from a position and see where it crashes into a given polyline
Calculates the intersection point between a ray and a given polyline in 2D
Parameters:
Name | Type | Description | Default |
---|---|---|---|
position |
numpy double array
|
Vector of camera position coordinates |
required |
direction |
numpy double array
|
Vector of camera direction |
required |
polyline_vertices |
numpy double array
|
Matrix of polyline vertex coordinates |
required |
max_distance |
double, optional (default 100.0)
|
Maximum ray distance to consider |
100.0
|
EC |
numpy int array, optional (default None)
|
Matrix of edge indices into polyline_vertices |
None
|
Returns:
Name | Type | Description |
---|---|---|
x |
numpy double array
|
Vector of intersection point coordinates (np.inf if no intersection) |
n |
numpy double array
|
Vector of polyline normal at intersection (zeros if no intersection) |
ind |
int
|
Index into EC of intersection edge (-1 if no intersection) |
See Also
test_ray_mesh_intersect.
Notes
This does a for loop on all the edges of the polyline, suffering performance.
Examples:
# Build a polyline; for example, a square
V = np.array([ [-1.0, -1.0], [-1.0, 1.0], [1.0, 1.0], [1.0, -1.0] ])
# Camera position and direction
cam_pos = np.array([-0.5,-1.5])
cam_dir = np.array([0.0,1.0])
# Looking upwards: intersection should be [-0.5,-1.0], normal downwards
x, n, ind = gpytoolbox.ray_polyline_intersect(cam_pos,cam_dir,V)
Source code in src/gpytoolbox/ray_polyline_intersect.py
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 105 106 107 108 109 110 111 112 |
|