Efficiently
Computing Intersection Curves of A Plane and A Surface
of Revolution
Computing the planar sections of objects is
a fundamental operation in solid modeling. Subdivision method is commonly used
for solving such intersection problems. In this paper, a novel revolute quadric decomposition is proposed
for surfaces of revolution, which are subdivided into a set of coaxial revolute
quadrics along the generatrix. This reduces the intersection problem of a plane
and a surface of revolution to the intersection problem of a plane and a
revolute quadric, which has robust, accurate and efficient geometric solution.
Further, the intersection curves can be represented with a group of G1 conic arcs. A new
concept, valid intersection interval
(VII), is introduced and a new technique, cylindrical bounding shell clipping, is proposed for efficient
intersection detection for a plane and a surface of revolution. Finally, a
tracing algorithm is presented for recognizing singular points and closed loops
of intersection curves. Implemented examples show the robustness and
effectiveness of the proposed algorithm.
The plane/surface intersection
problem is essential in geometric modeling and can find wide applications in
CAD, CAM, VR and computer graphics, e.g. numerical control machining (milling)
involves intersections of offset surfaces with a series of parallel planes to
create machining paths for ball cutters. Alternatively, in Constructive Solid
Geometry (CSG) modeling applications, planes are usually used to construct new
objects with surfaces altogether that involve the intersection curves of planes
and surfaces for representing their boundaries. Computing plane sections of surfaces is required for
rendering the contours of surfaces, which is very useful in descriptive
geometry, drafting and manufacturing. Developing robust, accurate
and efficient algorithms for surface intersections remains a challenging
task for many years. Surface of revolution is an important member of CSG
library and is frequently used in various applications of CAD/CAM, VR and CG.
It is necessary to develop a robust, accurate and efficient algorithm for
computing plane sections of surfaces of revolution.
In general, there are four approaches to solving surface intersection
problems: subdivision method, algebraic method, lattice method
and tracing method, a good summary can be found in [17]. Subdivision
method is the most robust among them. Basically, subdivision method subdivides
surfaces into quadrilateral/triangular meshes and reduces the surface/surface
intersection problem to the quad/ quad or triangle/triangle intersection
problem. However, it is quite difficult to balance between subdivision density
and precision. If the triangular mesh is subdivided densely for achieving good
approximation quality, it will lead to data proliferation and slow computation;
if meshed sparsely, the resulting intersection curves may miss the tiny loops
and generate incorrect results topologically.
As a possible remedy to the problems, quadric decomposition is proposed
in [5] for rendering purpose; instead of quads or triangles, quadric
decomposition subdivides the surface into piecewise quadric patches. There has
been some existing work [2, 4, 5, 9, 10, 18] on how to construct a G1 triangular quadric net.
However, all of them are for general surfaces, which might not be efficient
when applied to special surfaces, e.g. surfaces of revolution. There should be
more efficient quadric decomposition for these special surfaces. In this paper,
we present a specific revolute quadric decomposition for surfaces of
revolution. Based on the proposed revolute quadric decomposition, a new algorithm
for computing the plane sections of surfaces of revolution is devised
especially.
There are a few previous reports involving
computing the plane sections of surfaces of revolution. Firstly, Kim et al [13]
used algebraic method to give an elegant closed form representation for the
intersection curves of a plane and a surface of revolution; however, it contains
square roots and have to be further approximated by a group of lower-degree
rational curve segments piecewisely, since most CAD systems can only deal with
rational curves and surfaces currently. Moreover, from the given representation,
we cannot directly detect closed loops and singular points of the intersection
curves, recognizing them still requires numerical solutions of high-degree
algebraic equations.
Considering the fact that approximations cannot be avoided during intersection
processing, Baciu et al [1] proposed
a subdivision method for solving this problem, which subdivides a surface of
revolution into a sequence of coaxial truncated cones along its generatrix and
reduces the intersection problem of plane/surface of revolution to the
intersection problem of plane/truncated cones; but it requires too many
truncated cones to approximate surfaces of revolution for good approximation
quality and produces densely G0 piecewise conic arcs as the
final plane section curves of surfaces of revolution, since truncated cone
decomposition is a low-efficient quadric decomposition for surfaces of revolution.
There are three existing decomposition
schemes for solving intersection problem of surfaces of revolution, namely
quad/triangle decomposition [8], circle decomposition [14], truncated cone
decomposition [1] (see Fig. 1). In this paper, we propose a new quadric
decomposition, revolute quadric decomposition, which subdivides a
surface of revolution into a sequence of G1 coaxial revolute
quadrics along its revolute axis and reduces the intersection problem of plane
and surface of revolution to the intersection problem of a plane and revolute
quadrics. It produces much fewer but more smoothly basic fitting elements than
other three existing schemes, and the resulting intersection curves can be
represented by a group of fewer G1 piecewise conic arcs.

