33 #ifndef __H__UG__LIB_DISC__COMMON__GEOMETRY_UTIL__
34 #define __H__UG__LIB_DISC__COMMON__GEOMETRY_UTIL__
49 template <
typename TRefElem,
int TWorldDim>
69 return VecDistance(vCornerCoords[0], vCornerCoords[1]);
83 return VecDistance(vCornerCoords[0], vCornerCoords[1]);
97 return VecDistance(vCornerCoords[0], vCornerCoords[1]);
120 return(0.5*fabs((vCornerCoords[1][1]-vCornerCoords[0][1])*(vCornerCoords[2][0]-vCornerCoords[0][0])
121 -(vCornerCoords[1][0]-vCornerCoords[0][0])*(vCornerCoords[2][1]-vCornerCoords[0][1])));
139 VecSubtract(x10, vCornerCoords[1], vCornerCoords[0]);
140 VecSubtract(x20, vCornerCoords[2], vCornerCoords[0]);
159 return( 0.5*fabs( (vCornerCoords[3][1]-vCornerCoords[1][1])*(vCornerCoords[2][0]-vCornerCoords[0][0])
160 -(vCornerCoords[3][0]-vCornerCoords[1][0])*(vCornerCoords[2][1]-vCornerCoords[0][1]) ) );
180 VecSubtract(x20, vCornerCoords[2], vCornerCoords[0]);
181 VecSubtract(x31, vCornerCoords[3], vCornerCoords[1]);
213 VecSubtract(x10, vCornerCoords[1], vCornerCoords[0]);
214 VecSubtract(x20, vCornerCoords[2], vCornerCoords[0]);
215 VecSubtract(x30, vCornerCoords[3], vCornerCoords[0]);
218 return (1./6.) * fabs (
VecDot(n, x30) );
239 VecSubtract(x20, vCornerCoords[2], vCornerCoords[0]);
240 VecSubtract(x31, vCornerCoords[3], vCornerCoords[1]);
241 VecSubtract(x40, vCornerCoords[4], vCornerCoords[0]);
244 return (1./6.) *
VecDot(n, x40);
264 VecSubtract(x40, vCornerCoords[4], vCornerCoords[0]);
265 VecSubtract(x13, vCornerCoords[1], vCornerCoords[3]);
266 VecSubtract(x10, vCornerCoords[1], vCornerCoords[0]);
267 VecSubtract(x20, vCornerCoords[2], vCornerCoords[0]);
270 VecSubtract(x50, vCornerCoords[5], vCornerCoords[0]);
278 return (1./6.) *
VecDot(n, x50);
301 VecSubtract(x50, vCornerCoords[5], vCornerCoords[0]);
302 VecSubtract(x14, vCornerCoords[1], vCornerCoords[4]);
303 VecSubtract(x10, vCornerCoords[1], vCornerCoords[0]);
304 VecSubtract(x20, vCornerCoords[2], vCornerCoords[0]);
305 VecSubtract(x60, vCornerCoords[6], vCornerCoords[0]);
315 VecSubtract(x24, vCornerCoords[2], vCornerCoords[4]);
317 VecSubtract(x30, vCornerCoords[3], vCornerCoords[0]);
318 VecSubtract(x70, vCornerCoords[7], vCornerCoords[0]);
350 VecSubtract(x31, vCornerCoords[3], vCornerCoords[1]);
351 VecSubtract(x42, vCornerCoords[4], vCornerCoords[2]);
352 VecSubtract(x51, vCornerCoords[5], vCornerCoords[1]);
357 VecSubtract(x01, vCornerCoords[0], vCornerCoords[1]);
363 return volTopPyr + volBottomPyr;
380 default:
UG_THROW(
"ReferenceObject "<<roid<<
" not found in dim 1.");
393 default:
UG_THROW(
"ReferenceObject "<<roid<<
" not found in dim 2.");
411 default:
UG_THROW(
"ReferenceObject "<<roid<<
" not found in dim 3.");
423 template <
typename TRefElem,
int TWorldDim>
458 normalOut = vCornerCoords[0];
459 normalOut -= vCornerCoords[1];
462 UG_CATCH_THROW(
"Element normal can not be computed. Maybe there are not enough vertices to work on.")
482 normalOut = vCornerCoords[0];
483 normalOut -= vCornerCoords[1];
486 UG_CATCH_THROW(
"Element normal can not be computed. Maybe there are not enough vertices to work on.")
503 diff -= vCornerCoords[0];
505 normalOut[0] = diff[1];
506 normalOut[1] = -diff[0];
530 VecSubtract(edge0, vCornerCoords[1], vCornerCoords[0]);
531 VecSubtract(edge1, vCornerCoords[2], vCornerCoords[1]);
534 VecCross(normalOut, edge0, normalOut);
539 UG_CATCH_THROW(
"Element normal can not be computed. Maybe there are not enough vertices to work on.")
559 VecSubtract(a, vCornerCoords[1], vCornerCoords[0]);
560 VecSubtract(b, vCornerCoords[2], vCornerCoords[0]);
562 VecScale(normalOut, normalOut, 0.5);
582 VecSubtract(a, vCornerCoords[2], vCornerCoords[0]);
583 VecSubtract(b, vCornerCoords[3], vCornerCoords[1]);
585 VecScale(normalOut, normalOut, 0.5);
601 default:
UG_THROW(
"ReferenceObject "<<roid<<
" not found in dim 1.");
612 default:
UG_THROW(
"ReferenceObject "<<roid<<
" not found in dim 2.");
625 default:
UG_THROW(
"ReferenceObject "<<roid<<
" not found in dim 3.");
641 template <
typename TRefElem,
int TWorldDim>
653 size_t numSideCorners = rRefElem.num(
dim-1, side, 0);
654 for (
size_t co = 0; co < numSideCorners; ++co)
655 vSideCorner[co] = vCornerCoords[rRefElem.id(
dim-1, side, 0, co)];
659 if (
dim != TWorldDim)
661 vSideCorner[numSideCorners] =
662 vCornerCoords[rRefElem.id(
dim-1, (side+1)%rRefElem.num(
dim-1), 0,
663 rRefElem.num(
dim-1, (side+1)%rRefElem.num(
dim-1), 0)-1)];
667 ElementNormal<TWorldDim>(sideRoid, normalOut, vSideCorner);
681 case ROID_EDGE: SideNormal<ReferenceEdge,1>(normalOut, side, vCornerCoords);
return;
682 default:
UG_THROW(
"ReferenceObject "<<roid<<
" not found in dim 1.");
691 case ROID_EDGE: SideNormal<ReferenceEdge,2>(normalOut, side, vCornerCoords);
return;
692 case ROID_TRIANGLE: SideNormal<ReferenceTriangle,2>(normalOut, side, vCornerCoords);
return;
693 case ROID_QUADRILATERAL: SideNormal<ReferenceQuadrilateral,2>(normalOut, side, vCornerCoords);
return;
694 default:
UG_THROW(
"ReferenceObject "<<roid<<
" not found in dim 2.");
703 case ROID_EDGE: SideNormal<ReferenceEdge,3>(normalOut, side, vCornerCoords);
return;
704 case ROID_TRIANGLE: SideNormal<ReferenceTriangle,3>(normalOut, side, vCornerCoords);
return;
705 case ROID_QUADRILATERAL: SideNormal<ReferenceQuadrilateral,3>(normalOut, side, vCornerCoords);
return;
706 case ROID_TETRAHEDRON: SideNormal<ReferenceTetrahedron,3>(normalOut, side, vCornerCoords);
return;
707 case ROID_PYRAMID: SideNormal<ReferencePyramid,3>(normalOut, side, vCornerCoords);
return;
708 case ROID_PRISM: SideNormal<ReferencePrism,3>(normalOut, side, vCornerCoords);
return;
709 case ROID_HEXAHEDRON: SideNormal<ReferenceHexahedron,3>(normalOut, side, vCornerCoords);
return;
710 case ROID_OCTAHEDRON: SideNormal<ReferenceOctahedron,3>(normalOut, side, vCornerCoords);
return;
711 default:
UG_THROW(
"ReferenceObject "<<roid<<
" not found in dim 3.");
722 template <
typename TRefElem,
int TWorldDim,
int TRefDim = TRefElem::dim>
737 template <
typename TRefElem>
753 size_t p0 = 0, p1 = 0;
756 for(sideOut = 0; sideOut < rRefElem.num(
dim-1); ++sideOut)
759 p0 = rRefElem.id(
dim-1, sideOut, 0, 0);
760 p1 = rRefElem.id(
dim-1, sideOut, 0, 1);
764 vCornerCoords[p0], vCornerCoords[p1],
767 if(bPositiv && t >= 0.0)
break;
768 else if(!bPositiv && t <= 0.0)
break;
772 if(sideOut >= rRefElem.num(
dim-1))
773 UG_THROW(
"ElementSideRayIntersection: no cut side found.");
776 VecScaleAdd(LocalIntersectionPoint, bc, rRefElem.corner(p1), 1.-bc, rRefElem.corner(p0));
784 template <
typename TRefElem>
799 number bc0 = 0., bc1 = 0., t = 0.;
800 size_t p0 = 0, p1 = 0, p2 = 0;
803 for(sideOut = 0; sideOut < rRefElem.num(
dim-1); ++sideOut)
806 p0 = rRefElem.id(
dim-1, sideOut, 0, 0);
807 p1 = rRefElem.id(
dim-1, sideOut, 0, 1);
808 p2 = rRefElem.id(
dim-1, sideOut, 0, 2);
812 vCornerCoords[p0], vCornerCoords[p1], vCornerCoords[p2],
815 if(bPositiv && t >= 0.0)
break;
816 else if(!bPositiv && t <= 0.0)
break;
820 if(rRefElem.num(
dim-1, sideOut, 0) == 3)
continue;
823 p1 = rRefElem.id(
dim-1, sideOut, 0, 3);
827 vCornerCoords[p0], vCornerCoords[p1], vCornerCoords[p2],
830 if(bPositiv && t >= 0.0)
break;
831 else if(!bPositiv && t <= 0.0)
break;
836 if(sideOut >= rRefElem.num(
dim-1))
837 UG_THROW(
"ElementSideRayIntersection: no cut side found.");
841 (1.-bc0-bc1), rRefElem.corner(p0),
842 bc0, rRefElem.corner(p1),
843 bc1, rRefElem.corner(p2));
869 template <
typename TRefElem,
int TWorldDim>
878 apply(sideOut, GlobalIntersectionPointOut, LocalIntersectionPoint,
879 From, Direction, bPositiv, vCornerCoords);
890 template <
int TDim,
int TWorldDim>
917 static const int dim = 2;
922 size_t p0 = 0, p1 = 0;
925 for(sideOut = 0; sideOut < rRefElem.
num(0); ++sideOut)
928 p0 = rRefElem.
id(
dim-1, sideOut, 0, 0);
929 p1 = rRefElem.
id(
dim-1, sideOut, 0, 1);
933 vCornerCoords[p0], vCornerCoords[p1],
937 if(fabs(t) <= std::numeric_limits<number>::epsilon() * 10)
941 if(bPositiv && t >= 0.0)
break;
942 else if(!bPositiv && t <= 0.0)
break;
947 if(sideOut >= rRefElem.
num(0))
955 if(sideOut == 1) bc = 1. - bc;
958 if(sideOut == 1 || sideOut == 2)
return true;
986 template <
int TDim,
int TWorldDim>
995 apply(sideOut, bc, GlobalIntersectionPointOut, LocalIntersectionPoint,
996 Root, Direction, bPositiv, vCornerCoords);
1006 template <
typename TVector>
1009 VecElemProd(ext, vCornerCoords[0], vCornerCoords[1]);
1013 template <
int TWorldDim,
int ncorners>
1018 for (
int i=ncorners-1; i>=0; --i){
1026 for (
int i=ncorners-1; i>=0; --i){
1049 default:
UG_THROW(
"ReferenceObject "<<roid<<
" not found in dim 1.");
1060 case ROID_TRIANGLE: ComputeElementExtensionsSq<2,3>(vCornerCoords,ext);
return;
1062 default:
UG_THROW(
"ReferenceObject "<<roid<<
" not found in dim 2.");
1073 case ROID_TRIANGLE: ComputeElementExtensionsSq<3,3>(vCornerCoords,ext);
return;
1075 case ROID_TETRAHEDRON: ComputeElementExtensionsSq<3,4>(vCornerCoords,ext);
return;
1076 case ROID_PYRAMID: ComputeElementExtensionsSq<3,5>(vCornerCoords,ext);
return;
1077 case ROID_PRISM: ComputeElementExtensionsSq<3,6>(vCornerCoords,ext);
return;
1078 case ROID_HEXAHEDRON: ComputeElementExtensionsSq<3,8>(vCornerCoords,ext);
return;
1079 case ROID_OCTAHEDRON: ComputeElementExtensionsSq<3,6>(vCornerCoords,ext);
return;
1080 default:
UG_THROW(
"ReferenceObject "<<roid<<
" not found in dim 3.");
const MathVector< dim > & corner(size_t i) const
coordinates of reference corner (i = 0 ... num(0))
Definition: reference_element.h:192
a mathematical Vector with N entries.
Definition: math_vector.h:97
static TClass & get()
returns a singleton based on the identifier
Definition: provider.h:54
size_t num(int dim) const
returns the number of geometric objects of dim
Definition: reference_element.h:95
ReferenceObjectID roid() const
returns the reference object id
Definition: reference_element.h:76
int id(int dim_i, size_t i, int dim_j, size_t j) const
id of object j in dimension dim_j of obj i in dimension dim_i
Definition: reference_element.h:127
static const DimReferenceElement< dim > & get(ReferenceObjectID roid)
returns a dimension dependent Reference Element
Definition: reference_element.h:280
Definition: reference_element.h:445
Class for computing integral properties of geometric objects types in lists.
Definition: element_list_traits.h:60
#define UG_ASSERT(expr, msg)
Definition: assert.h:70
#define UG_CATCH_THROW(msg)
Definition: error.h:64
#define UG_THROW(msg)
Definition: error.h:57
double number
Definition: types.h:124
bool RayLineIntersection2d(vector_t &vOut, number &bcOut, number &tOut, const vector_t &p0, const vector_t &p1, const vector_t &vFrom, const vector_t &vDir, number sml=0)
calculates the intersection of a ray with a Line in 2d
Definition: math_util_impl.hpp:428
bool RayTriangleIntersection(vector_t &vOut, number &bc1Out, number &bc2Out, number &tOut, const vector_t &p0, const vector_t &p1, const vector_t &p2, const vector_t &vFrom, const vector_t &vDir, const number small=SMALL)
calculates the intersection of a ray with a triangle
Definition: math_util_impl.hpp:506
void VecScaleAdd(vector_t &vOut, typename vector_t::value_type s1, const vector_t &v1, typename vector_t::value_type s2, const vector_t &v2)
Scales two Vectors, adds them and returns the sum in a third vector.
Definition: math_vector_functions_common_impl.hpp:265
void VecNormalize(vector_t &vOut, const vector_t &v)
scales a vector_t to unit length
Definition: math_vector_functions_common_impl.hpp:501
void VecSubtract(vector_t &vOut, const vector_t &v1, const vector_t &v2)
subtracts v2 from v1 and stores the result in a vOut
Definition: math_vector_functions_common_impl.hpp:226
void VecAppend(vector_t &vOut, const vector_t &v1)
adds a MathVector<N> to a second one
Definition: math_vector_functions_common_impl.hpp:72
vector_t::value_type VecDistance(const vector_t &v1, const vector_t &v2)
returns the distance of two vector_ts.
Definition: math_vector_functions_common_impl.hpp:375
void VecScale(vector_t &vOut, const vector_t &v, typename vector_t::value_type s)
scales a MathVector<N>
Definition: math_vector_functions_common_impl.hpp:252
vector_t::value_type VecTwoNorm(const vector_t &v)
Definition: math_vector_functions_common_impl.hpp:577
void VecCross(vector_t &vOut, const vector_t &v1, const vector_t &v2)
calculates the cross product of two Vectors of dimension 3. It makes no sense to use VecCross for vec...
Definition: math_vector_functions_common_impl.hpp:437
vector_t::value_type VecDot(const vector_t &v1, const vector_t &v2)
returns the dot-product of two vector_ts
Definition: math_vector_functions_common_impl.hpp:385
void SideNormal< 1 >(ReferenceObjectID roid, MathVector< 1 > &normalOut, int side, const MathVector< 1 > *vCornerCoords)
Definition: geometry_util.h:677
number ElementSize< ReferenceQuadrilateral, 3 >(const MathVector< 3 > *vCornerCoords)
Volume of a Quadrilateral in 3d.
Definition: geometry_util.h:176
void SideNormal(MathVector< TWorldDim > &normalOut, int side, const MathVector< TWorldDim > *vCornerCoords)
Normal to a side of an Element in a given Dimension.
Definition: geometry_util.h:642
ReferenceObjectID
these ids are used to identify the shape of a geometric object.
Definition: grid_base_objects.h:74
@ ROID_TETRAHEDRON
Definition: grid_base_objects.h:80
@ ROID_QUADRILATERAL
Definition: grid_base_objects.h:79
@ ROID_PYRAMID
Definition: grid_base_objects.h:83
@ ROID_PRISM
Definition: grid_base_objects.h:82
@ ROID_EDGE
Definition: grid_base_objects.h:77
@ ROID_OCTAHEDRON
Definition: grid_base_objects.h:84
@ ROID_HEXAHEDRON
Definition: grid_base_objects.h:81
@ ROID_TRIANGLE
Definition: grid_base_objects.h:78
@ ROID_VERTEX
Definition: grid_base_objects.h:76
void ElementNormal< 1 >(ReferenceObjectID roid, MathVector< 1 > &normalOut, const MathVector< 1 > *vCornerCoords)
Definition: geometry_util.h:596
number ElementSize< 1 >(ReferenceObjectID roid, const MathVector< 1 > *vCornerCoords)
Definition: geometry_util.h:374
number ElementSize< 3 >(ReferenceObjectID roid, const MathVector< 3 > *vCornerCoords)
Definition: geometry_util.h:398
void ElementNormal< ReferenceQuadrilateral, 3 >(MathVector< 3 > &normalOut, const MathVector< 3 > *vCornerCoords)
Normal to a Quadrilateral in 3d.
Definition: geometry_util.h:579
number ElementSize< ReferencePyramid, 3 >(const MathVector< 3 > *vCornerCoords)
Volume of a Pyramid in 3d.
Definition: geometry_util.h:235
number ElementSize< ReferenceEdge, 1 >(const MathVector< 1 > *vCornerCoords)
Volume of a Line in 1d.
Definition: geometry_util.h:67
number ElementSize< ReferenceTetrahedron, 3 >(const MathVector< 3 > *vCornerCoords)
Volume of a Tetrahedron in 3d.
Definition: geometry_util.h:209
void ElementNormal(MathVector< TWorldDim > &normalOut, const MathVector< TWorldDim > *vCornerCoords)
Normal to an Element in a given Dimension.
void ElementNormal< ReferenceTriangle, 3 >(MathVector< 3 > &normalOut, const MathVector< 3 > *vCornerCoords)
Normal to a Triangle in 3d.
Definition: geometry_util.h:556
void SideNormal< 3 >(ReferenceObjectID roid, MathVector< 3 > &normalOut, int side, const MathVector< 3 > *vCornerCoords)
Definition: geometry_util.h:699
number ElementSize< ReferenceEdge, 2 >(const MathVector< 2 > *vCornerCoords)
Volume of a Line in 2d.
Definition: geometry_util.h:81
number ElementSize< 2 >(ReferenceObjectID roid, const MathVector< 2 > *vCornerCoords)
Definition: geometry_util.h:385
void ElementNormal< 3 >(ReferenceObjectID roid, MathVector< 3 > &normalOut, const MathVector< 3 > *vCornerCoords)
Definition: geometry_util.h:617
number ElementSize< ReferenceOctahedron, 3 >(const MathVector< 3 > *vCornerCoords)
Volume of an Octahedron in 3d.
Definition: geometry_util.h:345
void ComputeElementExtensionsSq(const MathVector< TWorldDim > *vCornerCoords, MathVector< TWorldDim > &ext)
Definition: geometry_util.h:1014
number ElementSize< ReferenceTriangle, 2 >(const MathVector< 2 > *vCornerCoords)
Volume of a Triangle in 2d.
Definition: geometry_util.h:118
bool SCVFofSCVRayIntersection(size_t &sideOut, number &bc, MathVector< TWorldDim > &GlobalIntersectionPointOut, MathVector< TDim > &LocalIntersectionPoint, const MathVector< TWorldDim > &Root, const MathVector< TWorldDim > &Direction, bool bPositiv, const MathVector< TWorldDim > *vCornerCoords)
Definition: geometry_util.h:987
void ElementExtensionsSq< 1 >(ReferenceObjectID roid, MathVector< 1 > &ext, const MathVector< 1 > *vCornerCoords)
Definition: geometry_util.h:1043
void ElementNormal< ReferenceEdge, 2 >(MathVector< 2 > &normalOut, const MathVector< 2 > *vCornerCoords)
Normal to a Line in 2d.
Definition: geometry_util.h:500
void ElementExtensionsSq(ReferenceObjectID roid, MathVector< dim > &ext, const MathVector< dim > *vCornerCoords)
number ElementSize< ReferenceHexahedron, 3 >(const MathVector< 3 > *vCornerCoords)
Volume of a Hexahedron in 3d.
Definition: geometry_util.h:295
number ElementSize< ReferenceTriangle, 3 >(const MathVector< 3 > *vCornerCoords)
Volume of a Triangle in 3d.
Definition: geometry_util.h:135
void ElementNormal< ReferenceEdge, 3 >(MathVector< 3 > &normalOut, const MathVector< 3 > *vCornerCoords)
Normal to a Line in 3d.
Definition: geometry_util.h:524
void ElementNormal< ReferenceVertex, 2 >(MathVector< 2 > &normalOut, const MathVector< 2 > *vCornerCoords)
Normal to a Point in 2d.
Definition: geometry_util.h:454
number ElementSize< ReferencePrism, 3 >(const MathVector< 3 > *vCornerCoords)
Volume of a Prism in 3d.
Definition: geometry_util.h:260
void ElementNormal< ReferenceVertex, 1 >(MathVector< 1 > &normalOut, const MathVector< 1 > *vCornerCoords)
Normal to a Point in 1d.
Definition: geometry_util.h:436
number ElementSize< ReferenceQuadrilateral, 2 >(const MathVector< 2 > *vCornerCoords)
Volume of a Quadrilateral in 2d.
Definition: geometry_util.h:157
number ElementSize< ReferenceEdge, 3 >(const MathVector< 3 > *vCornerCoords)
Volume of a Line in 3d.
Definition: geometry_util.h:95
void ElementNormal< ReferenceVertex, 3 >(MathVector< 3 > &normalOut, const MathVector< 3 > *vCornerCoords)
Normal to a Point in 3d.
Definition: geometry_util.h:478
void SideNormal< 2 >(ReferenceObjectID roid, MathVector< 2 > &normalOut, int side, const MathVector< 2 > *vCornerCoords)
Definition: geometry_util.h:687
void ElementExtensionsSq< 3 >(ReferenceObjectID roid, MathVector< 3 > &ext, const MathVector< 3 > *vCornerCoords)
Definition: geometry_util.h:1067
void ComputeElementExtensionsSqForEdges(const TVector *vCornerCoords, TVector &ext)
Extension of an element (in a given dimension)
Definition: geometry_util.h:1007
void VecElemProd(vector_t &vOut, const vector_t &v1, const vector_t &v2)
component-wise product: vOut_i = v1_i*v2_i
Definition: math_vector_functions_common_impl.hpp:651
void ElementNormal< 2 >(ReferenceObjectID roid, MathVector< 2 > &normalOut, const MathVector< 2 > *vCornerCoords)
Definition: geometry_util.h:606
bool ElementSideRayIntersection(size_t &sideOut, MathVector< TWorldDim > &GlobalIntersectionPointOut, MathVector< TRefElem::dim > &LocalIntersectionPoint, const MathVector< TWorldDim > &From, const MathVector< TWorldDim > &Direction, bool bPositiv, const MathVector< TWorldDim > *vCornerCoords)
ElementSideRayIntersection.
Definition: geometry_util.h:870
void ElementExtensionsSq< 2 >(ReferenceObjectID roid, MathVector< 2 > &ext, const MathVector< 2 > *vCornerCoords)
Definition: geometry_util.h:1054
number ElementSize(const MathVector< TWorldDim > *vCornerCoords)
Volume of an Element in a given Dimension.
static bool apply(size_t &sideOut, MathVector< 2 > &GlobalIntersectionPointOut, MathVector< TRefElem::dim > &LocalIntersectionPoint, const MathVector< 2 > &From, const MathVector< 2 > &Direction, bool bPositiv, const MathVector< 2 > *vCornerCoords)
Definition: geometry_util.h:740
static bool apply(size_t &sideOut, MathVector< 3 > &GlobalIntersectionPointOut, MathVector< TRefElem::dim > &LocalIntersectionPoint, const MathVector< 3 > &From, const MathVector< 3 > &Direction, bool bPositiv, const MathVector< 3 > *vCornerCoords)
Definition: geometry_util.h:787
Definition: geometry_util.h:724
static bool apply(size_t &sideOut, MathVector< TWorldDim > &GlobalIntersectionPointOut, MathVector< TRefElem::dim > &LocalIntersectionPoint, const MathVector< TWorldDim > &From, const MathVector< TWorldDim > &Direction, bool bPositiv, const MathVector< TWorldDim > *vCornerCoords)
Definition: geometry_util.h:725
static bool apply(size_t &sideOut, number &bc, MathVector< 2 > &GlobalIntersectionPointOut, MathVector< 2 > &LocalIntersectionPoint, const MathVector< 2 > &From, const MathVector< 2 > &Direction, bool bPositiv, const MathVector< 2 > *vCornerCoords)
Definition: geometry_util.h:908
Definition: geometry_util.h:892
static bool apply(size_t &sideOut, number &bc, MathVector< TWorldDim > &GlobalIntersectionPointOut, MathVector< TDim > &LocalIntersectionPoint, const MathVector< TWorldDim > &From, const MathVector< TWorldDim > &Direction, bool bPositiv, const MathVector< TWorldDim > *vCornerCoords)
Definition: geometry_util.h:893
Definition: domain_traits.h:53