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.