(a)
(b)


(c) (d)
Fig 1. Four
decompositions of surfaces of revolution:
(a) quadrilateral decomposition, (b) circle decomposition, (c) truncated cone decomposition, (d) revolute quadric decomposition
Comparing with the two previous methods, our
new method is based on revolute quadric decomposition, it possesses the
following advantages:
·
Fundamentally,
there is a geometric method to compute the plane sections of revolute quadric
robustly, accurately and efficiently.
·
The
final intersection curves can be represented by G1 piecewise
conic arcs; conic arc is a good form for contemporary CAD/CAM systems.
·
Detection
of the closed loops and singular points of the intersection curve becomes very
easy by tracing piecewise conic arcs sequentially along the revolute axis.
A surface of revolution is an envelope of
the generatrix about its axis. So subdividing it into a collection of revolute
quadrics in 3D space is equivalent to subdividing its generatrix into a
collection of coaxial conic
arcs along the axis in 2D space. In this section, we propose two kinds of coaxial
conic interpolator to gneeratrix, G0 single LS coaxial conic
fitting and G1 bi-coaxial conic arc spline, to approximate
the generatrix for revolute quadric decomposition to surfaces of revolution.
A conic section in the xy plane is represented as Ax2
+ By2 + Cxy + Dx + Ey + F = 0 in general. It can be reduced to Ax2 + By2 + Dx + F = 0 by assuming that the revolute axis
is the x-axis, and further to Ax2
+ y2 + Dx + F = 0 by isolating the degenerated case of vertical line B = 0. There are only three freedoms A, D and F; geometrically,
they correspond to two axial radii ra,
rb, and the x-coordinate
Cx of the center of
a conic section. If we assume that the
axis of the surface of revolution is the x-axis, the problem becomes
how to approximate the generatrix optimally with a group of coaxial conic arcs Ci: Aix2 +
y2 + Dix + Fi
= 0.
Many general conic fitting algorithms
were suggested in the literature, which involve how to approximate a curve into
a sequence of general conic arcs, but not coaxial conic arcs. So,
the restriction ‘coaxial’ is too strong for any general conic arc
fitting algorithms to be employable in this special problem. Therefore, it is
necessary to develop a specific coaxial conic arc fitting method for
subdividing the generatrix effectively.
Locally, we construct two kinds of coaxial
conci arc interpolators, (1) single G1 coaxial conic arc
interpolator, and (2) bi-coaxial conic spline. Globally, we fit the generatrix
with coaxial conic spline, by moving G1 coaxial
bi-conic arc interpolator adaptively and sequentially from one endpoint to
the other one. Once a coaxial bi-conic arc to fit the generatrix
is determined by stretching it to the longest, we start the next coaxial
bi-conic arc fitting. This marching coaxial bi-conic arc interpolator
is repeated until the other endpoint of the generatrix is reached.
Coaxial conic arc fitting method consists
of three major steps as follows:
·
[Polygonization] To sample the generatrix into a set of points Pi
and tangent vectors Ti;
·
[Local conic fitting] To
construct a coaxial conic interpolator to fit the generatrix optimally;
·
[Global conic fitting] To move coaxial conic interpolator
along generatrix adaptively and progressively.
3.1. GC0 single coaxial conic fitting
It is worth noting that since our
polygonization is independent of the form of the generatrix, it is applicable
to both parametric and algebraic representations, and even the discrete form.
Each conic arc Cj is
defined on the interval [xm, xn] (0
≤ m ≤ j ≤ n ≤ N) and computed by using the least
square method to estimate Ai,
Di and Fi.
By minimizing the sum of square distance differences of all sampling points and
two interpolation constraints at two endpoints Pm (xm, ym) and Pn (xn, yn),
C0 least square estimation of Ai, Di and Fi is derived as follows:
![]()
to differentiate f
with respect to Ai, Di, Fi,
l1 and l2
respectively,
![]()
![]()
![]()
![]()
![]()
We can obtain Ai, Di, and Fi, by solving the following linear equation system:
Hc = b, (1)
Where
,
,
.
However, H is possibly singular if two given endpoints coincide, that implies, the determinant of H becomes zero if xm = xn. In this case, the equation (1) has
no unique solution. We have two methods to solve this problem: (1) we can restrict each fitting
curve segment to be an open one, because the proposed global coaxial conic
fitting is just a marching procedure, the fitting interval can be controlled
freely by shrinking or stretching it to avoid such closed loop during the conic
fitting; (2) we can calculate the pseudo inverse H+ of H [7],
instead of the real inverse of H,
that is a least square solution to H-1.
3.2. GC1 coaxial
bi-conic splines
A single axial conic arc G1
interpolating two given endpoints and two associate tangential vectors requires
four constraints of two position interpolations and two tangential
interpolations in total, but an axial conic arc has only three freedoms - A, D, and F - and is thus over-constrained for the four constraints. Here, we
propose a coaxial bi-conic arc spline to G1
interpolate two specified endpoints P1
(x1, y1) and P2 (x2, y2) and their associated
tangent vectors T1
(Tx1, Ty1) and T2 (Tx2, Ty2), by using two
coaxial conic arcs, which preserves continuity at their common endpoint Pm (xm, ym), instead of a single
axial conic arc. This idea is inspired by circular
biarc spline. Two coaxial
conic arcs C1: A1x2
+ y2 + D1x + F1 = 0 on the interval [x1, xm], and C2: A2x2 + y2 +
D2x + F2 = 0
on the interval [xm, x2] are used together to fit the generatrix on
the interval [x1,
x2], which provide
six freedoms A1, D1, F1, A2, D2, F2 to solve six
constraintes (by G1 position and tangential interpolation on P1, P2 and Pm) as follows:
·
C1 interpolates at the
endpoint P1;
·
C1 interpolates at tangent
vector T1;
·
C2 interpolates at the
endpoint P2;
·
C2 interpolates at tangent
vector T2;
·
C1 joins
C2 at Pm(xm, ym) with G0
continuity;
·
C1 joins C2 at Pm(xm, ym) with G1 continuity;
Here, Pm is
not asked definitely to lie on the generatrix in order to fit it more flexibly.
Because ym depends on xm, there is only one
constraint xm actually. Six linear equations are formed for estimating
six coefficients A1, D1, F1, A2, D2, F2 of coaxial bi-conic arc interpolator as
follows:

