Computer-Aided Design , Vol. 25, No. 11, pp. 684{698, 1993.
Approximation of Variable Radius Oset Curves and its Application to Bezier Brush Stroke Design Myung-Soo Kim Department of Computer Science POSTECH P.O. Box 125, Pohang 790-600, Korea
Eun-Joo Park Department of Computer Science POSTECH P.O. Box 125, Pohang 790-600, Korea.
Soon-Bum Lim LBP Business Division Trigem Computer, Inc. Samjung B/D, 237-11 Nonhyun Kangnam, Seoul 135-010, Korea.
Abstract
We present an algorithm to approximate the variable radius oset curves by cubic Bezier curves. The oset curve is approximated by a cubic Bezier curve which interpolates the positions and derivatives of the exact oset curve at both end points. Thus, it approximates the exact oset curve very closely near the curve end points, but not necessarily in the middle of the curve. Given a xed base curve, by changing the oset radius and its derivative at an end point, one can easily control the oset curve shape near the end point. To better control the oset curve shape in the middle of the curve, we use two global shape parameters (bias and tension) of the oset curve (see [16]). A variety of variable radius oset curves are easily generated by using six shape control parameters (the two osets and their derivatives at both end points, and the bias and tension parameters). Each bristle of a Bezier brush stroke is represented by a variable radius oset curve. Even with simple linear interpolations of the six shape control parameters, the bristles are generated as cubic interpolations of the two boundary curves. The non-linear interpolability gives a great
exibility in modeling exible brush stroke shapes. As the shape control parameters are interpolated, the associated geometric meanings are also interpolated, which makes the designed brush stroke shapes look more natural. This is an improvement over the two previous methods [4, 19] which is based on linear interpolations of the two boundary curves. By applying the same interpolation scheme to the time span as well as to the brush stroke width, it becomes relatively easy to generate exible animated motions of brush strokes.
Key Words: Oset, variable radius oset, bias, tension, brush stroke, animation
This research was supported in part by KOSEF and Human Computers, Inc.
1
1 Introduction Osetting is a geometric operation which expands a given object into a similar object by a certain extent. It has various important applications in tolerance analysis, cutter path generation for NC machine tools, collision-free path planning for robot motions, and for constant-radius rounding and lleting of solids [20]. Constant radius osetting for plane curves has attracted extensive research interests in computer aided design [7, 8, 9, 13, 14, 15, 18, 22]. Since exact oset curves have high degree curve equations which are computationally quite expensive [8, 9, 13], many authors have considered approximating the exact oset curves by low degree parametric curves [14, 15, 18, 22]. Klass [15] approximated the constant radius oset curve for a Hermite cubic curve by a similar Hermite cubic curve. The oset Hermite curve is determined by osetting the two curve end points and computing the derivatives of the oset curve at both end points. Tiller and Hanson [22] approximated the 2D oset for a NURB curve by a similar NURB curve. The control polygon for the approximated oset NURB curve is computed by osetting each line segment of the control polygon. Coquillart [5] presented a dierent method to compute the control polygon for the oset NURB curve. Her method is good for the 3D oset as well as for the 2D oset. Pham [18] presented a simple method to approximate the oset curve by a B-spline curve which interpolates a sequence of oset points for a set of control knots on a uniform cubic B-spline. Hoschek [14] suggested a method to approximate the derivatives of an oset curve at both end points by using the least squares method to a set of evenly distributed oset curve points. The above oset curve approximation methods estimate the approximation error by evaluating the dierences between the exact and the approximated oset curve points only at nitely many discrete sample points. Elber and Cohen [7] over-estimate the global error bound by a polynomial function and recursively subdivide the curve (near the parameter value for the maximum error) until the overall approximation error becomes less than a given error bound. Farouki and Ne [8, 9] give a detailed discussion on the analytic and algebraic properties of the plane oset curves. The degree complexity of the exact plane oset curve for a simple integral polynomial curve C (t) = (x(t); y(t)) is 4d?2?2 , where d is the maximum degree of x(t) and y(t), and is the degree of gcd(x0 (t); y0 (t)) [9]. This means that the exact oset curve for a cubic plane curve may have degree 10. Plane curves with degrees higher than 3 are computational too expensive to be useful in practice. Homann [12, 13] suggested an oset curve generation method, without deriving any high degree curve equation, simply by doing a direct numerical curve tracing along the intersection curve of high-dimensional hyper-surfaces de ning an oset curve, however, the curve tracing itself involves many complex intermediate steps which make it run slow. Thus, for the time being, we should rely on simple approximation techniques for the oset curves. Considering various nice geometric properties and important engineering applications of the constant radius osetting, one could expect that the variable radius osetting { a generalization of the constant radius osetting { would have even more interesting mathematical properties and practical applications. In this paper, the variable radius oset curve is shown to have many mathematical properties similar to those of the constant radius osetting. Especially, we consider how to approximate the variable radius oset curves with cubic Bezier curves in a similar way to that of approximating the constant radius oset curves. The position and velocity of an exact oset curve is determined by the position, velocity, curvature, and oset of the original base curve. For a xed base curve C , the variable radius oset curve can be controlled by changing the variable oset radius function r(t), for 0 t 1, which may be given as a polynomial in t. A cubic polynomial function r(t) is completely determined by the four boundary values r(0); r(1); r0 (0), and r0 (1). These values have intuitive geometric meanings for the shape of an oset curve. That is, r(0) and 2
r(1) control the oset distances, and r0 (0) and r0 (1) control the tangent directions of the oset
curve at both curve end points. The oset cubic Bezier curve is determined by interpolating the boundary positions and derivatives of the exact oset curve. Thus, it approximates the exact oset curve very closely near the curve end points, but not necessarily in the middle of the curve. Given a xed base curve, by changing the oset radius and its derivative at an end point, one can easily control the oset curve shape near the end point. To eectively control the oset curve shape in the middle of the curve, we use two global shape parameters which control the bias and tension of the curve (see [16]). A variety of variable radius oset curves are easily generated by changing the six shape control parameters (i.e., the two osets and their derivatives at both ends, and the bias and tension of the curve). As an application of the variable radius osetting, we consider the design of Bezier brush strokes. Each Bezier brush stroke can be modeled by a one-parameter family of variable radius oset curves (approximated by cubic Bezier curves). Each bristle of a brush stroke is represented by a variable radius oset curve. Using the geometric shape control parameters for the oset curves, one can easily generate a family of bristles which have dramatic shape changes from the base curve. The modeling of exible brush strokes becomes relatively simple using this brush stroke modeling scheme. A few authors have used the variable radius osetting to model brush strokes [4, 19]. Pham [19] modeled brush strokes with the variable radius oset curves for uniform B-spline curves. The variable oset distances are speci ed on each knot of the B-spline curve. Using a similar method to her previous result [18], Pham [19] interpolates the knot osets with a B-spline curve. Each bristle of a brush stroke is generated in a similar way using the knot points which are generated by linearly interpolating the corresponding knot points for the base B-spline curve and the oset boundary B-spline curve. Chua [4] used two Bezier curves to model the boundary of a Bezier brush stroke. Each bristle is generated by a control polygon which is a linear interpolation of the two control polygons de ning the two boundary Bezier curves. These two previous methods [4, 19] essentially model each bristle as a linear interpolation of the two boundary curves. Based on the simultaneous changes of shape control parameters, our method generate a family of bristles which are non-linear combinations of the two boundary curves. This is an improvement over the previous methods [4, 19]. The hierarchical structure of brush stroke modeling (i.e., the base curve design and the variable radius osetting with the shape control parameters) makes the control of exible brush stroke shapes relatively easy and intuitive. This in turn makes the coordinated motion control of brush strokes relatively easy, too. There are also other related works on modeling brush strokes using dierent methods. Ghosh and Mudur [11] derived analytic solutions to describe the outline of a brush-trajectory. Ahn, Kim, and Lim [2] considered the brush trajectory generated by an arbitrary shape brush which changes its shape dynamically while it moves along an arbitrary plane curve trajectory. They approximate the boundary of such a general brush sweep by a polygon. Strassman [21] simulates the brush painting by modeling the phenomena of brush, stroke, dip, and paper. These methods are computationally more expensive than the simple brush stroke design method suggested in this paper. This paper is organized as follows. In x2 mathematical preliminaries are presented for the algebraic and dierential properties of the exact constant and variable radius oset curves. In x3 the variable radius oset curves for cubic Bezier base curves are approximated by similar cubic Bezier curves. In x4 we show how to control the variable radius oset curves by using various intuitive geometric parameters. In x5 Bezier brush stokes are designed with the variable radius oset curves. Comparisons are also made with the previous methods of brush stroke modeling [4, 19]. In x6 we conclude this paper. 3
2 Exact Oset Curves In this section, we derive algebraic formula de ning the exact constant and variable radius oset curves for both parametric and implicit planar algebraic curves. For a given base curve C , the constant radius osetting with respect to a xed radius r transforms each curve point p into the point pr at a distance r towards the curve normal direction Np at p, whereas the variable radius osetting transforms each curve point p into the point pr at a variable distance rp towards the curve normal direction Np at p. As we will discuss in the following subsections x2.1{x2.2, the formula de ning a variable radius oset curve are obtained from the formula for a constant radius oset curve simply by replacing the constant oset radius r with the variable oset radius function r(t) for a parametric curve and r(x; y) for an implicit curve. The variable radius oset curve has the same degree complexity as the constant radius oset curve as long as degfr(t)g maxfdeg x(t); deg y(t)g for a parametric curve C (t) = (x(t); y(t)) and degfr(x; y)g 2 for an implicit curve f (x; y) = 0. The result is, however, quite pessimistic since the exact oset curves even for simple plane algebraic curves such as conics and cubics have very high degrees. For example, the constant radius oset curve for a general plane cubic curve has degree 10. It is even impossible to parametrize such a high degree curve with rational polynomials unless it has enough double points, i.e., 20 double points for a degree 10 plane algebraic curve [1]. Thus, for the time being, we may have to use simple approximation techniques for oset curves. There are many previous algorithms to approximate the exact constant radius oset curves by low degree parametric curves [14, 15, 18, 22]. In x3 we suggest a method to approximate the variable radius oset curves by cubic Bezier curves. For the approximation, we need a formula which relates the derivative of the variable radius oset curve to that of the original base curve. In x2.3 we derive a dierential formula for this relation.
2.1 Constant Radius Oset Curves
For a parametric curve C (t) = (x(t); y(t)), the unit normal direction vector N (t) = NC (t) = Np of the curve at p = C (t) = (x(t); y(t)) is given as (y0 (t); ?x0 (t)) N (t) = Np = p 0 2 0 2 : x (t) + y (t) The oset curve Cr (t) = (xr (t); yr (t)) of C (t) with respect to a radius r is given as y0 (t) ?x0(t) Cr (t) = (xr (t); yr (t)) = C (t) + r N (t) = (x(t) + r p 0 2 0 2 ; y(t) + r p 0 2 0 2 ): x (t) + y (t) x (t) + y (t) Thus, we have 0 0 (xr (t) ? x(t); yr (t) ? y(t)) = (r p 0 y2(t) 0 2 ; r p 0 ?x2 (t) 0 2 ) x (t) + y (t) x (t) + y (t) and ?y0(t) x0(t) x0 (t) y0 (t) x0 (t) (xr (t) ? x(t)) + y0 (t) (yr (t) ? y(t)) = r p 0 2 0 2 + r p 0 2 0 2 = 0: x (t) + y (t) x (t) + y (t) The oset curve Cr (t) satis es the following equations. ( 0 x (t) (xr (t) ? x(t)) + y0 (t) (yr (t) ? y(t)) = 0 (1) (xr (t) ? x(t))2 + (yr (t) ? y(t))2 = r2 (2) 4
An implicit algebraic equation fr (xr ; yr ) = 0 for the oset curve Cr (t) can be obtained by eliminating the variable t from the following two equations (10 ){(20 ) which are obtained by setting xr = xr (t) and yr = yr (t) in the above two equations (1){(2). ( 0 x (t) (xr ? x(t)) + y0 (t) (yr ? y(t)) = 0 (10 ) (xr ? x(t))2 + (yr ? y(t))2 = r2 (20 ) When the two coordinate functions x(t) and y(t) are integral polynomials of t, the corresponding implicit curve equation fr (xr ; yr ) = 0 has degree 4d ? 2 ? 2 , where d is the degree of the curve C (t) and is the degree of gcd(x0 (t); y0 (t)) [9].
Example 2.1 [9]
The oset curve for the parabola C (t) = (t; t2 ) has degree 6, i.e., fr (xr ; yr ) = 16x4r (x2r + yr2 ) ? 8x2 yr (5x2r + 4yr2 ) ? (48r2 ? 1)x4r ? 32(r2 ? 1)x2r yr2 +16yr4 + 2(4r2 ? 1)x2r yr ? 8(4r2 + 1)yr3 + 4r2 (12r2 ? 5)x2r +(4r2 ? 1)2 yr2 + 8(4r2 + 1)yr ? r2 (4r2 + 1)2 :
A plane algebraic curve of degree d can have a rational parametrization if and only if it has (d ? 1)(d ? 2)=2 double points [1, 12]. Thus, a degree 6 plane algebraic curve should have 10 double points so that it can be parametrized by rational polynomials. There are algorithms for counting the number of double points, however, they are nontrivial [1]. For an implicit curve C de ned by f (x; y) = 0, the unit normal direction Np of the curve at a non-singular point p = (x; y) is given as (f ; f ) Np = q x y : fx2 + fy2 The oset curve Cr of C with respect to a radius r is the set of points pr = (xr ; yr ) such that pr = (xr ; yr ) = p + r Np = (x + r q
fx
fx2 + fy2
; y+r q
fy
fx2 + fy2
):
The point pr = (xr ; yr ) also satis es the following simultaneous equations 8 > (1) < f (x; y) = 0 and p = (x; y) 2 C (x ? x) f (x; y) ? (y ? y) f (x; y) = 0 (2) > : (xrr ? x)2 +y (yr ? y)2 =r r2 x (3) The implicit equation fr (xr ; yr ) = 0 for the oset curve Cr can be obtained by eliminating the variables x and y from the above equations (1){(3). The algebraic curve fr (xr ; yr ) = 0 has degree 2 d2 , where d is the degree of f . This means that the oset curve fr = 0 has degree 8 for a conic curve f = 0 and degree 18 for a cubic curve f = 0.
5
2.2 Variable Radius Oset Curves
For a variable oset radius function r(t) which is given as a function of t along the curve C (t), the corresponding oset curve Cr (t) is given by ?x0(t) y0 (t) Cr (t) = C (t) + r(t) N (t) = (x(t) + r(t) p 0 2 0 2 ; y(t) + r(t) p 0 2 0 2 ): x (t) + y (t) x (t) + y (t) The oset curve Cr (t) satis es the following equations. ( 0 x (t) (xr (t) ? x(t)) + y0 (t) (yr (t) ? y(t)) = 0 (1) (xr (t) ? x(t))2 + (yr (t) ? y(t))2 = r(t)2 (2) An implicit algebraic equation fr (xr ; yr ) = 0 for the oset curve Cr (t) can be obtained by eliminating the variable t from the following two equations (10 ){(20 ) which are obtained by setting xr = xr (t) and yr = yr (t) in the above two equations (1){(2). ( 0 x (t) (xr ? x(t)) + y0 (t) (yr ? y(t)) = 0 (10 ) (xr ? x(t))2 + (yr ? y(t))2 = r(t)2 (20 ) Using a similar proof to that of [9], one can easily prove that, when x(t), y(t), and r(t) are integral polynomials of t, the implicit curve equation fr (xr ; yr ) = 0 has degree 4d ? 2 ? 2 , where d is the maximum degree of the polynomials x(t), y(t), and r(t), and is the degree of gcd(x0 (t); y0 (t)). For a variable oset radius function r(x; y) which is de ned for the points p = (x; y) along the curve C de ned by f (x; y) = 0, the corresponding oset curve Cr of C with respect to a radius r(x; y) is the set of points pr = (xr ; yr ) such that f ; y + r(x; y) q x ): fx2 + fy2 fx2 + fy2
pr = (xr ; yr ) = p + r(x; y) Np = (x + r(x; y) q
fy
The point pr also satis es the following simultaneous equations 8 > (1) < f (x; y) = 0 and p = (x; y) 2 C (x ? x) f (x; y) ? (y ? y) f (x; y) = 0 (2) > : (xrr ? x)2 +y (yr ? y)2 =r r(x; y)2x (3) The implicit equation fr (x; y) = 0 for the oset curve Cr can be obtained by eliminating the variables x and y from the above equations (1){(3). The algebraic curve fr (x; y) = 0 has degree maxf2; dr g d2 , where dr is the degree of r(x; y). For a linear or quadratic function r(x; y), fr (xr ; yr ) = 0 has the same degree as a constant-radius oset curve. The degree complexities for the exact constant and variable oset curves are too high to be useful in practice. Further, some oset curves even for simple conic curves such as an ellipse may not have rational parametrizations. Processing non-rational algebraic curves is quite dicult since there is no algebraic algorithm for them. Thus, we have to consider ecient approximation techniques for the oset curves.
2.3 Derivatives for Oset Curves
The constant radius oset curve Cr (t) has the same tangent direction as the original curve C (t) at the same time parameter t, i.e., we have Cr0 (t) == C 0 (t); for 0 t 1; 6
and equivalently,
Cr0 (t) = (t) C 0 (t) for some real function (t): The function (t) depends on the curvature (t) of C (t) at t, which is an intrinsic local geometric
quantity for the curve.
Lemma 2.2 The constant radius oset curve Cr (t) for a parametric curve C (t) with respect to a radius r has its derivative Cr0 (t) determined by
Cr0 (t) = (t) C 0(t) = (1 + r (t)) C 0 (t)
Proof:
d p y0 (t) y00 (t) (x0 (t)2 + y0 (t)2 ) ? y0 (t) (x0 (t)x00 (t) + y0 (t)y00 (t)) = dt x0 (t)2 + y0 (t)2 (x0 (t)2 + y0 (t)2 )3=2 0 00 00 0 0 = (x (t)y (0 t) ?2 x (0t)y2(t3))=2 x (t) (x (t) + y (t) ) d p ?x0 (t) = dt x0 (t)2 + y0 (t)2
?x00(t) (x0 (t) + y0(t) ) + x0(t) (x0 (t)x00 (t) + y0(t)y00 (t)) 2
2
(x0 (t)2 + y0 (t)2 )3=2 0 00 00 x (t)y0 (t)) y0 (t) = (x (t)y (0 t) ? (x (t)2 + y0 (t)2 )3=2
Thus, we have d p(y0 (t); ?x0 (t)) dt x0 (t)2 + y0 (t)2 0 00 00 0 = (x (t)0 y (2t) ? 0x (2t)x3=2(t)) (x0 (t); y0 (t)) (x (t) + y (t) ) = (t) C 0 (t):
N 0 (t) =
This implies Cr0 (t) = C 0(t) + rN 0 (t) = C 0 (t) + r(t) C 0 (t) = (1 + r(t)) C 0 (t):
We now consider the variable radius osetting for C (t). However, in this case, the exact variable radius oset curve Cr (t) may not have the same tangent direction as the original curve C (t) at t. Lemma 2.3 The variable radius oset curve Cr (t) for a parametric curve C (t) with respect to a variable oset radius function r(t) has its derivative Cr0 (t) determined by Cr0 (t) = (1 + r(t) (t)) C 0(t) + r0 (t) N (t) = (t) C20 (t) + r0 (t) N (t) 3 r0 (t) p
( t ) ? x0 (t)2 +y0 (t)2 7 = C 0 (t) 64 p r0 (t) 5
(t) x0 (t)2 +y0 (t)2
7
Proof: Cr0 (t) = C 0 (t) + r(t)N 0 (t) + r0(t)N (t) = (1 + r(t) (t)) C 0(t) + r0 (t) N (t) = (t) C 0 (t) + r0 (t) N (t) = C 0 (t) (t) + N (t) r0 (t) 0 = C 0 (t) (t) + (y0 (t); ?x0 (t)) p 0 r2(t) 0 2 x (t) + y (t)
# " # 1 0 (t) + (x0 (t); y0 (t)) 0 ?1 p r0 (t) 0 1 1 0 x0 (t)2 + y0 (t)2 3 2 r0 (t) " # p 0 ? x0 (t)2 +y0 (t)2 7 = C 0 (t) (0t) (0t) + C 0 (t) 64 p r0 (t) 5 0 x0 (t)2 +y0 (t)2 3 2 r0 (t) p
( t ) ? x0 (t)2 +y0 (t)2 7 = C 0 (t) 64 p r0 (t) 5:
( t ) 0 2 0 2 x (t) +y (t) = C 0 (t)
"
3 Approximation of Oset Curves In this section, we consider how to approximate the constant and variable radius oset curves for cubic Bezier curves by similar cubic Bezier curves. The begin and end points for an approximate oset cubic Bezier curve can be computed exactly. We approximate the begin and end velocities of the oset curve using a similar method to that of Klass [15] or Hoschek [14]. The velocity of a constant radius oset curve is always parallel to that of the original curve, however, the velocity of a variable radius oset curve may not be parallel to that of the original curve. When the variable oset radius function has a non-zero derivative, the variable radius oset curve may have its tangent direction dierent from that of the original curve. Lemma 2.2{2.3 gives the relationship between the velocity of the oset curve and that of the original curve. We generalize the method of Klass [15] by using the formula shown in Lemma 2.3. The method of Hoschek [14] can be extended by using the least squares method to determine the magnitudes of the approximate oset Bezier curve velocities along the tangents of the exact variable radius oset curve at both end points.
3.1 Cubic Bezier Curve
A cubic Bezier curve C (t), for 0 t 1, with four control points pi = (xi ; yi ), i = 0; 1; 2; 3, is de ned by 3 X C (t) = pi Bi (t); for 0 t 1; i=0
where
Bi (t) =
3
!
i
ti (1 ? t)3?i :
That is, C (t) = (1 ? t)3 p0 + 3(1 ? t)2 t p1 + 3(1 ? t)t2 p2 + t3 p3
8
C 0(t) =
?3(1 ? t) p + [3(1 ? t) ? 6(1 ? t)t] p + [6(1 ? t)t ? 3t ] p + 3t p = 3(1 ? t) [p ? p ] + 6(1 ? t)t [p ? p ] + 3t [p ? p ] C 00(t) = 6(1 ? t) p + [?12(1 ? t) + 6t] p + [?12t + 6(1 ? t)] p + 6t p = 6(1 ? t) [p ? 2p + p ] + 6t [p ? 2p + p ]: 2
2
0
2
1
2
1
0
2
0
2
1
3
1
2
1
2
2
3
2
1
0
2
2
3
3
Thus, we have C (0) = p0 ; C (1) = p3 C 0 (0) = 3 [p1 ? p0 ]; C 0 (1) = 3 [p3 ? p2 ] C 00 (0) = 6 [p0 ? 2p1 + p2 ]; C 00 (1) = 6 [p1 ? 2p2 + p3 ]:
Let N0 = N (0), N3 = N (1), 0 = (0), 3 = (1), then these quantities can be computed by the following equations. " # C 0 (0) 0 ? 1 N0 = N (0) = kC 0 (0)k 1 0 " # p1 ? p0 0 ? 1 = kp ? p k 1 0 1
0
3
2
= p (y1 ? y02; x0 ? x1 ) 2 ; (x1 ? x0 ) + (y1 ? y0 ) " # C 0 (1) 0 ? 1 N3 = N (1) = kC 0 (1)k 1 0 " # p3 ? p2 0 ? 1 = kp ? p k 1 0 = p (y3 ? y22; x2 ? x3 ) 2 ; (x3 ? x2 ) + (y3 ? y2 )
(C 0 (0) C 00 (0)) (0; 0; 1) kC 0(0)k3 [p2 ? p1 ]) (0; 0; 1) = 32 ([p1 ? p0 ] kp1 ? p0k3 = 32 (x1 ? x0 )(y2 ? y12) ? (x2 ? x12)(3y=12 ? y0 )) ; ((x1 ? x0 ) + (y1 ? y0 ) )
0 = (0) =
(C 0 (1) C 00 (1)) (0; 0; 1) kC 0(1)k3 [p1 ? p2 ]) (0; 0; 1) = 32 ([p3 ? p2 ] kp3 ? p2k3 = 32 (x3 ? x2 )(y1 ? y22) ? (x1 ? x22)(3y=32 ? y2 )) : ((x3 ? x2 ) + (y3 ? y2 ) )
3 = (1) =
9
3.2 Approximation of Constant Radius Oset Curves
We rst consider the constant radius osetting of C (t). The oset curve Cr (t) satis es the following conditions: Cr (0) = C (0) + r N (0) = p0 + r N0 ; Cr (1) = C (1) + r N (1) = p3 + r N3 ; 0 Cr (0) = (0) C 0 (0) = 3 (0) [p1 ? p0 ]; Cr0 (1) = (1) C 0 (1) = 3 (1) [p3 ? p2 ]:
We approximate the oset curve Cr (t) by a cubic Bezier curve Cr (t) with four control points (p0 )r ; (p1 )r ; (p2 )r ; (p3 )r . The cubic curve Cr (t) is uniquely determined by the following four conditions: Cr (0) = Cr (0); Cr (1) = Cr (1); Cr0 (0) = Cr0 (0); Cr0 (1) = Cr0 (1): The oset points (p0 )r and (p3 )r from the two end points p0 and p3 can be computed as follows: (p0 )r = Cr (0) = Cr (0) = p0 + r N0 ; (p3 )r = Cr (1) = Cr (1) = p3 + r N3 : Let 0 = (0) and 3 = (1), then the two middle control points (p1 )r and (p2 )r of the cubic Bezier curve Cr (t) can be derived as follows: 3 [(p1 )r ? (p0 )r ] = Cr0 (0) = (0) Cr0 (0) = 3 0 [p1 ? p0 ]; (p1 )r = (p0 )r + 0 [p1 ? p0 ] = (p0 )r + (1 + r 0 ) [p1 ? p0 ]; and 3 [(p3 )r ? (p2 )r ] = Cr0 (1) = (1) Cr0 (1) = 3 3 [p3 ? p2 ]; (p2 )r = (p3 )r + 3 [p2 ? p3 ] = (p3 )r + (1 + r 3 ) [p2 ? p3 ]: These formula are reminiscent of the conditions for cubic Hermite curves. The cubic Bezier curve Cr (t) determined by the above four control points may produce a good approximation of the exact oset curve Cr (t) near the end points, but not in the middle of the curve. If it is the case, we can either subdivide the original curve segment into two subsegments and repeat the same approximation procedures recursively to these subcurves, or modify some of the four control points so that the modi ed curve Cr (t) approximates the exact oset curve better. By controlling the two parameters 0 and 3 , we can control the two middle control points (p1 )r and (p2 )r , and thus the global shape of the cubic Bezier curve Cr (t). To determine the parameters 0 and 3 for a cubic Bezier curve Cr (t) which approximates the exact oset curve Cr (t) very closely, not only near the end points of the curve but also in the middle of the curve, we can generate a sequence of evenly distributed discrete oset curve points on Cr (t) by considering the curvature of C (t), and select the parameters 0 and 3 by taking the least squares of the errors between the approximating curve C (t) and the generated discrete oset curve points.
10
3.3 Approximation of Variable Radius Oset Curves
We next consider the variable radius osetting of C (t). Let r0 = r(0); r3 = r(1); r00 = r0 (0); r30 = r0 (1), then the oset curve Cr (t) satis es the following conditions: Cr (0) Cr (1) Cr0 (0) Cr0 (1)
= = = =
C (0) + r(0) N (0) = p0 + r0 N0 ; C (1) + r(1) N (1) = p3 + r3 N3 ;
(0) C 0 (0) + r0 (0) N (0) = 3 (0) [p1 ? p0 ] + r00 N0 ;
(1) C 0 (1) + r0 (1) N (1) = 3 (1) [p3 ? p2 ] + r30 N3 :
We approximate the variable oset curve Cr (t) by a cubic Bezier curve Cr (t) with four control points (p0 )r ; (p1 )r ; (p2 )r ; (p3 )r . The cubic curve Cr (t) is uniquely determined by the following four conditions: Cr (0) = Cr (0); Cr (1) = Cr (1); Cr0 (0) = Cr0 (0); Cr0 (1) = Cr0 (1): The oset points (p0 )r and (p3 )r from the two end points p0 and p3 are given as follows: (p0 )r = Cr (0) = Cr (0) = p0 + r0 N0 ; (p3 )r = Cr (1) = Cr (1) = p3 + r3 N3 : Let 0 = (0) and 3 = (1), then the two middle control points (p1 )r and (p2 )r of the cubic Bezier curve Cr (t) can be derived as follows: 3 [(p1 )r ? (p0 )r ] = Cr0 (0) = (0) Cr0 (0) + r0(0) N (0) = 3 0 [p1 ? p0 ] + r00 N0 ; (p1 )r = (p0 )r + 0 [p1 ? p0 ] + 31 r00 N0 = (p0 )r + (1 + r0 0 ) [p1 ? p0 ] + 31 r00 N0 ; and 3 [(p3 )r ? (p2 )r ] = Cr0 (1) = (1) Cr0 (1) + r0(1) N (1) = 3 3 [p3 ? p2 ] + r30 N3 ; (p2 )r = (p3 )r + 3 [p2 ? p3 ] ? 31 r30 N3 = (p3 )r + (1 + r3 3 ) [p2 ? p3 ] ? 31 r30 N3 : Similarly to the constant radius osetting, the approximate cubic Bezier curve Cr (t) determined by the above four control points may not produce a good approximation of the exact oset curve Cr (t) in the middle of the curve. To generate a better approximation of the oset curve, we may subdivide the original curve segment into two subsegments and repeat the same approximation procedures recursively to these subcurves. However, in the case of variable radius osetting, we should be very careful to maintain the tangent continuity of two adjacent approximate oset cubic Bezier curve segments. Dierently from the constant radius osetting, when we control the two parameters 0 and 3 , the generated cubic Bezier curve Cr (t) may change its tangent directions at the end points. To keep the tangent directions at the end points xed, we have to control the positions of the two middle control points (p1 )r and (p2 )r along their respective xed tangent lines. This can be done by controlling the two parameters s1 and s2 as follows: (p1 )r = (p0 )r + s1 [(1 + r0 0 ) (p1 ? p0 ) + 31 r00 N0 ]; (p2 )r = (p3 )r + s2 [(1 + r3 3 ) (p2 ? p3 ) ? 31 r30 N3 ]: 11
To generate an oset cubic Bezier curve Cr (t) which approximates the exact oset curve Cr (t) very closely, we can generate a sequence of evenly distributed discrete oset curve points on Cr (t) by considering the curvature of C (t) as well as the oset radius function r(t), and determine the two parameters s1 and s2 by taking the least squares of the errors between the approximating curve C (t) and the generated discrete oset curve points.
4 Shape Control Parameters for Variable Radius Oset Curves After the four default control points (p0 )r ; (p1 )r ; (p2 )r ; (p3 )r have been determined for the approximate oset cubic Bezier curve, the curve designer may want to modify the oset curve shape. A simple way of doing this is directly changing the four control points, however, this direct method does not give much intuitions to the user. Since designing a single planar cubic curve is an extremely simple matter, one may hardly see any diculties in manipulating the four control points directly. When one considers more general cases such as controlling an animated motion of a cubic curve or modeling a family of cubic curves for a brush stroke, one can easily realize the lack of intuitions in the direct manipulation of control points. To make the shape control of variable radius oset curves easier, we use several shape control parameters which have intuitive geometric meanings. The oset curve shape can be controlled by changing the parameters r0 ; r3 ; r00 ; r30 . The oset radius parameters r0 and r3 control the oset distances of the curve at both end points, and the oset radius derivative parameters r00 and r30 control the tangent directions of the oset curve at both end points (see Figure 1(a){(b)). Note that the shape controls with r0 and r3 also change the oset curve tangent directions, and the shape controls with r00 and r30 change the oset distances near the end points, too. These eects are insigni cant, however. When the oset cubic Bezier curve Cr (t) is modi ed by changing the parameters r0 and r00 , the rst two control points (p0 )r and (p1 )r of Cr (t) are recomputed. For the curve Cr (t) to be connected smoothly with the previous oset cubic Bezier curve C^r (t), the last two control points (^p2 )t and (^p3 )r of C^r (t) should be recomputed using the following conditions: r^3 = r0 ; r^30 = r00 ; ^3 = 0 :
When we change only the magnitude of the velocity of Cr (t) along the tangent direction at the begin point, we do not need to modify the previous oset curve segment C^r (t) to maintain the tangent direction continuity (G1 -continuity). As we have discussed in x3, the velocities of Cr (t) at both end points can be easily controlled (without changing the tangent directions) by changing only the two parameters s1 and s2 as follows: (p1 )r = (p0 )r + s1 [(1 + r0 0 ) (p1 ? p0 ) + 31 r00 N0 ]; (p2 )r = (p3 )r + s2 [(1 + r3 3 ) (p2 ? p3 ) ? 31 r30 N3 ]:
The parameters s1 and s2 control the oset curve shape near the end points of the curve. Since the approximate oset cubic Bezier curve Cr (t) is constructed by interpolating the boundary positions and velocities of the exact oset curve, the approximate oset cubic Bezier curve has a better approximation near the curve end points rather than in the middle of the curve. Thus, we need a better way to control the curve shape in the middle of the curve. We use two global shape parameters and which control the bias and tension of the oset curve (see [16]). The eect of the bias and tension control occurs most prominently in the middle of the curve. These parameters 12
(a) radius control
(b) radius and its derivative control
(c) bias control
(d) tension control
Figure 1: Shape Control Parameters for Variable Radius Oset Curves.
13
(a) bias control
(b) tension control
Figure 2: Tension Control with a Base Curve with an In ection Point.
Figure 3: Tension Control with a Base Curve without an In ection Point. 14
and are related with s1 and s2 as follows (also see [16]): s1 = (1 + ) (1 + ) and s2 = (1 ? ) (1 + )
Thus, we have (p1 )r = (p0 )r + (1 + ) (1 + ) [(1 + r0 0 ) (p1 ? p0 ) + 13 r00 N0 ]; (p2 )r = (p3 )r + (1 ? ) (1 + ) [(1 + r3 3 ) (p2 ? p3 ) ? 13 r30 N3 ]: The default values for and are 0's. By changing the value , we can shift the curve shape to the left and to the right (see Figure 1(c)). Thus, the parameter models the bias of the cubic Bezier curve. By changing the value , we can control the tension of the curve turning in the middle of the curve (see Figure 1(d)). When the base curve has an in ection point, as the value of increases, the tension of the curve (turning around the in ection point) increases (see Figure 2). When the base curve has no in ection point, as the value of increases, the control polygon for the oset cubic Bezier curve becomes self-intersected and then the oset curve itself becomes self-intersected (see Figure 3). Before the curve has a self-intersection, the curve becomes very sharp and then comes to have a cusp in the middle of the curve. Thus, the parameter models the tension of the cubic Bezier curve.
5 Bezier Brush Stroke Design In the previous section x4, we have discussed how to modify the shape of an oset cubic Bezier curve by changing the oset radius parameters r0 ; r3 ; r00 ; r30 which control the oset distances and tangent directions at the curve end points, and further by changing the two intuitive shape parameters and which control the bias and tension of the curve. In this section, we demonstrate how to design Bezier brush strokes using these intuitive shape control parameters. Each Bezier brush stroke can be modeled by a one-parameter family of variable radius oset curves (approximated by cubic Bezier curves). Each bristle of a brush stroke is represented by a variable radius oset curve. Using the intuitive shape control parameters for the oset curves, one can easily generate a family of bristles which may have dramatic shape changes from the base curve. There are two previous methods of brush stroke modeling [4, 19] which are closely related to our method. Chua [4] modeled each Bezier brush stroke with two boundary cubic Bezier curves and generated each bristle as a linear combination of the two boundary curves. Pham [19] modeled each B-spline brush stroke with the variable radius oset B-spline curves for a uniform B-spline base curve. Pham [19] generates the knot points for each bristle by computing variable radius oset points for the knot points on the base curve. Then, each B-spline bristle is generated by interpolating the oset knot points thus generated. In a sense, the basic idea of Pham [19] is similar to the special case of our method in which one uses only the two oset radius parameters r0 and r3 while keeping the other parameters xed to the default values. Pham [19] would require a large number of knot points on the B-spline base curve to represent exible brush stokes (such as those having sharp turns and/or wavy shapes, etc). When we restrict our method so that it controls only the four oset radius parameters r0 ; r3 ; r00 ; r30 or only one of the bias and tension parameters and , the method generates cubic Bezier brush strokes that form a proper subclass of those generated by the method of Chua [4]. This point may become clear when we consider the following equations for the four control points of an oset cubic 15
Bezier curve: (p0 )r = Cr (0) = Cr (0) = p0 + r0 N0 ; (p3 )r = Cr (1) = Cr (1) = p3 + r3 N3 ; (p1 )r = (p0 )r + (1 + ) (1 + ) [(1 + r0 0 ) (p1 ? p0 ) + 13 r00 N0 ]; (p2 )r = (p3 )r + (1 ? ) (1 + ) [(1 + r3 3 ) (p2 ? p3 ) ? 13 r30 N3 ]: In the above equations, the four control points are linear combinations of the four parameters r0 ; r3 ; r00 ; r30 . By changing these four parameters linearly, one can generate a family of control polygons (for the oset cubic Bezir curves) which are linear combinations of the two boundary control polygons (for the two boundary oset cubic Bezier curves). Thus, the designed Bezier brush strokes are among those which can be generated by Chua [4]. A similar argument also holds for the case in which one linearly changes only one of the bias and tension parameters and with all the other ve parameters xed to the default values. The reverse is not true in general. That is, given two boundary cubic Bezier curves C1 and C2 , it is not possible to construct a cubic Bezier base curve C0 which generates the two boundary curves C1 and C2 as variable radius oset curves of C0 (by controlling only the four oset radius parameters r0 ; r3 ; r00 ; r30 or only one of the bias and tension parameters and ). To construct such a base curve, one has to control all the six shape control parameters r0 ; r3 ; r00 ; r30 ; , and simultaneously. Thus, each of the above three restricted cases generates cubic Bezier brush strokes which form a proper subclass of those generated by Chua [4]. Though they generate only proper subclasses, these three restricted cases cover most of the important subclasses of Bezier brush stroke shapes which are simple and useful in practice. Each subclass is closely related with the intuitive geometric meaning(s) of the associated shape control parameter(s). When we want to model more general Bezier brush stroke shapes, we have to use more shape control parameters than the parameter(s) for each of the above subclasses. For example, using the ve parameters r0 ; r3 ; r00 ; r30 , and , one can simultaneously control the oset radius and the bias of a cubic Bezier brush stroke. When each of these ve parameters is interpolated linearly (while the parameter is xed), the bristles are generated as quadratic interpolations of the two cubic Bezier boundary curves. Further, when each of the six shape control parameters is interpolated linearly, the bristles are generated as cubic interpolations of the two boundary curves. Thus, using simple linear interpolations of the associated shape control parameters, one can easily generate cubic Bezier brush strokes which have their bristles as non-linear interpolations of the two boundary curves. This non-linear interpolability of each bristle in our method is an improvement over the limited linear interpolability of each bristle in the method of Chua [4]. The bristles generated by interpolating intuitive shape control parameters have more natural intuitive geometric meanings than the bristles generated by the control polygons which are simple linear interpolations of the two boundary curve control polygons. In Figure 4, three examples are given to compare our method with Chua [4]. Each example has the same cubic Bezier boundary curves, however, the bristles in the left brush stroke are generated (by Chua [4]) as linear interpolations, whereas the bristles in the right brush stroke are generated (by our method) as cubic non-linear interpolations (which are obtained by linearly interpolating each of the six shape control parameters). The Bezier brush strokes in the right column have more natural and exible shapes which look like surfaces in the 3D space. In modeling a Bezier brush stroke using variable radius osetting, the most important geometric factor to determine the overall brush stroke shape is the base curve. Thus, by changing the base curve, one can easily change the overall shape of a Bezier brush stroke. In Figure 5, two examples 16
Chua’s Method
Our Method
Figure 4: Comparisons of Two Methods.
17
change of base curve
the corresponding change of brush stroke shape
change of base curve
the corresponding change of brush stroke shape
Figure 5: Change of Brush Stroke Shape to the Change of Base Curve.
18
t=0
t=1
t=0
t=1
Figure 6: Two Examples of Animation Sequences.
19
are shown to illustrate the shape changes of Bezier brush strokes corresponding to the shape changes of their respective base curves. In the examples, each bristle has the same shape control parameters during the whole course of shape changes. As one could easily notice in the examples, when the base curve changes its shape into a completely dierent one, the brush strokes at the later part of the change sequence come to have bad shapes. This is due to the fact that the shape control parameters are kept to xed values in the examples. The parameters have intuitive geometric meanings for the brush strokes at the start of the change sequence, however, they do not make much sense at the end of the sequence, thus they generate brush strokes with bad shapes. To make the shape transitions between two brush strokes look more natural and intuitive, we have to interpolate the shape control parameters for each bristle as well as the base curve shape. Figure 6 shows two examples, in each of which two key frames of cubic Bezier brush strokes are interpolated by an animated sequence of cubic Bezier brush strokes. In the examples, not only the base curves but also the shape control parameters for each bristle are interpolated linearly. The intermediate shapes in the animated sequence give smooth transitions between the two key frames of brush strokes. To generate a natural animated motion of a brush stroke, one has to consider how to control the motion of a base curve in a exible way. This is because the base curve is the most important geometric factor to determine the overall shape of a brush stroke. Assume we are given a sequence of cubic Bezier base curves Ci (s)0 s with four control points (pi )0 ; (pi )1 ; (pi )2 ; (pi )3 , where 0 s 1, for i = 1; : : : ; n. For a cubic Bezier curve Ct (s), for 0 t n, to interpolate this sequence, a simple method is to interpolate each sequence (p1 )j ; (p2 )j ; : : : ; (pn )j , for j = 0; 1; 2; 3, by a cardinal spline curve Dj (t), for 0 t n. Let S (s; t) be the tensor product surface of the curves Ci 's and Dj 's, then the base curve Ct (s) at time t can be constructed as a t-parameter curve on the surface S (s; t). Note that the surface S (s; t) is embedded in the plane since the curves Ci 's and Dj 's are planar curves. To generate a natural looking coordinated motion of brush strokes such as falling leaves and swaying grasses in the wind, we may need a more exible method to manipulate the coordinated motion of base curves. Since the base curve itself is a cubic Bezier curve, we could eectively use the shape control parameters (such as the bias and tension parameters) to control the motion of a base curve (also see [16]). By combining the two motion control schemes, i.e., one using interpolations of the base curve control points and the other using the shape control parameters, one could generate more exible motions of a base curve. Then, by using a hierarchical control of the base curve and the variable radius oset functions in terms of the associated geometric shape control parameters, the generation of exible motions of Bezier brush strokes becomes relatively easy. This structure is somewhat similar to the skeleton technique of Burtnyk and Wein [3] in which, as an animator controls simple stick gures (which form skeleton cores), the in-between frames are generated automatically by interpolating the key frame skeleton polygons with relative coordinates. When we consider a similar problem for the Bezier brush strokes generated by Chua [4], the shape control becomes more dicult since in this case two boundary curves should be controlled simultaneously. In a sense, our method is a procedural modeling with a hierarchy of modeling brush strokes, whereas Chua [4] is an explicit modeling with a at modeling structure. Procedural modeling has been proven to be a quite useful technique in modeling complex object shapes and generating animated motions of such objects by modeling the inherent hierarchical structures of the objects [10]. The basic idea of modeling brush strokes with variable radius osetting can be easily extended to the case of 3D (see [17]). In 3D, the base curves and the variable radius oset curves are given as 20
Figure 7: An Orchid Texture Mapped onto a China. space curves. Dierently from the planar curves in which there are only two normal directions at each curve point, the space curves may have many normal directions at each curve point. There is a normal plane of the space curve at each point. Osetting a curve point C (t) by a distance r(t) may be considered as generating a circle of radius r(t) centered at C (t) in the normal plane. We may consider the xed point C (t) in the normal plane as a circle of radius 0 centered at the origin. This circle of radius 0 can be osetted by a variable radius oset function r(t; ) which depends on the angle measured from the positive x-axis of the normal plane. We can approximate the variable radius oset curve with a cycle of Bezier curves which form a star-shaped closed contour. The sweeping of these closed contours forms a generalized cylindrical surface. Park [17] generates such a surface as a tensor product of cubic Bezier curves which approximate variable radius oset curves. Figure 7 shows a china modeled by such a surface. The orchid texture on the china is generated by the Bezier brush stokes designed using the method presented in this paper. Coquillart [6] presents a similar method in which the surface is constructed as a B-spline surface. The B-spline surface is given as a tensor product of B-spline curves which are approximations of variable radius oset curves. Coquillart [6] may be considered as a 3D extension of the 2D result of Pham [19]. Dierently from our method and Pham [19], it is dicult to extend the result of Chua [4] to the 3D case. When two boundary curves are given as cubic Bezier space curves, Chua [4] may generate a band-shaped surface (a piece of ruled surface), but may not generate any cylindrical surface and/or any 3D tubed volume bounded by such a cylindrical surface. 21
6 Conclusions We have described an algorithm to approximate the variable radius oset curves of cubic Bezier curves by similar cubic Bezier curves. Using various intuitive shape control parameters for the variable radius oset cubic Bezier curves, a variety of Bezier brush strokes are designed with a great
exibility. In our method, each bristle of a brush stroke may interpolate the two boundary curves non-linearly. This is an improvement of our method over the two previous methods [4, 19]. Even with simple linear interpolations of the six shape control parameters, the bristles are generated as cubic interpolations of the two boundary curves. As the shape control parameters are interpolated numerically, the associated geometric meanings of the bristles are also interpolated. Thus, the generated Bezier brush strokes have more natural and exible shapes. The interpolation scheme of shape control parameters can be applied to the time span as well as to the brush stroke width. Thus, the brush stroke shapes can be interpolated (through a given sequence of key-frame brush strokes) by interpolating the associated shape control parameters for the key-frame brush strokes. This makes the animated motion control of Bezier brush strokes relatively easy. The ease of such an animation control is partially due to the hierarchical structure of the brush stroke design, i.e., the base curve control and the shape control parameter control. Using the hierarchical modeling structure of our method, an extension to the 3D case can be done in a similar way to the 2D case (see [17]).
References [1] Abhyankar, S., and Bajaj, C., \Automatic Parameterization of Rational Curves and Surfaces III: Algebraic Plane Curves," Computer Aided Geometric Design , Vol. 5, pp. 309{321, 1988. [2] Ahn, J.-W., Kim., M.-S., and Lim, S.-B., \Approximate General Sweep Boundary of 2D Object," to appear in CVGIP: Graphical Models and Image Processing . [3] Burtnyk, N., and Wein, M., \Interactive Skeleton Techniques for Enhancing Motion Dynamics in Key Frame Animation," Communications of the ACM , Vol. 19, No. 10, pp. 564{569, 1976. [4] Chua, Y., \Bezier Brushstrokes," Computer Aided Design , Vol. 22, No. 9, pp. 550{555, 1990. [5] Coquillart, S., \Computing Osets of B-spline Curves," Computer Aided Design , Vol. 19, No. 6, pp. 305{309, 1987. [6] Coquillart, S., \A Control-Point-Based Sweeping Technique" IEEE Computer Graphics & Applications , Vol. 7, No. 11, pp. 36{45, 1987. [7] Elber, G., and Cohen, E., \Error Bounded Variable Distance Oset Operator for Free Form Curves and Surfaces," Int'l J. of Computational Geometry & Applications , Vol. 1, No. 1, 67{78, 1991. [8] Farouki, R., and Ne, C., \Analytic Properties of Plane Oset Curves," Computer Aided Geometric Design , Vol. 7, pp. 83{99, 1990. [9] Farouki, R., and Ne, C., \Algebraic Properties of Plane Oset Curves," Computer Aided Geometric Design , Vol. 7, pp. 101{127, 1990. [10] Foley, J., van Dam, A., Feiner, S., Hughes, J., Computer Graphics: Principles and Practice , Addison-Wesley, 1990. 22
[11] Ghosh, P., and Mudur, S., \The Brush-Trajectory Approach to Figure Speci cation: Some Algebraic-Solutions," ACM Transactions on Graphics , Vol. 3, No. 2, pp. 110{134, 1984. [12] Homann, C., Geometric & Solid Modeling: An Introduction, Morgan Kaufmann, San Mateo, CA, 1989. [13] Homann, C., \Algebraic and Numerical Techniques for Osets and Blends," Computer Science Technical Report CSD-TR-895, Purdue University, 1989. [14] Hoschek, J., \Spline Approximation of Oset Curves," Computer Aided Geometric Design , Vol. 5, pp. 33{40, 1988. [15] Klass, R., \An Oset Spline Approximation for Plane Cubic Splines," Computer Aided Design , Vol. 15, Nol. 5, pp. 297{299, 1983. [16] Kochanek, D., and Bartels, R., \Interpolating Splines with Local Tension, Continuity, and Bias Control," Computer Graphics (SIGGRAPH '84), Vol. 18, Nol. 3, pp. 33{41, 1984. [17] Park, E.-J., \Flexible Object Shape Modeling with Variable Radius Osetting," M.S. Thesis, Dept. of Computer Science, POSTECH, Feb., 1983. [18] Pham, B., \Oset Approximation of Uniform B-Splines," Computer Aided Design , Vol. 20, No. 8, pp. 471{474, 1988. [19] Pham, B., \Expressive Brush Strokes," CVGIP: Graphical Models and Image Processing , Vol. 53, No. 1, pp. 1{6, 1991. [20] Rossignac, J. and Requicha, A., \Osetting Operations in Solid Modeling," Computer Aided Geometric Design , Vol. 3, pp. 129{148, 1986. [21] Strassman, S., \Hairy Brushes," Computer Graphics , Vol. 20, No. 4, pp. 225{232, 1986. [22] Tiller, W., and Hanson, E., \Osets of Two-Dimensional Pro le," IEEE Computer Graphics & Applications , Sept., pp. 36{46, 1984.
23