Mesh Oriented datABase  (version 5.5.0)
An array-based unstructured mesh library
GeomUtil.hpp File Reference
#include "moab/CartVect.hpp"
#include <cmath>
+ Include dependency graph for GeomUtil.hpp:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Namespaces

 moab
 Class representing axis-aligned bounding box.
 
 moab::GeomUtil
 

Enumerations

enum  moab::GeomUtil::intersection_type {
  moab::GeomUtil::NONE = 0 , moab::GeomUtil::INTERIOR , moab::GeomUtil::NODE0 , moab::GeomUtil::NODE1 ,
  moab::GeomUtil::NODE2 , moab::GeomUtil::EDGE0 , moab::GeomUtil::EDGE1 , moab::GeomUtil::EDGE2
}
 Pl├╝cker test for intersection between a ray and a triangle. More...
 

Functions

bool moab::GeomUtil::segment_box_intersect (CartVect box_min, CartVect box_max, const CartVect &seg_pt, const CartVect &seg_unit_dir, double &seg_start, double &seg_end)
 
bool moab::GeomUtil::ray_tri_intersect (const CartVect vertices[3], const CartVect &ray_point, const CartVect &ray_unit_direction, double &t_out, const double *ray_length=0)
 Test for intersection between a ray and a triangle. More...
 
bool moab::GeomUtil::plucker_ray_tri_intersect (const CartVect vertices[3], const CartVect &origin, const CartVect &direction, double &dist_out, const double *nonneg_ray_len, const double *neg_ray_len, const int *orientation, intersection_type *type)
 
double moab::GeomUtil::plucker_edge_test (const CartVect &vertexa, const CartVect &vertexb, const CartVect &ray, const CartVect &ray_normal)
 
bool moab::GeomUtil::ray_box_intersect (const CartVect &box_min, const CartVect &box_max, const CartVect &ray_pt, const CartVect &ray_dir, double &t_enter, double &t_exit)
 Find range of overlap between ray and axis-aligned box. More...
 
bool moab::GeomUtil::box_plane_overlap (const CartVect &plane_normal, double plane_coeff, CartVect box_min_corner, CartVect box_max_corner)
 Test if plane intersects axis-aligned box. More...
 
bool moab::GeomUtil::box_tri_overlap (const CartVect triangle_corners[3], const CartVect &box_min_corner, const CartVect &box_max_corner, double tolerance)
 Test if triangle intersects axis-aligned box. More...
 
bool moab::GeomUtil::box_tri_overlap (const CartVect triangle_corners[3], const CartVect &box_center, const CartVect &box_half_dims)
 Test if triangle intersects axis-aligned box. More...
 
bool moab::GeomUtil::box_point_overlap (const CartVect &box_min_corner, const CartVect &box_max_corner, const CartVect &point, double tolerance)
 
bool moab::GeomUtil::box_elem_overlap (const CartVect *elem_corners, EntityType elem_type, const CartVect &box_center, const CartVect &box_half_dims, int nodecount=0)
 Test if the specified element intersects an axis-aligned box. More...
 
bool moab::GeomUtil::box_linear_elem_overlap (const CartVect *elem_corners, EntityType elem_type, const CartVect &box_center, const CartVect &box_half_dims)
 Test if the specified element intersects an axis-aligned box. More...
 
bool moab::GeomUtil::box_linear_elem_overlap (const CartVect *elem_corners, EntityType elem_type, const CartVect &box_half_dims)
 Test if the specified element intersects an axis-aligned box. More...
 
void moab::GeomUtil::closest_location_on_box (const CartVect &min, const CartVect &max, const CartVect &point, CartVect &closest)
 
void moab::GeomUtil::closest_location_on_tri (const CartVect &location, const CartVect *vertices, CartVect &closest_out)
 find closest location on triangle More...
 
void moab::GeomUtil::closest_location_on_polygon (const CartVect &location, const CartVect *vertices, int num_vertices, CartVect &closest_out)
 find closest location on polygon More...
 
void moab::GeomUtil::closest_location_on_tri (const CartVect &location, const CartVect *vertices, double tolerance, CartVect &closest_out, int &closest_topo)
 find closest topological location on triangle More...
 
bool moab::GeomUtil::box_hex_overlap (const CartVect hexv[8], const CartVect &box_center, const CartVect &box_dims)
 
bool moab::GeomUtil::box_tet_overlap (const CartVect tet_corners[4], const CartVect &box_center, const CartVect &box_dims)
 
bool moab::GeomUtil::boxes_overlap (const CartVect &box_min1, const CartVect &box_max1, const CartVect &box_min2, const CartVect &box_max2, double tolerance)
 
bool moab::GeomUtil::bounding_boxes_overlap (const CartVect *list1, int num1, const CartVect *list2, int num2, double tolerance)
 
bool moab::GeomUtil::bounding_boxes_overlap_2d (const double *list1, int num1, const double *list2, int num2, double tolerance)
 
bool moab::GeomUtil::point_in_trilinear_hex (const CartVect *hex, const CartVect &xyz, double etol)
 
bool moab::GeomUtil::nat_coords_trilinear_hex (const CartVect *corner_coords, const CartVect &x, CartVect &xi, double tol)
 

Variables

const intersection_type moab::GeomUtil::type_list [] = { INTERIOR, EDGE0, EDGE1, NODE1, EDGE2, NODE0, NODE2 }