By eliminating ym in the fifth and sixth equations, we obtain the system (2) of linear
equations about xm as
(2)
The coefficients A1, D1, F1, A2, D2, and F2 are expressed below explicitly as functions of the
two end points and their associated tangents, in addition to xm which is the only
unknown variable that is
left as a freedom for the optimal bi-conic fitting. Similar to circular biarc
spline, coaxial bi-conic arc spline also has two types, (1) C-type
coaxial bi-conic arc spline as shown in Fig. 2, it may be composed of
two joining elliptic arcs; and (2) S-type coaxial bi-conic arc spline as shown in Fig. 3, it may be
composed of an elliptic/parabolic arc joining with a coaxial hyperbolic arc together.
Combing the two types of coaxial bi-conic splines can flexibly fit arbitrary
generatrices. Thus, such bi-coaxial
conic arc spline successfully resolves the over-constrained problem faced by
single coaxial conic fitting.
Fig 2. C-type coaxial bi-conic arc spline

Fig 3. S-type coaxial bi-conic arc spline
3.3 Optimal coaxial
bi-conic arc fitting
In the above equation system (2), xm is an unknown variable, apparently, it is a freedom for
optimally fitting the generatrix. As shown in Fig. 4, choosing different
section point xm = x1+ t(x2 -
x1) (0 £ t £ 1) can produce
different approximation effects, the problem is how to find the best t
for the optimal coaxial bi-conic arc fitting. Theoretically, it can be
transformed into a complicated optimization problem as follows:
(3)
where C1(x,
xm) and C2(x,
xm) are the explicit equations of the two coaxial bi-conic arcs,
and G(x) is the explicit
representation of the generatrix.
The optimization problem (3) is rather
complicated usually and cannot be solved easily. Considering that golden section searching is the simplest
optimization method and easy to implement, we choose it to determine the best tm.
Its main idea is to compare the maximum errors e1 and
e2 at two golden points tm = t0
+ 0.382(t1 – t0) and tu =
t0 + 0.618(t1 - t0)
within the interval [0, 1] (initially, t0 = 0.0, t1 = 1.0), and see if em
> eu, then the subinterval [t0, tm]
is thrown away, otherwise the subinterval [tu, t1]
is thrown away. By performing such golden section searching recursively until [tm,
tu] is small enough (less than the specified threshold ε, ε is set as e/10 in our
program, where e is the specified error tolerance), the best tb
is set as (tm + tu)/2, the mid-point of [tm,
tu]. However, such searching may only find a locally optimal
point and miss the global optimal tm when the objective
function is a multimodal one.
To avoid missing the
global optimal point, in each round of compressing the interval [tm, tu], we choose em
= min(e0,
em) and eu
= min(e2,
eu). If em < e0, we set t0 = tm, tm = t0 + 0.382(t1
– t0) and e0 = em. Similarly, if eu < e1, we set t1 = tu, tu = t0 + 0.618(t1
– t0) and e1 = eu. Then we estimate new em and
eu as to new tm and tu, and
keep such compressing the interval [tm, tu]
until finding the best section point xb.

