Multi-degree reduction of NURBS curves based on their explicit matrix representation and polynomial approximation theory Cheng Min Wang Guo-Jin (E-mail: chengmin@css.zju.edu.cn , wgj@math.zju.edu.cn) (Institute of Images and Graphics, State Key Laboratory of CAD&CG, Zhejiang University, Hangzhou 310027, China) Abstract NURBS curve is one of the most commonly used tools in CAD systems and geometric modeling for its various specialties, which means that its shape is locally adjustable as well as its continuity order, and it can represent a conic curve precisely. But how to do degree reduction of NURBS curves in a fast and efficient way still remains a puzzling problem. By applying the theory of the best uniform approximation of Chebyshev polynomials and the explicit matrix representation of NURBS curves, this paper gives the necessary and sufficient condition for degree reducible NURBS curves in an explicit form. And a new way of doing degree reduction of NURBS curves is also presented, including the multi-degree reduction of a NURBS curve on each knot span and the multi-degree reduction of a whole NURBS curve. This method is easy to carry out, and only involves simple calculations. It provides a new way of doing degree reduction of NURBS curves, which can be widely used in computer graphics and industrial design. Keywords: NURBS curves, matrix representation, multi-degree reduction, Chebyshev polynomials 1. Introduction As different modeling system coming out ceaselessly, as more and more cross-national corporations being established, and internet being more and more popularized, it is common to do designs and machining in different regions. Thus data exchanging, data share and data integration among geometrical descriptive information of various CAD/CAM systems are getting increasingly frequent. Different CAD/CAM systems may have quite different requirement and limitations of the degree of the basis function of curves and surfaces. Furthermore in reality, most CAD/CAM systems usually limit to deal with only low degree curves and surfaces considering the validity. Thus for the sake of data exchanging and data integration among curves and surfaces of different degrees, we should do degree reduction to curves and surfaces of high degree. Besides, in calculations of the functions of curves and surfaces, degree reduction is also frequently used. Therefore, research on algorithms of degree reduction has being widely done currently. On the other hand, NURBS curve is one of the most commonly used mathematical models[1], in the design/modeling systems of many CAD software design companies for its various specialties, which means that its shape is locally adjustable as well as its continuity order, and it can represent a conic curve precisely. So it is obvious that researches on degree reduction of NURBS curves and surfaces are of great importance in the running and development of modeling systems. In spite of its great importance, doing degree reduction to NURBS curves involves knot refinement. Its complicated mathematical expressions often make us flinch. Different from the numerous researches done in Bézier curves and surfaces, researches in degree elevation and degree reduction of NURBS curves and surfaces are quite few. We make a simple view of them in the following. By 1 considering each segment of B-spline curves, Piegl and Tiller[2] let each segment of B-spline curves be represented by a Bézier curve via knot insertion. Thus, algorithms for degree reduction of Bézier curves can be applied. After each Bézier curve segment is degree reduced, the B-spline curves with the desired knots are obtained by the knot removal. Wolters, Wu and Farin presented algorithms for degree reduction of B-spline curves applying the blossoming principle and the least squares method[3]. Yong, Hu, Sun, Tan and Qin, Huang, gave the necessary and sufficient condition for degree-reducible B-spline curves. Consequently algorithms for degree reduction of B-spline curves were proposed using the constrained optimization methods[4-6]. These works are very useful, but it is regrettable that there are two limitations in using the corresponding methods. Firstly, the degree-reduced curve cannot be represented in an explicit form. As a result, the approximation error is difficult to be estimated. Secondly, multi-degree reduction cannot be done in one step. And the step-by-step reduction would surely produce bigger error, and requires much time. To avoid the above-mentioned limitations, we have done researches in multi-degree reduction of NURBS curves in explicit way, and have achieved some results. Applying the explicit matrix representation of NURBS curves[7,8] and the theory of Chebyshev polynomial approximation[9-12], the explicit necessary and sufficient condition for degree-reducible NURBS curves is given. Then a new way of multi-degree reduction is presented in detail, which includes the multi-degree reduction of a NURBS curve on each knot span and the multi-degree reduction of a whole NURBS curve. The algorithm is easy to be realized and achieves good result. It obtains the best uniform approximation and the nearly best uniform approximation respectively. 2. Explicit matrix representation of NURBS curves Given a knot vector T = {t i }i¥=-¥ , t j £ t j +1 , let N i ,k (t ) be the NURBS basis functions of order k on the given knot vector T . Let ri = ( wi xi , wi yi , wi z i , wi ), wi > 0, i = 1,2, L n be n control points under the homogeneous coordinates. Then the NURBS curve of order k (degree k - 1 ) on the given knot vector T can be represented as the n r (t ) = ( X (t ) ,Y (t ) , Z (t ) , w(t )) = å N i ,k (t )ri , i =1 Suppose t k £ t £ t n +1 , n ³ k . (1) t r +1 > t r , now we consider one segment on [t r , t r +1 ) of the NURBS curve (1), which is under the homogeneous coordinates. If the parameter t is transformed by the normalized transform u = (t - t r ) (t r +1 - t r ) , t r £ t < t r +1 , the segment on (2) [t r , t r +1 ) of the NURBS curve can be conversed into a power form polynomial in the following form[7,8] r * (u ) = r åN i = r - k +1 i ,k ( ) (t )ri = 1, u , L , u k -1 A r ,k ,T (rr - k +1 , rr - k + 2 , L , rr ) ,0 £ u < 1 , T (3) where the coefficient matrix is A r ,k ,T = (a j ,i ) k ´k , j = 0,1, L , k - 1; i = r - k + 1, r - k + 2, L , r . 2 (4) Obviously, how to calculate the coefficient matrix is the key problem of power form representation of a NURBS curve. In Ref.7 and Ref.8, two ways of calculating the explicit expression of the coefficient matrix is presented. Here we introduce them as the following two lemmas. 2.1 Explicit matrix representation based on generalized difference quotient Lemma 1. Let the knot vector be written in the form as l (T ) (Ti ) d ( Ti ) i 6444 4l17 4444 8 644444 4 7444444 8 Ti = {t i , t i +1 ,L, t i + k } = {t 1 (Ti ),t 1 (Ti ),L,t 1 (Ti ), L,t d (Ti ) (Ti ),t d (Ti ) (Ti ),L,t d (Ti ) (Ti )} , (5) where l q (Ti ) > 0, q = 1,2, L, d (Ti ); l1 (Ti ) + l 2 (Ti ) + L + l d (Ti ) (Ti ) = k + 1, t 1 (Ti ) < t 2 (Ti ) < L < t d (Ti ) (Ti ); Suppose the interval [t r , t r +1 ) is not empty, then for i = r - k + 1, r - k + 2,L , r , we have k -1 N i ,k (t ) = N i*,k (u ) = å a ji u j ,u = (t - t r ) (t r +1 - t r ) Î [0,1), t Î [t r , t r +1 ) , (6) j =0 a ji = (t i +k - t i )(t r - t r +1 ) j d (Ti ) k -1- max( j , k -ll ) å l =1 t l >t r å m =0 a lm (Ti ) (k - 1)! (t l - t r ) k -1- m - j , j!(k - 1 - m - j )! (7) where Here d lu -1 ö æ a ij (Ti ) = b b (i , j ) çç Õ (t v - t u ) lu lv ÕÕ v!÷÷ , u =1 v = 0 ø è 1£u <v £ d (8) i = 1, ì j, ï i -1 b(i, j ) = í i = 1,2, L, d ; j = 0,1, L , li - 1 . j + l , i > 1 , å c ï c =1 î (9) b i (i = 0,1,L, k ) is the algebraic cofactor corresponding to the ith element in the last column of the matrix H (T ;1, t ,L , k k ) , é1 ê ê0 êM ê ê0 H (T ;1, t ,L, k k ) = ê êM ê1 ê êM ê0 ëê 2.2 t1 1 t 12 L 2t 1 L M 0 M 0 L L M M td t d2 L L M 0 M 0 L L ù t 1k ú k -1 kt 1 ú M ú k! k - l1 +1 ú t1 ú (k - l1 + 1) ! ú. M ú ú t dk ú M ú k! t dk -ld +1 ú (k - l d + 1) ! ûú Explicit matrix representation based on the Marsden identity 3 (10) Lemma 2. [t r , t r +1 ) is not empty, then for i = r - k + 1, r - k + 2,L , r , Suppose the interval we have k -1 N i ,k (t ) = N i*,k (u ) = å a ji u j , u = j =0 a ji = (t r +1 - t r ) j det G r ,k ,T k -1 æmö m= j è ø å çç j ÷÷t m- j r t - tr Î [0,1), t Î [t r , t r +1 ) , t r +1 - t r g m* i , j = 0,1, L , k - 1 . (11) (12) G r ,k ,T is a k ´ k matrix, Here G r ,k ,T = ( g m ,i ) k ´k , m = 0,1, L , k - 1; i = r - k + 1, r - k + 2, L , r , (-1) m m ! ( k -1- m ) w i ,k (0) , (k - 1)! w i ,k ( x) = ( x - t i +1 )( x - t i + 2 ) L ( x - t i + k -1 ),k > 1; g mi = The element (13) (14) w i ,1 ( x) = 1 . (15) g m*i is the algebraic cofactor corresponding to g mi of G r ,k ,T . Applying the two lemmas, a NURBS curve can be transformed into a piecewise Ferguson curve in two ways. This is which our following multi-degree reduction algorithm based on. Taking the length of the paper into account, hereinafter we only use the conversion matrix A r ,k ,T in lemma 1 in our discussion of multi-degree reduction. As for the latter conversion matrix, one can easily get the similar result. 3. Necessary and sufficient condition for degree reducible NURBS curves Based on the lemmas in Section 2, the necessary and sufficient condition for degree reducible NURBS curves on [t r , t r +1 ) can be directly obtained. In Ref.4, the necessary and sufficient condition for degree reducible B-spline curves has been given. But that condition is expressed using the generalized B divided difference. And a system of equations, which is generated from the condition, must be solved to get the corresponding degree reduced curve. While in this paper, a degree reducible condition will be expressed in simple explicit form, and the degree reduced curve can be directly obtained at the same time without solving a system of equations. Theorem 1. The necessary and sufficient condition on the degeneracy of a NURBS curve of order k on [t r , t r +1 ) is r åa j = r - k +1 where r = 0, (16) k -1, j j a ij is shown in equation (7). And the degree reduced curve can be expressed as ~ r (t ) = (N r -k + 2,k -1 (t ), N r - k +3,k -1 (t ),L, N r , k -1 (t ) )´ T A -1 r , k -1,T r r æ r ö ç å a 0, j r j , å a1, j r j ,L , å a k - 2, j r j ÷ . ç j = r-k +1 ÷ j = r-k +1 j = r-k +1 è ø 4 (17) 4. Approximation property of Chebyshev polynomials and the conversion between Chebyshev [9] bases and power form bases n is defined as Chebyshev polynomial of degree Tn ( x) = cos(n arccos x), -1 £ x £ 1. (18) 4.1 The property of the best uniform and the nearly best uniform approximation of Chebyshev polynomials Lemma 3. On the interval n -1 [- 1,1] , the polynomial g ( x) = å a i Ti ( x) of degree n - 1 i=0 n achieves the best uniform approximation of the polynomial f ( x) = å a i Ti ( x) . i=0 Lemma 4. f (x) be a polynomial of degree n on [- 1,1] . If represented by Chebyshev Let n bases, it can be written f ( x) = å a i Ti ( x) as . Then the polynomial i=0 m g ( x) = å a i Ti ( x) (m < n - 1) achieves the nearly best uniform approximation of f (x) . i =0 4.2 Conversion between Chebyshev bases and power form bases A set of Chebyshev bases is a set of polynomials of degree n . Based on the conversion between [12] Chebyshev bases and Bernstein bases , the following equation can be obtained. n æ æ 2n ö Tn (2u - 1) = å (-1) n + i çç çç ÷÷ i =0 è è 2i ø æ nöö n çç ÷÷ ÷÷ Bi (u ), èi øø 0 £ u £ 1. (19) By expanding the Bernstein basis, equation (19) can be written as n n k æ 2n ö n + k æ 2n öæ n - i ö k ÷÷u . Tn (2u - 1) = å (-1) n +i çç ÷÷u i (1 - u ) n -i = åå (- 1) çç ÷÷çç i =0 k = 0 i =0 è 2i ø è 2i øè n - k ø (20) Consequently we can get the following theorem. Theorem 2. The mutual linear representation between Chebyshev bases { } (0 £ u £ 1) and power form bases u i Tn = M n C n´n , where n i =0 {Ti (2u - 1)}in=0 (0 £ u £ 1) can be written in the matrix form as M n = Tn D n´n , D n´n = C -n´1n , Tn = (T0 (2u - 1), T1 (2u - 1),L , Tn (2u - 1) ) , 5 M n = (1, u , L u n ) , (21) (22) C n´n 5. ì i i + j æ 2 j öæ j - k ö ÷÷ i £ j ïå (- 1) çç ÷÷çç = (cij )( n +1)´( n +1) , cij = í k =0 i, j = 0,1, L, n . (23) è 2k øè j - i ø ï0 i> j . î New algorithm for multi-degree reduction of NURBS curves The discussion of degree reduction of NURBS curve under the homogeneous coordinates is equal to that of non-uniform B-spline curve under the affine coordinates. So hereinafter, we will only discuss degree reduction of non-uniform B-spline curve under the affine coordinates. 5.1 One degree reduction of a segment of a NURBS curve Suppose the interval we have [t r , t r +1 ] is not empty. Then for the NURBS curve segment on [t r , t r +1 ] , r åN r (t ) = i = r - k +1 i ,k ( ) (t )ri = r * (u ) = 1, u , L u k -1 A r ,k ,T (rr - k +1 , rr - k + 2 , L , rr ) . T Substitute the equation (21) for the power form bases in the above equation, we can get ( r * (u ) = (T0 ( 2u - 1), T1 ( 2u - 1), L , Tk -1 ( 2u - 1) ) rr*- k +1 , rr*- k + 2 , L , rr* Here (r k -1 ) = å T (2u - 1)r T * i + r - k +1 i i =0 ) = D ( k -1)´( k -1) A r ,k ,T (rr -k +1 , rr -k + 2 ,L , rr ) . From lemma 3, we know that the curve of degree k - 2 , * r - k +1 , rr*- k + 2 ,L , rr* T T (24) k -2 r~ * (u ) = å Ti (2u - 1) ri*+ r - k +1 , (25) is the best uniform degree reduced approximation curve of the curve r * (u ) = å Ti (2u - 1)ri*+ r - k +1 , i=0 k -1 i =0 of which degree is k - 1 . Then equation (21) and lemma 1 will be used to transform (25) into NURBS form. We have the following equations: k -2 ( ) ( r~ * (u ) = å Ti (2u - 1)ri*+ r - k +1 = 1, u , L , u k - 2 C ( k - 2)´( k - 2) rr*- k +1 , rr*- k + 2 , L , rr*-1 i =0 ( = (N r - k + 2, k -1 (t ), N r - k + 3, k -1 (t ), L , N r ,k -1 (t ) ) rr*-*k +1 , rr*-*k + 2 , L , rr*-*1 Here (r ** r - k +1 , rr*-*k + 2 ,L , rr*-*1 ) ( T ) T = ) T r åN i =r - k + 2 i , k -1 (t )ri*-*1 . (26) ) T = A -r ,1k -1,T C ( k - 2)´( k - 2) rr*-k +1 , rr*-k + 2 , L , rr*-1 . (27) Thus the control points of the degree-reduced curve of r (t ) are derived. And the degree-reduced curve can be written in the form as r~ (t ) = r åN i = r -k + 2 i , k -1 (t )ri*-*1 . The above work can be summarized as the following Theorem 3. Theorem 3. r (t ) = As for a NURBS curve segment on r åN i ,k [t r , t r +1 ] , which is expressed in the form as (t )ri , the best uniform degree-reduced curve r~ (t ) can be obtained by the equation i = r - k +1 6 . (26). Its control points can be calculated by the equation (27), where the former ( ) rr*-k +1 , rr*-k + 2 , L , rr*-1 represent T k - 1 elements in the column of rr*-k +1 , rr*-k + 2 , L, rr* . And the matrices D , C , and A is given in equations (21), (23), and (4) respectively. The error bound is T ˆ ˆ rr* = D 1´( k -1) A r , k ,T (rr - k +1 , rr - k + 2 , L , rr ) , where D1´( k -1) is the last row of the matrix D ( k -1)´( k -1) . 5.2 Multi- degree reduction of a segment of a NURBS curve Similar to what we have done in Subsection 5.1, multi-degree reduction of a segment of a NURBS curve can be done in just one step. Assume that the original curve is of order k , and we are supposed k - m (2 £ m £ k - 2) . Our way of doing this is described in the to reduce it to the order of following. Firstly transform the given NURBS curve segment into power form. Then represent it by Chebyshev bases. These two process can be done in one step by the conversion matrices as equation k - m -1 (24) shows. Then take the partial sum of the Chebyshev series as å T (2u - 1)r i i =0 * i + r - k +1 . Afterwards, according to the following formula, (r ** r - k +1 ) T , rr*-*k + 2 , L , rr*-*m ( ) T = A -r ,1k -m ,T C ( k -m -1)´( k - m-1) rr*-k +1 , rr*- k + 2 ,L , rr*-m , (28) transform the partial sum back into NURBS representation. Thus the multi-degree reduced curve is obtained. Based on lemma 4, this multi-degree reduced curve is the nearly best uniform approximation curve of the original curve. The error bound is r år i = r - m +1 where * i = k å i = k - m +1 T ˆ (i ) A D r , k ,T (rr - k +1 , rr - k + 2 , L , rr ) , 1´( k -1) (29) ˆ (i ) D 1´( k -1) is the i-th row of the matrix D ( k -1)´( k -1) . Obviously as for a NURBS curve segment, using the way described in this Subsection in one step is equivalent to using the way in Subsection 5.1 to do multi-degree reduction step by step. 5.3 Multi-degree reduction of a whole NURBS curve For a whole NURBS curve of order k , the adjacent curve segments share k - a control points (the symbol a represents the multiplicities of the knot where the two curve segment connects). Therefore to do multi-degree reduction of a whole NURBS curve, one can firstly do multi-degree reduction to each curve segment respectively. Then calculate the weighted average of the obtained control points, of which the subscripts are the same. Thus the final multi-degree reduced curve is obtained. Assume that the original NURBS curve is of order k , and has n(n ³ k + 1) control points. Our way of doing multi-degree reduction can be reduced to the following algorithm. Algorithm 1. (Multi-degree reduction of a whole NURBS curve) Step1. Step2. n - k + 1 segments, each of which represents the curve segment on [t k , t k +1 ], [t k +1 , t k + 2 ], L , [t n , t n +1 ] , respectively. Assume that the degree-reduced curve is of order m . Separate the given whole NURBS curve into 7 Step3. If k - m = 1 , do as Subsection 5.1 (the corresponding formulae are (24) and (27)). Else, do as Subsection 5.2 (the corresponding formulae are (24) and (28)). Then the degree reduced control points of each segment are obtained. Calculate the weighted average of the obtained control points of which the subscripts are the same. The detailed process is as follows. (Here we only describe the case of multi-degree reduction, i.e., m < k - 1 ) 3.1 Set the initial value of the array [r1 , r2 ,L, rn-k +m ] and [n1 , n2 ,L, nn-k + m ] as 0 0 , respectively. The former array represents the value of the control points of the and degree-reduced curve obtained finally. And the latter one represents the superposition times of the control points, which subscripts are the same, of every segment of degree-reduced curves. 3.2 for (h 3.2.1 3.2.2 = 1, h £ n - k + 1, h + + ) Add the value of the control points of the h-th degree-reduced segment, calculated by Step2, to rh , rh +1 , L rm + h -1 , respectively. for ( j = h, h + 1,L, m + h - 1) (i = 1, i £ n - k + m , i + + ) n-k + m According to the control points {ri }i =1 3.3 for n j = n j + 1. ri = ri / ni . calculated by step 3.3, the whole multi-degree reduced NURBS curve can be rendered. We should point out that when the difference between curvatures of some NURBS curve segments is comparatively great, the result obtained by Algorithm 1 will be affected. In that case, we recommend that the weighted average method be used. The weights of those curve segments of which curvatures vary greatly should be chosen to be larger. Step4. 6. Experiments and results For the sake of visual clarity, our examples here are planar curves. The control points are expressed in the homogeneous coordinates of 2D data. In the figure, the original curve and control polygon are drawn in real line, while the degree reduced curve and control polygon are drawn in dashed. Example 1. Degree reduction of a segment of NURBS curve of order 5. The knot vectors are control points are {ri }i5=1 T = {t i }i =1 = {1.1, 2.2 , 3.3 , 4.2 , 4.8 , 6 , 6.7 , 8.5 , 9 ,11} . The original 10 = {50,40,20} , {10,40,10} , {48,70,12} , {175,100,25} , {65,26,13} . Fig.1 (a) shows how the degree reduction algorithm in Section 5.1 works. Fig.2 (b) shows how the degree reduction algorithm in Section 5.2 works, where a NURBS curve segment of order 5 is degree reduced to that of order 3. We may see that the degree reduced curve almost overlaps the original curve. Thus the algorithm attains high precision. a. Example 2. Reduce one degree b. Reduce two degrees in one step Fig.1: Degree reduction of a segment of NURBS curve Degree reduction of a whole NURBS curve of order 5. 8 The knot vectors are T = {t i }i =1 = {1.1, 2 , 3.1, 4.1, 4.9 , 6 , 6.9 , 8.2 , 9.5 ,10.8 ,11.8 , 17 12.9 ,13.6 ,14.5 ,15.3 ,16 ,16.8 } . The original control points are {ri } 12 i =1 = {15 , 37.5 , 15} , {13 , 32 ,10}, {26 , 52 , 13}, {45 , 77 , 15} , {35 , 52 , 10}, {60 , 72 ,15}, {52 , 30 ,10}, {60 , 27 ,10}, {84 , 30 ,12}, {83 , 35 , 10} , {72 , 32 , 8}, {100 , 50 , 10} . Fig.2 shows how Algorithm 1 in Subsection 5.3 works. The whole curve is reduced to order 4. Fig.2: Degree reduction of a whole NURBS curve 7. Conclusion By applying the explicit matrix representation of NURBS curves and the approximation theory of Chebyshev polynomials, this paper gives the necessary and sufficient condition for degree reducible segment of a NURBS curve in an explicit form. And a new way of multi-degree reduction of both a NURBS curve segment and a whole NURBS curve is presented. The necessary and sufficient condition can be used in fast testing of whether the each segment of the whole NURBS curve is degree reducible. The algorithm for a whole NURBS curve only involves linear operations. Thus it is easy to carry out, and can do multi-degree reduction in only one step. It achieves good precision. Examples show how the algorithm works. It can be fully applied in various modeling systems of NURBS curves. It can also be supposed to be used in modeling systems of NURBS surfaces after some improvements being made. Acknowledgements: This work is supported jointly by the National Natural Science Foundation of China (Grant No.60173034), National Natural Science Foundation for Innovative Research Groups (No.60021201) and the Foundation of State Key Basic Research 973 Item (Grant No.G1998030600). References [1]. Piegl L., Tiller W. The NURBS book. Berlin: Springer, 1995. [2]. Piegl L, Tiller W. Algorithm for degree reduction of B-spline curves. Computer Aided Design, 1995, 27(2): 101-110. [3]. Wolters H J, Wu G, Farin G. Degree reduction of B-spline curves. Computing Supplement, 1998, 13: 235-241. [4]. Yong Junhai, Hu Shimin, Sun Jiaguang, Tan Xingyu. Degree Reduction of B-spline Curves, Computer Aided Geometric Design, 2001, 18(2): 117-127. [5]. Yong Junhai, Hu Shimin, Sun Jiaguang. Degree reduction of uniform B-spline curves. Chinese Journal of Computers (in Chiense), 2000, 23(5): 306-310. [6]. Qin Kaihuai, Huang Haikun, New algorithm for degree reduction of B-spline curves. Chinese Journal of Computers (in Chiense), 2000, 23(3): 537-540. [7]. Wang Guojin, Wang Guozhao, Zheng Jianmin, Computer Aided Geometric Design (in Chiense). Beijing: CHEP-Springer, 9 2001. [8]. Liu Ligang and Wang Guojin, Explicit matrix representation for NURBS curves and surface, Computer Aided Geometric Design, 2002, 19(6): 409-419 [9]. Fox, L. and Parker, I.B., Chebyshev Polynomials in Numerical Analysis, London: Oxford University Press, 1968. [10]. Eck, M., Degree reduction of Bézier curves, Computer Aided Geometric Design, 1993, 10(4), 237-251. [11]. Eck, M., Least squares degree reduction of Bézier curves, Computer Aided Design, 1995, 27(11), 845-851. [12]. Schumaker, L.L., Spline Functions: Basic Theory, New York: Wiley, 1981. 10