on alternate methods for detecting anomalies such as
self-intersections and singularities. Also, although the
method can sample an arbitrary number of points on
the surface, ray casting cannot infer the topology of
the surface without using a point cloud surface con-
struction algorithm (Wang et al., 2005).
There exists another class of approximating alge-
braic surfaces using piecewise parametric surfaces.
Bajaj and Xu propose one such technique (Bajaj and
Xu, 1997), with parametric surface patches being
grown around pre-computed seed singularities. This
method provides the advantage of generating a para-
metric representation of the surface (as opposed to
a piecewise linear approximation) of the surface, al-
though the process involved requires several major
steps, including computation of the singularities, di-
rect triangulation, and fitting parametric patches over
the triangulation. On the other hand, Jepp, van
Overveld, Wyvill, and Wyvill (Wyvill et al., 2000)
propose a method combining marching cubes with
subdivision surfaces to approximate an implicit sur-
face. This method is capable of generating approxi-
mations at real-time speeds, but the accuracy of the
surface in relation to the defined algebraic surface is
sacrificed as a result.
1.2 Previous Work
The concept of the trivariate Bernstein-B
´
ezier basis
representation within a tetrahedral volume is not new.
Sederberg (Sederberg, 1985) defines such a structure,
which he calls an algebraic surface patch, as a tool
for modeling free form algebraic surfaces due to its
ability to define a wide variety of surfaces with a
low degree compared to parametric surfaces and since
they inherently define half-spaces, which is useful for
modeling solid geometry. Bajaj (Bajaj and Ihm, 1992)
proposed using A-patches for fitting surface data and
later (Bajaj et al., 1995) proposed a method of build-
ing models using piecewise A-patches. Specifically,
a set of A-patches is used to construct models that
are C
1
continuous and match the topology of the orig-
inal model specification. A-patches were also pro-
posed for constructing algebraic surfaces (Bajaj and
Xu, 1997), although unlike the method presented here
it uses the patches as spline surfaces that approximate
the algebraic surface as opposed to using A-patch
properties to compute points on the surface.
The use of subdivision algorithms for tessellating
algebraic surfaces is not a recent phenomenon, with
Bloomenthal (Bloomenthal, 1988) proposing a tes-
sellation method that relies on repeated subdivision
of a domain space and surface-line intersection eval-
uation. Further, more recent work on subdivision-
style polygonalization algorithms have been pursued
by Belyaev and Ohtake (Ohtake and Belyaev, 2002)
on implicit surfaces with sharp features. Unlike pre-
vious subdivision methods, our A-patch scheme relies
on the tetrahedron as opposed to the cube as a unit
space. This is due to the geometric requirements dic-
tated by the structure of the A-patch, although subdi-
viding a tetrahedron is a more difficult task than sub-
dividing a cube.
This paper will investigate both the theoretical and
implementation aspects of the basic A-patch surface
approximation method. We begin with a review of
A-patches, after which we present an algorithm for
finding a piecewise linear approximation to a 2D al-
gebraic curve. We then generalize the algorithm to
tessellate algebraic surfaces in 3D.
2 A-patch BASICS
An algebraic surface patch (also known as an A-
patch) is essentially a piece of an algebraic surface
that is constrained within an arbitrary tetrahedron.
The contour of the surface contained within the tetra-
hedron is determined by the weight of its control
points. In A-patch form, the algebraic surface is rep-
resented in the Bernstein-B
´
ezier basis. Normally, al-
gebraics are represented as a vector of scalars that cor-
responds to the monomial basis
M
n
(P) = x
a
y
b
z
c
,
where 0 ≤ a, b,c and a + b + c = n. The Bernstein-
B
´
ezier basis in three-space is
B
n
~
i
(P) =
n
~
i
p
i
0
0
p
i
1
1
p
i
2
2
p
i
3
3
,
where
~
i = (i
0
,i
1
,i
2
,i
3
) with 0 ≤ i
0
,i
1
,i
2
,i
3
and i
0
+
i
1
+ i
2
+ i
3
= n and where p
0
, p
1
, p
2
, p
3
are the
Barycentric coordinates of P relative to a domain
tetrahedron T = 4ABCD. The A-patch uses the
Bernstein-B
´
ezier basis to weigh scalar values in the
following relationship:
F(P) =
∑
~
i
C
i
B
n
~
i
(P).
The scalar coefficients C
i
(also called control points)
have no location in the space we are interested in, al-
though one can imagine them to be distributed evenly
across the triangular domain as Bernstein/B
´
ezier con-
trol points of the patch as seen in Figure 1; this visual-
ization will be particularly helpful when talking about
the separating layer of control points in the later sec-
tions of this paper. For a Bernstein/B
´
ezier represen-
tation to be an A-patch, its coefficients must satisfy
TESSELLATING ALGEBRAIC CURVES AND SURFACES USING A-PATCHES
83