Fig 4. Finding the best xm
by golden ratio searching
3.4. Bisection marching
Under the
specified tolerance d, how to stretch each fitting conic arc along the
generatrix as long as possible for achieving the least number of fitting conic
arcs globally? Adaptive error-driven bisection marching is employed in
our method. Initially, the first conic arc is used to fit the generatrix on [x1,
x2], and then we compare the error measure e with d,
where, e is measured by averaging the maximum horizontal and vertical
distances between the original generatrix and the fitting conic arc. The global
marching idea can be sketched as follows:
Repeat the following
three steps until x = x2:
·
If d = e, end this round of fitting
conic arc and start next round of conic arc fitting from x;
·
If d < e, enlarge x to (x+x2)/2
and redo the conic fitting on the new interval [x1, (x+x2)/2];
·
If d > e, reduce x
to (x1+x)/2 and redo the conic fitting on the new
interval [(x+x1)/2, x].

(1) if d = e, start next bi-conic fitting
(2) if d > e, shrink and refit

(3) if d < e, stretch and refit
Fig 5. Bisection marching bi-conic arc interpolator
3.5
An experimental example
We implemented an example as
shown in Fig. 6 by using linear approximation (truncated cone decomposition), G0 single coaxial conic fitting
and G1 bi-coaxial conic arc fitting (revolute quadric decomposition)
respectively. The performance data in Table 1 shows that the ratio of the
number of the required linear segments and the number of the required conic
arcs become larger and larger when e becomes smaller and smaller. At the
tolerance 10-1, the
number of line segments is 1.75 times of the number of the required conic arcs.
At the tolerance 10-3,
the number of line segments is 3 times of the number of conic arcs. At the tolerance 10-5, the
number of line segments is 6.5 times of the number of the conic arcs. Therefore, revolute quadric decomposition is considerably more
efficient than truncated cone decomposition
for surfaces of revolution. The major computations are analytical, and the
algorithm guarantees that coaxial bi-conic arcs interpolate at the sampling
points and the associated tangent vectors on the generatrix exactly. It is
robust, simple and easy to implement in practice. It should be pointed out that
although the single-revolute-quadric-based decompsition generates less conic
arcs than our bi-revolute-quadrics-based decomposition, it is at the cost of lossing
G1 continuity on the
approximated generatrix, which is usually prohibited in most applications.

