Academia.eduAcademia.edu

A Fast Intersection Detection Algorithm for Qualitative Spatial Reasoning

2013

In this paper we present a framework for determining the intersection of geometric objects based on the 9-Intersection model used in qualitative spatial reasoning. Triangle-triangle intersection is the computational basis for interaction between 2D/3D objects; hence a fast, robust intersection detection algorithm is beneficial. Additionally, we present efficient predicates for classification of the intersections. This work is applicable for most region connection calculi, particularly, VRCC-3D+, which detects intersections in 3D as well as projections in 2D for occlusion detection.

Proceedings of the 2013 International Workshop on Visual Languages and Computing (in conjunction with the 19h International Conference on Distributed Multimedia Systems (DMS’13), Brighton, U.K., Aug. 8-10, pp. 145-149, 2013.   A Fast Intersection Detection Algorithm For Qualitative Spatial Reasoning Chaman L. Sabharwal Computer Science Department Missouri University of S&T Rolla, MO – 65409, USA [email protected] Abstract. In this paper we present a framework for determining the intersection of geometric objects based on the 9-Intersection model used in qualitative spatial reasoning. Triangle-triangle intersection is the computational basis for interaction between 2D/3D objects; hence a fast, robust intersection detection algorithm is beneficial. Additionally, we present efficient predicates for classification of the intersections. This work is applicable for most region connection calculi, particularly, VRCC-3D+, which detects intersections in 3D as well as projections in 2D for occlusion detection. Keywords: Intersection Detection, Predicates, Spatial Reasoning. Classification I. INTRODUCTION Detecting possible intersection between pairs of objects and classifying the type of intersection is important in many areas such as geographic information systems [1], CAD/CAM geometric modeling [2], real-time rendering [3], geology [4], and qualitative spatial reasoning [5]. One of the major tasks in modeling and automated reasoning is to decompose the objects and use relevant data structures for efficient processing. Thus triangulation is the first step in the process of intersection detection. In order to detect intersection between two objects, we do not need to compute the intersection between pairs of objects, but rather detect and classify the intersection between pairs of objects, hence the constituent pairs of triangles. In fact, in all the modeling computations, the triangle-triangle intersections are the integral part. Attempts to speed up the intersection process are still being explored to improve various applications [6, 7]. Brute force pairwise intersection of two objects is very inefficient. The quad tree approach is most effective in partitioning the objects before the actual triangle-triangle intersection takes place. There are several approaches to quad tree construction. Axis Aligned Bounding Boxes (AABB) [8] can be used for pre-processing the objects. The overlap test between two AABBs is far more cost effective than the triangle-triangle intersection test. This approach is Jennifer L. Leopold Computer Science Department Missouri University of S&T Rolla, MO – 65409, USA [email protected] fast, but can be slow in some cases where objects are slim and elongated; they cannot fit some triangles (e.g., longthin oriented triangles) tightly. In such cases, non-axis Oriented Bounding Boxes (OBB) perform more efficiently. The minimal ellipsoids and OBBs provide tight fits. However detecting even the existence of overlap between them is relatively expensive [2, 9]. For some applications it may be beneficial to employ a hybrid approach, Axis-aligned-Oriented Bounding Boxes (AOBB). In this case, the AABB algorithm would be applied to some parts and the OBB algorithm would be applied to other parts of an object selectively. Since there is a large computation cost overhead in such an implementation, this approach has not received much attention; a comprehensive discussion is beyond the scope of this paper. One particular aspect of the larger problem is the decomposition criteria of detecting the leaf nodes in the quad tree, which depends on the application. For example, for the surface/surface intersection algorithm used in CAD/CAM, acceptable surface flatness is the stopping criteria for decomposition [8], whereas in VRCC-3D+ the surface of each object is already triangulated, so a count of triangles is the stopping criteria [in preparation]. This paper is organized as follows: Section II briefly reviews the background and related work. Section III discusses motivation and terminology, and develops the main algorithm for triangle-triangle intersection. Section IV describes predicates for classifying the intersection between pairs of triangles. Section V discusses the applications, and Section VI concludes, followed by references. II. BACKGROUND In QSR, spatial relations between regions are defined axiomatically using first order logic or the 9-Intersection model. Using the latter, spatial relations are defined based on the intersections of the interior, boundary, and exterior of one region with those of a second region. Consequently, the intersection of regions results in the 9-Intersections. In fact it has been shown that it is sufficient to define the spatial relations by computing 4-Intersections, (namely, Interior – Interior (IntInt), Boundary – Boundary (BndBnd), Interior – Boundary (IntBnd), Boundary – Interior (BndInt)) instead of 9-Intersections [10]. We briefly review three approaches for determining intersection detection that are relevant to our discussion herein, starting with Moller’s algorithm [11]. For two triangles T1 and T2, two planes P1 and P2 that support the triangles are determined. Then it is determined whether triangle T1 and plane P2 overlap, and triangle T2 and plane P1 overlap. If all vertices of triangle T1 lie on the same side of plane P2, and no vertex of triangle T1 lies in plane P2, then triangle T1 and plane P2 do not overlap; hence the triangles do not intersect. The same test is repeated for triangle T2 and plane P1. If the two tests succeed, then the algorithm computes the intersection segment S12 of triangle T1 and plane P2, as well as segment S21 of triangle T2 and plane P1. Further, a line-line 3D intersection algorithm is used to test whether the two segments S12 and S21 overlap; see Fig. 1. If they do intersect, the triangles are guaranteed to cross intersect. It should be noted that this algorithm does not address additional questions related to the classification of intersection points, information that would be useful for spatial reasoning. Figure 2. S12 is the intersection T1 and P2, S21 is the intersection of T2 and S12. A third approach [6] differs in its strategy from the previous two algorithms: if the edges of one triangle intersect the surface of the other triangle, it can be concluded that the triangles intersect. In this case, six such intersection tests are performed: three to test triangle ABC against the edges of triangle PQR, and three tests where the roles of ABC and PQR are reversed. This technique solves the six sets of linear equations associated with the problem and exploits the relations between these sets to speed up their solution. Like the other algorithms, it does not answer the related intersection classification questions. Notably, Badouel’s algorithm [1990] uses a vector approach in preference to Cartesian coordinates, yet still performs the same tests as the aforementioned algorithms. Our approach differs from all of the above. These algorithms are not suitable for spatial reasoning where a qualitative answer of yes or no is sufficient instead of quantitative calculation of the intersection segment. At the root of our algorithm is vector analysis, which is in its own way beautiful, elegant, and is the foundation for making the complex calculations simple. III. Figure 1. S12 is the intersection of T1 and P2, S21 is the intersection of T2 and P1; intersection of S12 and S21 is the intersection of T1 and T2. The second approach [12] reviewed here starts out similar to the above approach for solving the triangletriangle intersection problem. If the above preliminary test succeeds, now instead of computing segment S21 of the intersection between triangle T2 and plane P1, the solution is approached slightly differently. It will be determined whether intersection segment S12 of triangle T1 and plane P2 overlap. If segment S12 and triangle T2 overlap, the intersection algorithm succeeds, and the determination is made that the two triangles intersect; see Fig. 2. Unfortunately this approach has the same problems as the previous algorithm for degenerate cases. THE ALGORITHM DESCRIPTION Many papers [11, 12, 13, 14] have concentrated on the fast implementation of similar intersection computation algorithms. In contrast to other approaches, our algorithm relies more on logical tests rather than computational arithmetic tests. Furthermore, our algorithm not only determines whether or not an intersection exists, but also classifies intersections as "degenerate" or "non-degenerate" and characterizes the type of degeneracy. A. TRIANGLE-TRIANGLE CROSS INTERSECTION A.1 Triangles: Representation and Intersection Our algorithm is different from all other algorithms mentioned in the above background section. By judiciously formulating the first step in the algorithm, the second step in those algorithms is not needed in our approach for intersection detection. We start with a vector parametric representation of two triangles, equate the two forms, eliminate calculation for one triangle, and carry our calculations in only one triangle to determine if the two triangles intersect. Cross intersection may be differentiated into seven types: vertex-vertex, vertex-edgeInterior, vertextriangleInterior, edge-edgeCross, edge-edgeCollinear, edge_triangleInterior, triangleInterior_triangleInterior intersection; see Fig. 3. In QSR, these can be used to determine the predicates involving interior, exterior, and boundary intersections (i.e., IntInt, IntBnd, BndInt, BndBnd) that subsequently distinguish the RCC-8 base relations DC, EC, PO, EQ, TPP, TPPc, NTPP, NTPPc [15]. A.2 The Algorithm Step 1 In this section we present the cross intersection algorithm and formulate the intersection detection decision in one step, whereas other algorithms use an additional step before making a decision when an intersection exists. Boolean TriTriCrossInt(tr1 = ABC, tr2 = PQR) Input: two triangles ABC and PQR Output: Boolean value true if there is a cross intersection; otherwise, false value is returned. The equations of planes supporting the triangles ABC and PQR are X = A + uU + vV, where U = B - A, V = C – A, 0 ≤ u, v, u + v ≤ 1 X = P + pL + qM, where L = Q - P, M = R – P, 0 ≤ p, q, p + q ≤ 1 Let N1 and N2 be normals to the surfaces of the triangles. The normals are defined by N1 = UxV, N2 = LxM If the triangles intersect, no matter what the special case may be, the intersection points correspond to some parameter values. We equate the two triangle’s parameterization and solve for the parameters simultaneously. Then parameters u and v; p and q must satisfy the vector equation A + uU + vV=X = P + pL + qM If the triangles cross, then the normals to the triangles cannot be parallel, so N1xN2 ≠ 0. Rearrange the equation to get uU + vV = P - A + pL + qM Since L and M are orthogonal to N2, take the dot product of this equation with N2 to eliminate L and M from the above equation to get uU•N2 + vV•N2 = (P - A)• N2 This is the equation of a line in the uv - plane for real u, v. Using this information, the non-parametric equation of the line is transformed to a parametric vector equation using real parameter t. The vector equation for real parameter t becomes (u, v) = (P - A)•N2 (U•N2 ,V•N2 )/(U•N2 2+V•N2 2) + t (V•N2, - U•N2) Then parameter values u, v are explicitly written as u = (P - A) •N2 U•N2 /( U•N2 2 + V•N2 2) + t V•N2 (1) v =(P - A) •N2 V•N2 /( U•N2 2 + V•N2 2) - t U•N2 (2) From this point on, our approach is different from all the previous algorithms. Now we write another equation u + v = (P - A) •N2 (U•N2 + V•N2 )/( U•N2 2 + V•N2 2) + t(V•N2 - U•N2) (3) and use the barycentric constraint on parameter t. The parametric bound for t satisfying equations (1)-(3) are denoted by tm and tM. The following step of the algorithm shows how the parameter values tm, tM are used to detect whether or not intersection exists instead of actually computing the intersection points as in the previous methods. Also in order to determine a Boolean answer of yes or no for whether intersection exists, we do not need the second test to find the intersection of the second triangle T2 with plane P1 of the first triangle to determine intersection as done in [11], or the intersection of computed segment S12 with the second triangle T2 as seen in [12]. For spatial reasoning, the following algorithm is sufficient and optimally efficient. This algorithm is much faster if a quick rejection test is used at each step while computing tm and tM. No doubt, these tm, tM can be used to obtain the 3D intersection points used in those algorithms. Figure 3. Hierarchy of triangle-triangle cross intersection predicates; coplanar predicates not shown. A.3 The Algorithm Step 2, Triangle-Triangle Intersection Algorithm TriangleTriangleIntersection(tm, tM) if (tm > tM) // no intersection return false, else if (tm < tM) //proper segment intersection return true else (tm == tM) //single point Intersection return true endif endif If there is no intersection, the algorithm may quickly stop at any of the three inequalities resolution. When there is an intersection, the application may need to know the actual intersection. Using these t parameter values for the intersection line constrained to the uv-triangle, we can calculate the (u, v) coordinates for 3D points. The triangle parametric coordinates (um, vm), (uM, vM) corresponding to tm, tM are computed from equations (1)-(3). um = (P – A) •N2 U•N2 /( U•N2 2 + V•N2 2) + tm V•N2 uM = (P – A) •N2 U•N2 /( U•N2 2 + V•N2 2) + tM V•N2 vm = (P – A) •N2 V•N2 /( U•N2 2 + V•N2 2) - tm U•N2 vM = (P – A) •N2 V•N2 /( U•N2 2 + V•N2 ) - tM U•N2 These parameter values (um, vm), (uM, vM) corresponding to the intersection points are determined by tm and tM where tm ≤ tM. Note that there is no such ordering as, tm ≤ tM, on u and v in (um, vm), (uM, vM). For example, (um, vm) = (0.2, 0.3) and (uM, vM) = (0.3, 0.2) correspond to a valid intersection segment, whereas in this case um < uM but vm > vM. From now on we use the symbols Am = (um, vm), AM = (uM, vM). When tm ≤ tM, this guarantees that at least one point of PQR lies on the segment AmAM. This could not be claimed from the previous algorithms even when the first step intersection segment existed. To determine the complete intersection, we similarly calculate pm, pM, qm, qM, Pm, PM for triangle PQR. Now we update them with the common segment as in [11, 12]. Also we update their parametric coordinates with respect to triangles ABC and PQR. So the intersection segment Am to AM becomes Pm to PM or PM to Pm. Note that in all the calculations, we will use the parametric coordinates instead of 3D coordinates as computed and used in other algorithms. When there is no ambiguity, we will continue to use interchangeably Am for (um, vm), AM for (uM, vM), Pm for (pm, qm), and PM for (pM, qM). In QSR, we also need qualitative information about the type of intersection as used in the 9-Intersection model [5]. For this reason, we proceed to the next step to classify the intersection. Remember that the computational part is complete. From now on, unlike other algorithms, we will simply make logical tests on Boolean expressions to categorize the type of intersection. B. Intersection of Co-Planar Triangles Similar to cross intersection, the analysis has been completed for coplanar intersections for pairs of triangles. Due to space consideration, the algorithm, results, and corresponding predicates are not included here. Accordingly, there are predicates for the cases of vertexvertex, vertex-edgeInterior, edge-edgeCollinear, and triangleInterior-triangeInterior intersection. IV. INTERSECTION CLASSIFICATION PREDICATES For completeness, we first define the following predicates relevant to any triangle. For classification of intersection, we apply them to intersections between pairs of triangles and create the integrated composite predicates for use in qualitative spatial reasoning. Let (u, v) and (p, q) refer to the parameter values of 3D points as they relate to each triangle represented parametrically. Here we characterize the triangle in terms of parametric coordinates independent of the 3D positions. No computations or comparisons of 3D points are used. A. Position Predicates The predicates are overloaded with one argument and two arguments; first we describe the predicates with one argument, then use them to categorize predicates with two arguments. The points in a triangle are denoted by X = (u, v), X1 = (u1, v1), and X2 = (u2, v2) with their parametric coordinates. A.1 Position Predicates With One Argument There are four categories of predicates for a point X = (u, v) relative to a triangle. These predicates are defined below as: vertex(X), edge(X), edgeInterior(X), and triangleInterior(X). The point X is a vertex point of the triangle if and only if it is one of the corners of the triangle. vertex(X) = (u, v) == (0, 0) or (u, v) == (1, 0) or (u, v) == (0, 1) The point X is an edge point of the triangle if and only if it lies on an edge of the triangle . edge(X) = (u == 0 and 0 ≤ v ≤ 1) or (v == 0 and 0 ≤ u ≤ 1) or (u ≥ 0 and v ≥ 0 and u + v == 1) A point X is an edgeInterior point if and only if it lies on an edge, but is not a vertex, non-vertex edge point. edgeInterior(X) = (u == 0 and 0 < v < 1) or (v == 0 and 0 < u < 1) or (u > 0 and v > 0 and u + v == 1) A point X is a triangle point if and only if the parameters satisfy the constraints: 0 ≤ u, v, u + v ≤ 1. triangle(X) = ( 0 ≤ u ≤ 1) and (0 ≤ v ≤ 1) and (0 ≤ u + v ≤ 1) A point X is interior point of the triangle if (u, v) is a triangle point, but not an edge point, not a vertex. triangleInterior(X) = (0<u<1) and (0<v<1) and (0<u+v<1) A.2 Position Predicates With Two Arguments For a pair of points, there are seven categories of predicates. These predicates are defined below as: vertex(X1, X2), edge(X1, X2), edgeInterior(X1, X2), edge0Interior(X1, X2), edge1Interior(X1, X2), edge2Interior(X1, X2), and triangleInterior(X1, X2). Two points X1 and X2 are vertices and are the same point of a triangle if and only if (u1, v1)=( u2, v2) and X1 is a vertex. vertex( X1, X2) = X1== X2 and vertex(X1) Two points X1 and X2 with parameter values (u1, v1), (u2, v2) are distinct edge points on the same edge if and only if they have same u coordinates, or same v coordinates, or same u+v values edge( X1, X2 ) = X1 !=X2 and edge(X1) and edge(X2) and (u1==u2==0 or v1==v2==0 or u1+v1 == u2+v2 ==1) Two points X1 and X2 are on the same edge with at least one edgeInterior if and only if they are edge points, and at least one of them is an interior point, edgeInterior( X1, X2) = edge(X1, X2) and (edgeInterior( X1 ) or (edgeInterior( X2)) Two points X1 and X2 such that (1) they lie on the same edge, (2) none is an interior point of the edge are defined as edge0Interior( X1, X2) = edge(X1, X2) and vertex( X1 ) and vertex( X2) Two points X1 and X2 such that (1) they lie on the same edge, (2) exactly one point is interior point of the edge are defined as edge1Interior( X1, X2) = edge(X1, X2) and (edgeInterior(X1) and vertex(X2)) or (vertex (X1) and edgeInterior (X2)) Two points X1 and X2 such that (1) they lie on the same edge, (2) both points are interior points of the edge are defined as edge2Interior( X1, X2) = edge(X1, X2) and edgeInterior( X1 ) and edgeInterior (X2) With parameter values (u1, v1), (u2, v2), the segment X1X2 overlaps with interior of triangle if X1 and X2 are in the same triangle and both do not lie on the same edge. triangleInterior(X1, X2) = triangle(X1) and triangle(X2) and (u1≠u2) and (v1≠v2) and (u1+v1≠ u2+v2)) B. Predicates for Triangle-Triangle Intersection Classification Once it is determined that there is an intersection, we can determine the type of intersection without calculating the 3D intersection points. In order to discover additional knowledge to classify the intersection points, we define predicates as below. Remember that triangle1 is ABC, triangle2 is PQR; Am, AM are intersections in triangle1; Pm, PM are intersection points in triangle2. We have determined that the intersection of triangles results in a segment with points whose parameter coordinates are denoted by Am = (um, vm), AM = (uM, vM) for triangle ABC and Pm =(pm, qm), PM =(pM, qM) for triangle PQR. The intersection may be degenerate (a single point) or non-degenerate (a line segment of positive length). The following seven intersections have the converse counterparts if A and P are interchanged in Am, AM and Pm, PM. In the following predicates, a suffix c is used to represent the converse predicate. B.1 Single Point Intersection, Position Predicates There are four categories of predicates for the case when the triangles intersect in a single point. These predicates are defined below as: vertex_vertex(X), vertex_edgeInterior(X), vertex_triangleInterior(X), and edgeInterior_edgeInteriorCross(X). The intersection is a single point for both the triangles, so it has uv-coordinates as well as pq-coordinates. If (um, vm)=(uM, vM), it is a single point for the uv-plane, and if (pm, qm) =(pM, qM) it is a single point for intersection pq-plane. vertex - vertex Intersection. The triangles intersect at a single point which is a vertex of triangle1 and a vertex of triangle2. vertex_vertex (triangle1, triangle2) = vertex(Am, AM) and vertex (Pm, PM) vertex - edgeInterior Intersection. The triangles intersect at a single point which is a vertex of triangle1 and is interior to an edge of triangle2. vertex_edgeInterior (triangle1, triangle2) = vertex(Am, AM) and edgeInterior(Pm) vertex_edgeInterior_c (triangle1, triangle2) = vertex_edgeInterior (triangle2, triangle1) vertex - triangleInterior Intersection. The intersection point is a vertex of triangle1 and is interior to triangle2, defined as vertex_triangleInterior (triangle1, triangle2) = vertex (Am, AM) and triangleInterior (Pm) vertex_triangleInterior_c (triangle1, triangle2) = vertex_triangleInterior (triangle2, triangle1) edgeInterior - edgeInteriorCross Intersection. In this case, the single point of intersection is at the cross intersection of an edge interior to triangle1 and an edge interior to triangle2. edgeInterior_edgeInteriorCross(triangle1, triangle2) = edgeInterior( Am) and edgeInterior( Pm) B.2 Line Intersection, Segment Predicates If two triangles intersect in a non-degenerate segment, there are three categories of predicates, which are defined below. edgeInterior - edgeInteriorCollinear line Intersection. The intersection is a collinear intersection of the interior of an edge of triangle1 and the interior of an edge of triangle2; hence there is a segment common to the edges of the triangles. In this case edgeedgeCollinear intersection is the same as edgeInterioredgeIneriorCollinear intersection because the length of intersection is positive. edge_edgeCollinear(triangle1, triangle2) = edge(Am, AM) and edge(Pm, PM) edgeInterior_edgeInteriorCollinear(triangle1, triangle2) = edge(Am, AM) and edge(Pm, PM) The intersection is a line segment, a non-degenerate interval which is the intersection of the interior of an edge of triangle1 and the interior of an edge of triangle2. The resulting intersection may be equal edges, overlapping edges, or an edge containing another edge of the triangles (or the converse). Additional tests are required to distinguish the type of edge-edge intersection into a line segment. The intersection is equal to edges of both triangles, EQ(triangle1, triangle2) = edge0Interior(Am, AM) and edge0Interior(Pm, PM) The intersection is equal to an edge of one triangle and a proper part of the edge of the other triangle PP(triangle1, triangle2) = edge(Am, AM) and edge0Interior(Pm, PM) PPc(triangle1, triangle2) = PP(triangle2, triangle1) The intersection is a partial overlap of the edges of both the triangles. PO(triangle1, triangle2) = edge1(Am, AM) and edge1(Pm, PM) and not PP(tr1, tr2) and not PPc(tr1, tr2) edgeInterior - triangleInterior Intersection. If the intersection is along an edge of triangle1 and interior to triangle2, and the edge intersects the interior of a triangle, then it must be that the edgeInterior of triangle1 automatically intersects the interior of triangle2. edge_triangleInterior(triangle1, triangle2) = edge(Am, AM) and triangleInterior(Pm, PM) edge_triangleInterior_c(triangle1, triangle2) = edge_triangleInterior(triangle2, triangle1) triangleInterior - triangleInterior Intersection segment. The intersection segment is along the interior of triangle1 and the interior of triangle2. triangleInterior_triangleInterior(triangle1, triangle2) = triangleInterior(Am, AM) and triangleInterior(Pm, PM) This completes the definitions of predicates for intersection between pairs of triangles. In the next section we will apply these predicates to qualitative spatial reasoning. V. APPLICATIONS AND FUTURE WORK For spatial reasoning, the relations between convex objects in VRCC-3D+ are the RCC-8 base relations: DC, EC, PO, EQ, TPP, TPPc, NTPP, NTPPc [15]. Each relation is in turn defined with 4-Intersection predicates [10]. Each of these predicates is determined from the triangle-triangle intersection predicates defined in Section IV. An AABB tree can be constructed for possible intersection of triangle pairs. Again, for VRCC-3D+, most of the time the entire AABB tree is not necessary for determination of relations, and thus not constructed. As soon as an intersection is found, an intersection predicate (from Section IV) is used to determine the type of 4-Intersection. And as soon as the choice of 4-Intersection predicates is resolved, AABB tree construction is terminated. This results in considerable efficiency in the determination of spatial relations among objects in 3D. In case some predicate is not resolved or all triangle pair intersections are false, the complete tree is used in conjunction with ray-object intersection using the odd parity rule to determine if one object is part of the other object. The worst case cost for intersection detection is given by the equation T= NbxCb + NtxCt where T is the total cost function for intersection detection, Nb is the number of bounding volume pairs overlap tests, Cb is the cost of testing one pair of bounding volumes for overlap, Nt is the number of triangle pairs tested for intersection, and Ct is the cost of testing a pair of triangles for intersection. VI. CONCLUSIONS Herein we presented a new framework for determining and characterizing the intersection of geometric objects based on the 9-Intersection model used in qualitative spatial reasoning. In contrast to other algorithms, our approach relies more on logical tests rather than computational arithmetic tests. Furthermore, our work differs by not only determining whether or not an intersection exists, but also by classifying intersections as "degenerate" or "nondegenerate" and characterizing the type of degeneracy. Currently we are applying these methods to the qualitative spatial reasoning system, VRCC-3D+. We hope these ideas will be useful in other related applications that employ triangle-triangle intersection. VII. REFERENCES [1] M. J. Egenhofer, R.G. Golledge, Spatial and Temporal Reasoning in Geographic Information Systems, Oxford University Press, USA, 1998. [2] Houghton E.G., Emnett R.F., Factor J.D. and Sabharwal C.L., Implementation of A Divide and Conquer Method For Surface Intersections; Computer Aided Geometric Design Vol.2, pp. 173-183, 1985. [3] Oren Tropp, Ayellet Tal, Ilan Shimshoni, A fast triangle to triangle intersection test for collision detection, Computer Animation and Virtual Worlds, Vol17(50, pp.527-535, 2006. [4] Caumon G, Collon-Drouaillet P, Le Carlier de Veslud C, Viseur S, Sausse J (2009) Surface-based 3D modeling of geological structures. Math Geosci 41:927–945, 2009. [5] Max J. Egenhofer, R. Franzosa, Point-Set topological Relations, International Journal of Geographical Information Systems 5(2), pp.161-174, 1991. [6] Ahmed H. Elsheikh, Mustafa Elsheikh, A reliable triangular mesh intersection algorithm and its application in geological modeling, Engineering with Computers, pp.1-15, 2012 [7] N. Eloe, J. Leopold, C. Sabharwal, and Z. Yin, “Efficient Computation of Boundary Intersection and Error Tolerance in VRCC-3D+”, Proceedings of the 18h International Conference on Distributed Multimedia Systems (DMS’12), Miami, FL, Aug. 911, 2012, pp. 67-70. [8] Sabharwal C.L., and Factor J.D., Cross Intersection Between Any Two C0 Parametric Surfaces. Proceedings of The International Australian Computer Graphics Conference, Ausgraph'88, Melbourne, Australia, 1988, 37-42. [9] S. Gottschalk M. C. Lin_ D. Manocha OBBTree: A Hierarchical Structure for Rapid Interference Detection, Proc. of ACM Siggraph'96, pp. 12. [10] C. Sabharwal and J. L. Leopold, “Reducing 9Intersection to 4-Intersection for identifying relations in region connection calculus, ” in The 24th International Conference on Computer Applications in Industry and Engineering, 2011, pp. 118–123. [11] Mo¨ller T. A fast triangle-triangle intersection test. Journal of Graphics Tools, 1997; 2(2): 25–30. [12] Held M. ERIT a collection of efficient and reliable intersection tests. Journal of Graphics Tools 1997; 2(4): 25–44. [13] Badouel Didier, "An Efficient Ray-Polygon Intersection, " Graphics Gems (Andrew S. Glassner, ed.), Academic Press, pp. 390-393, 1990. [14] C. Sabharwal, “Survey of implementations of cross intersection between triangular surfaces, ” MDC Report Q0909 (Now Boeing at St. Louis, MO-USA), 1987. [15] C. Sabharwal, J. Leopold, and N. Eloe, “A more expressive 3D region connection calculus,” in Proceedings of the 2011 International Workshop on Visual Languages and Computing (in conjunction with the 17th International Conference on Distributed Multimedia Systems (DMS’11)), 2011, pp. 307–311.