Mesh Oriented datABase  (version 5.5.1)
An array-based unstructured mesh library
GeomUtil.cpp File Reference
#include "moab/CartVect.hpp"
#include "moab/CN.hpp"
#include "moab/GeomUtil.hpp"
#include "moab/Matrix3.hpp"
#include "moab/Util.hpp"
#include <cmath>
#include <algorithm>
#include <cassert>
#include <iostream>
#include <limits>
+ Include dependency graph for GeomUtil.cpp:

Go to the source code of this file.

Classes

class  moab::GeomUtil::VolMap
 Class representing a 3-D mapping function (e.g. shape function for volume element) More...
 
class  moab::GeomUtil::LinearHexMap
 Shape function for trilinear hexahedron. More...
 

Namespaces

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

Macros

#define EXIT_EARLY
 
#define CHECK_RANGE(A, B, R)
 

Functions

static void moab::GeomUtil::min_max_3 (double a, double b, double c, double &min, double &max)
 
static double moab::GeomUtil::dot_abs (const CartVect &u, const CartVect &v)
 
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::first (const CartVect &a, const CartVect &b)
 
double moab::GeomUtil::plucker_edge_test (const CartVect &vertexa, const CartVect &vertexb, const CartVect &ray, const CartVect &ray_normal)
 
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)
 
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::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_center, const CartVect &box_half_dims)
 Test if triangle 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_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...
 
static CartVect moab::GeomUtil::quad_norm (const CartVect &v1, const CartVect &v2, const CartVect &v3, const CartVect &v4)
 
static CartVect moab::GeomUtil::tri_norm (const CartVect &v1, const CartVect &v2, const CartVect &v3)
 
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...
 
bool moab::GeomUtil::box_hex_overlap (const CartVect *elem_corners, const CartVect &center, const CartVect &dims)
 
static bool moab::GeomUtil::box_tet_overlap_edge (const CartVect &dims, const CartVect &edge, const CartVect &ve, const CartVect &v1, const CartVect &v2)
 
bool moab::GeomUtil::box_tet_overlap (const CartVect *corners_in, const CartVect &center, const CartVect &dims)
 
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_tri (const CartVect &location, const CartVect *vertices, double tolerance, CartVect &closest_out, int &closest_topo)
 find closest topological 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_box (const CartVect &min, const CartVect &max, const CartVect &point, CartVect &closest)
 
bool moab::GeomUtil::box_point_overlap (const CartVect &box_min_corner, const CartVect &box_max_corner, const CartVect &point, double tolerance)
 
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::nat_coords_trilinear_hex (const CartVect *corner_coords, const CartVect &x, CartVect &xi, double tol)
 
bool moab::GeomUtil::point_in_trilinear_hex (const CartVect *hex, const CartVect &xyz, double etol)
 

Macro Definition Documentation

◆ CHECK_RANGE

#define CHECK_RANGE (   A,
  B,
 
)
Value:
if( ( A ) < ( B ) ) \
{ \
if( ( A ) > ( R ) || ( B ) < -( R ) ) return false; \
} \
else if( ( B ) > ( R ) || ( A ) < -( R ) ) \
return false

Definition at line 408 of file GeomUtil.cpp.

◆ EXIT_EARLY

#define EXIT_EARLY
Value:
if( type ) *type = NONE; \
return false;

Definition at line 176 of file GeomUtil.cpp.