Fig 6. Coaxial bi-conic
fitting generatrix with e = 10-2
Table 1. Performance data of three quadric
decompositions, truncated cone (TC) vs.
GC0 single coaxial conic fitting (single RQ) vs. GC1 coaxial bi-conic fitting (Bi-RQ)
|
Tolerance |
10-2 |
10-3 |
10-4 |
10-5 |
10-6 |
10-7 |
|
|
Num.
of fitting conic arcs |
TC |
42 |
134 |
421 |
1329 |
4202 |
13284 |
|
Single RQ |
18 |
34 |
70 |
152 |
325 |
689 |
|
|
Bi-RQ |
30 |
52 |
104 |
212 |
536 |
910 |
|
4. Intersection determination
This section addresses how to take fast
intersection detections. Firstly, cylindrical bounding shell (CBS) is
devised for fast intersection rejection of plane and surfaces of revolution.
Although a surface of revolution is subdivided into many trimming coaxial
revolute quadrics, not all of them have intersection with the cutting plane,
usually, only very few of them have real intersection with the surface of revolution.
Then, a notation, valid intersection intervals (VII), is introduced to
rule out those revolute quadrics that are guaranteed not to intersect the
cutting plane, for which it is unnecessary to perform intersection
computations. Furthermore, cylindrical bounding shell clipping technique
is proposed to efficiently determine VII of a plane intersecting a surface of
revolution.
4.1. Cylindrical bounding shell (CBS)
Bounding
volume is an important technique for efficiently computing surface
intersections. It can help do easy and fast intersection rejections. Two
popular types of bounding volumes are bounding sphere and bounding box; [3] and
[11] propose using bounding cylinder specifically for surfaces of revolution.
In our method, we use cylindrical
bounding shell (CBS) (see Fig. 7(a)) to enclose a surface of revolution both
internally and externally by using the double bounding cylinders, with the
maximum and minimum distances of generatrix to axis as the internal and external
radii respectively. It is based on two considerations:
·
It can enclose a surface of revolution more
tightly than the traditional bounding box, bounding sphere, or a single bounding
cylinder;
· Intersection determination of plane/cylinder (geometric method) is much easier to do than intersection determination of plane/revolute quadric, which can be further reduced to intersection determination of line/rectangle by projection along the cross product of the axial vector and normal vector of the cutting plane, which can be done by using only linear computations.
4.2. Valid intersection intervals (VII)
Valid intersection interval (VII) is defined as a set of axial Z-intervals,
used to find out all the revolute quadrics for valid intersection computations.
We only need to take intersection tests for these revolute quadrics.
Cylindrical bounding shell and valid intersection intervals can combine together
to make rough intersection detection as follows:

(a) (b) (c) (d) (e)
Fig. 7 Valid intersection
intervals VII and cylindrical bounding shell of surfaces of revolution
·
If a plane intersects the exterior bounding
cylinder, then it may either intersect the surface of revolution or not, e.g. in Fig. 7(b), the red plane does not
intersect surface of revolution, but the pink plane traverses the surface of
revolution horizontally and produces a single VII (blue
subintervals);
·
Plane
cuts both bottom or top circles and produces multiple VII, as shown in Fig.
7(c);
·
If a
plane intersects the interior bounding cylinder, then it definitely intersects
the surface of revolution. If the plane cuts interior bounding cylinder at the
top and bottom circles vertically as shown in Fig. 7(d), then the plane
intersects all the subdivided RQs and VII contains all the Z-interval of
generatrix;
·
If a
plane has no intersection with the exterior bounding cylinder as shown in Fig.
7(e), then the plane is impossible to intersect the surface of revolution and
VII becomes an empty set.
4.3.
Cylindrical bounding shell clipping
Determining VII plays an important role on
efficient computing of plane sections of surfaces of revolution. However, computing
VII exactly and directly is a non-trivial task due to the need of solving a
high-degree polynomial equation with numerical solutions. Here, we propose a
simple algorithm to approximate VII by refining the potential intersection
intervals of plane and CBS recursively, it is noted as cylindrical bounding
shell clipping; as a result, it becomes much easier to compute the VII of
the plane and the bounding cylinder. A plane clipping a CBS may form three
types of intersection intervals as follows:
·
Definite intersection intervals Vin
o
Plane clips the interior bounding cylinder.
o
Revolute quadrics within Vin intersect the plane
definitely.
o
Put it into VII.
Null intersection intervals
Vex
·
o
Plane clips the exterior bounding cylinder.
o
The revolute quadrics within Vex definitely do
not intersect the plane.
Potential intersection intervals
Vpo
between Vex and Vin
·
o
The revolute quadrics within Vpo may or may not
intersect the cutting plane.
o
It still needs further clipping CBS (recursive refinement).
Each clipping of CBS produces three kinds of intersection
intervals by the plane clipping interior and exterior bounding cylinders
respectively. The first round of clipping of the initial CBS CBS0
rules out null intersection intervals Vex1 and Vex2, merges definite intersection interval Vin into VII, and produces potential
intersection intervals Vpo1
and Vpo2. In the second round of
clipping, we construct two new cylindrical bounding shells CBS10 and
CBS11 for those revolute quadrics within two potential intersection
intervals Vpo1
and Vpo2 and clip them respectively.
Plane clipping CBS10 produces a definite intersection interval Vin2 and a potential intersection interval Vpo3. Plane clipping CBS11 produces a definite intersection interval
Vin3 and a potential intersection
interval Vpo4. Put two new definite
intersection intervals Vin2
and Vin3 into VII. After the second CBS
clipping, the union of three definite intersection intervals Vin1, Vin2 and Vin3 has approximated the real VII very well. The third
round of CBS clipping can be done on the two new potential intersection
intervals Vpo3
and Vpo4 recursively. So CBS clipping
technique is a good way to estimate VII. The following algorithm1
sketches the above idea. We can end the recursive procedure of
refinement if (i) the potential intervals cannot be shortened in the two
consecutive refinements and (ii) the current potential (purple) intersection intervals only contain less
than 3 revolute quadrics.

