src.utils package¶
Submodules¶
src.utils.vector module¶
- src.utils.vector.triangle_raycast(ray_origin: torch.Tensor, ray_dir: torch.Tensor, v1: torch.Tensor, v2: torch.Tensor, v3: torch.Tensor, epsilon=1e-08) torch.Tensor | None [source]¶
- src.utils.vector.intersect_ray_line_2d(O, D, P1, P2, eps=1e-08)[source]¶
Find intersection of a ray (O + tD, t>=0) with a line segment between P1 and P2.
All inputs are torch tensors of shape (…, 2) and can be batched.
- src.utils.vector.triangle_raycast_batch(ray_origin: torch.Tensor, ray_dir: torch.Tensor, v1: torch.Tensor, v2: torch.Tensor, v3: torch.Tensor, epsilon=1e-08) torch.Tensor [source]¶
Batched ray-triangle intersection using Möller–Trumbore.
- Parameters:
ray_origin – (N, 3) origins
ray_dir – (N, 3) directions (normalized)
v1 – (M, 3) triangle vertices
v2 – (M, 3) triangle vertices
v3 – (M, 3) triangle vertices
- Returns:
(N, M, 3) intersection points (NaN if no hit)
- Return type:
intersections
- src.utils.vector.compute_orthonormal_basis(forward_vector_3d, reference_vector_3d=None, device=None)[source]¶
- src.utils.vector.project_to_screen(world_points, model_view, fov, aspect, far, near, z_scale, device=None)[source]¶
- src.utils.vector.clipped_mean(points: torch.Tensor, std_thresh: float = 2.0)[source]¶
Compute mean of 3D points, keeping only those within std_thresh stds of the mean.
points: (N,3) tensor std_thresh: threshold in standard deviations