Fig 8. Two consecutive cylindrical
bounding shell clippings for intersection searching
Algorithm 1. Computing the valid intersection intervals (VII) of
a plane and a surface of revolution
Proc Search_PR_VII (plane, CBS0)
Input: plane, CBS0;
Output: valid intersection
intervals VII (initially, it is set as nil );
1
{
Iexterior, Iinterior, Ipotential
} = PlaneClipCBS(plane, CBS0)
2
if Iinterior
is not empty
3
VII = VII + { Iinterior };
4
end if;
5
if Ipotential contains less than 2 RQs
6
VII = VII + { Ipotential };
7
return VII;
8
else
9
locate all the RQs
within Ipotential;
10
if the number of RQs within Ipotential decreases
11
form new cylindrical
bounding shells CBS10 and CBS11;
12
Search_PR_VII(plane, CBS10);
13
Search_PR_VII(plane, CBS11);
14
else // CBS clipping cannot shrink
Ipotential
15
return VII;
16
end if;
17
end if;
5.
Computing and tracing plane sections of surfaces of revolution
Basically, computing the intersection curves consists of three integral
parts, (1) computing the intersection curves efficiently, (2) classifying the
intersection curves topologically, and (3) representing the intersection curves
rationally. Because our idea is to subdivide surfaces of revolution into a set
of G1 coaxial revolute quadrics along its generatrix, the
intersection problem of surfaces of revolution is reduced to the intersection
problem of revolute quadrics. For (1), we propose CBS clipping for VII and
employ the fundamental geometric method in [19] to compute the plane sections
of revolute quadric. For (2), we propose a simple algorithm of tracing the
final intersection curves topologically as a group of independent branches and
loops. For (3), the final intersection curves are composed of a group of G1 conic
arcs, which can be represented naturally as piecewise rational Bezier curves or
NURBS curves, two standard forms in CAD/CAM systems. Detailed derivation can be
found in [15].
How to detect the connected components and
singular points of the intersection curves are important issues of boundary
representation in solid modeling. This problem becomes relatively easier when
tracing the intersection curves of plane and surfaces of revolution - it
becomes how to connect those conic arcs into the closed loops and recognize the
singular points during tracing. Here, we present a simple algorithm of tracing
the intersection curves of a plane and a surface of revolution. Basically,
there are three types of the trimming intersection curves (conic arcs) of a
plane and a revolute quadric:
·
Isolated
point. It is a tangential
point of a plane and a revolute quadric, in this case, the algorithm reports
this point as a singular point.
·
Double
branch. In this case, a
plane has two intersection points with each bounding circle respectively (top
and bottom) for a truncated revolute quadric, the resulting intersection curve
becomes a pair of symmetric conic arcs (elliptic, hyperbolic, parabolic, two
separated line segments, two crossing line segments). We concatenate them at
their coincident endpoints along the generatrix sequentially.
·
Single
branch. There are four
cases: (i) a plane has intersection
points with only one bounding circle (top or bottom circle), the resulting
intersection curve is a trimming conic arc; (ii)
a plane has intersection points with neither of the two bounding circles, the
resulting intersection curve is a complete conic section, which itself is a
closed loop; (iii), a plane
has two intersection points with one bounding circle and one intersection
(tangential) point with the other bounding circle. Such single branch begins or
ends a closed loop during tracing; finally, (iv)
when a revolute quadric is a truncated cone, its planar section is a
single line segment, which is a degenerated case of a double-branch and can be
treated as a double-branch during tracing.
The following algorithm outlines the rough idea of tracing these conic
arcs piece by piece along the spine curve sequentially, by checking coincidence
of endpoints of two adjacent conic arcs, and then concatenating them into a set
of connected components one by one.
Algorithm 2. Tracing plane sections of surface of revolution
Proc. Tracing_Sect_RS(plane,RS)
Input: a list of conic arcs CSi (i=1,2, …, n) ;
Output: a list of branches PB, (PBj, j=1,2, …, m);
1. j = 1;
2. for i = 1 to m
3. if PBj is empty
4. insert CSi into the current component PBj;
5. if CSi is a complete conic section
6. close the current component PCj;
7. j++;
8. end if;
9. if CSi is an isolated point
10. close the current component PCj;
11. j++;
12. identify it as the singular point;
13.
end if;
14.
else
15. if CSi is a single or double-touch to current PCj
16. concatenate it into the current branch PCj;
17.
close the current branch PCj;
18. j++;
19.
else
20.
concatenate it into the current branch PCj;
21.
end if;
22.
end if;
23.
end for;
End Proc.
6. Implemented examples
We have implemented the presented revolute quadric decomposition idea and the intersection algorithm and three examples are given here to testify the robustness and efficiency of our algorithm. The first example is a pair of symmetric open branches by a plane intersecting a dumbbell as shown in Fig. 9. The second example is two closed loops by a plane intersecting a bottle as shown in Fig. 10. The third example is three branches by a plane intersecting a chalice as shown in Fig. 11, among them, two are closed loops and one is an open branch. For comparison purpose, we also implemented plane sections of surface of revolution based on truncated cone decomposition.

(1)

(2)
Fig 9. The
Intersection curve of two open branches
(1)

(2)
Fig 10. The
two-loop intersection curves
(1)

(2)
Fig 11. The
intersection curves with one open branch and two loops
Table 2. Comparison on truncated cone and revolute
quadric decomposition at tolerance 10-4
|
Examples |
Truncated cone decomposition |
Revolute quadric decomposition |
||
|
Consumed memory |
Computing time (s) |
Consumed memory |
Computing time (s) |
|
|
Dumbbell |
420 KB |
0.107s |
63.7 KB |
0.039s |
|
Bottle |
436 KB |
0.125s |
72.2 KB |
0.059s |
|
Chalice |
1.2 MB |
0.455s |
258KB |
0.23s |
Table 3. Comparison on the intersection algorithms
based on truncated cone and revolute quadric decomposition at the tolerance 10-4
|
Examples |
Truncated cone decomposition |
Revolute quadric decomposition |
||
|
# of fitting conic arcs |
Intersection time |
# of fitting conic arcs |
Intersection time |
|
|
Dumbbell |
41 |
0.00032s |
14 |
0.0000014s |
|
Bottle |
(13, 9) |
0.005s |
(4, 4) |
0.00062s |
|
chalice |
(66, 10, 27) |
0.04s |
(27, 6, 13) |
0.01s |
From the performance data given in Table 2, the revolute quadric
decomposition based algorithm outperforms truncated cone decomposition based
algorithm in terms of both the CPU time and consumed memory. The tighter the
tolerance, the larger difference in both computing time and consumed memory.
Also, Table 3 shows that, in the computing time and total number of conic arcs
of the intersection curves of a plane and a surface of revolution, revolute
quadric decomposition based algorithm outperforms greatly truncated cone decomposition
based algorithm. Assuming that the total fitting components is N, both the computing time and memory
cost for decompositions are O(N). But, for intersections, the
computing time and memory cost is only O(logN) on average, with the help from CBS
clipping. It is noted that the decomposition time is much more than the
intersection time; however, since the decomposition belongs to preprocessing
stage, it is executed only once, while the intersection operations are
performed frequently and recurrently.
7. Conclusion
Quadric decomposition brings a new
perspective to solving surface intersection problem. It reduces surface intersection
problem to quadric intersection problems. In this paper, we revisit the problem
of plane intersecting surfaces of revolution by proposing using revolute
quadric decomposition for approximating surface of revolution. Implementation
results show that revolute quadric decomposition outperforms truncated cone
decomposition greatly in terms of the computing time, consumed memory, and
total number of the required conic arcs. It also is more convenient to
represent the intersection curves rationally and much easier to trace the
intersection curves for identifying the closed loops and singular points than
the Kim’s method [13]. Since we employ a fundamental geometric method [19] to
compute plane sections of revolute quadrics which is robust, efficient and
accurate, so is our algorithm. Its accuracy can be specified by the precision
of quadric subdivision of surface of revolution in advance. The other
contributions are cylindrical bounding shell and plane clipping CBS technique
which are proposed for valid intersection interval detection.
The presented method of globally fitting a surface of revolution by
revolute quadrics is just a sub-optimal method, developing a true optimal
method becomes our future work. Quadric decomposition also can be applied to
computing the intersection problem of two surfaces of revolution and other
geometric computing problems of surfaces of revolution, e.g. isophot, bisector,
distance computing and so on.
8. References
[1]
Baciu G., Kwok K. W. and Jia J. Y., “An efficient method of computing planar
sections of surfaces of revolution”, Proceedings of CAD & CG, pp.
111-119, Academic Publisher, Kunming, China, 2001.
[2]
Bangert, C. and Prautzsch, H., “Quadric spline”, CAGD, 16(6), pp.
497-515, 1999.
[3] Burger P. and Gillies D., “Rapid Ray Tracing of General Surfaces of Revolution”, New Advances in Computer Graphics, Proceedings of CGI’89, Springer-Verlag
Press, 1989.
[4]
Dahmen W., “Smooth piecewise quadric surfaces”, Mathematical methods in
computer aided geometric design, edited by Lyche T. and Schumaker, L., Academic
Press, pp. 181-194, 1989.
[5]
Froumentin M. and Chaillou C., “Quadric surfaces: a survey with new results”, The
Mathematics of Surfaces VII, pp. 363-381, Edited by Tim Goodman and Ralph
Martin, 1997.
[6]
FU Q. X., “The intersection of a bicubic Bezier patch and a plane”, Computer
Aided Geometric Design, 7(6), pp. 475-488, 1990.
[7] Golub G. H., Loan C. F., “Matrix computations”, Johns Hopkins
University Press, Edition 3, Baltimore, 1996.
[8]
Goldman R. N., “Intersection of parametric surface and a plane”, IEEE
Computer Graphics & Applications, 4 (8), pp. 48-51, 1984.
[9]
Guo B., “Quadric and cubic bitetrahedral patches”, The Visual Computer,
Vol. 7, pp. 253-262, 1991.
[10]
Guo B., “Representation of arbitrary shapes using implicit quadrics”, The
Visual Computer, Vol. 9, pp. 267-277, 1993.
[11] Jia J., “Rapid Ray Tracing Surfaces of Revolution”, Master Thesis of Jilin University, China, 1991.
[12]
Johnstone J. K. and Shene C. K., “Computing the intersection of a plane and a
natural quadric”, Computers & Graphics, 16 (2), pp. 179-186, 1992.
[13]
Kim K. J., Kim M. S., and Martin R., ”Intersecting a translationally or
rotationally swept surface with a plane of a sphere”, Proceeding of
Korea-Israel Bi-National Conference on Geometric Modeling and Computer Graphics,
pp. 165-193, Seoul, Korea, September 30 - October 1, 1999.
[14]
Kim M. S., “Intersecting surfaces of special types”, Proceeding of Shape
Modeling and Processing 99, pp.122-128, Univ. of Aizu, Japan, March 1999.
[15]
Kwok K. W., “Efficient computing intersection curves of surfaces of
revolution”, Master of Philosophy Thesis, Department of Computer Science,
HKUST, May, 2001.
[16]
Miller J. R. and Goldman R. N., “Using tangent ball to find plane sections of
natural quadrics”, IEEE Computer Graphics & Applications, 12(2), pp
68-82, 1992.
[17]
Patrikalakis N. and Maekawa T., “Intersection Problem”, Handbook of Computer
Aided Geometric Design, Farin G., Hoschek J. and Kim M. S. (Eds.),
Elsevier, Amsterdam, 2001.
[18]
Powell, M. J. D. and Sabin M. A., “Piecewise quadratic approximations on
triangles”, ACM Transaction on Mathematical Software, Vol. 3, pp.
316-325, 1977
[19]
Shene C. K. and Johnstone J. K., “Computing the intersection of a plane and a
revolute quadric”, Computers & Graphics, 18 (1), pp. 47-60, 1994.
[20]
Zheng J. L. and Millham C. B., “A linear pivoting method for detecting and
tracing planar section curves of free form surfaces”, Computer &
Graphics, 16(4), pp. 411-420, 1992.