Mathematical Problems in Engineering

Volume 2013 (2013), Article ID 290740, 19 pages

http://dx.doi.org/10.1155/2013/290740

## Feature Extraction from 3D Point Cloud Data Based on Discrete Curves

School of Control Science and Engineering, Dalian University of Technology, Dalian, Liaoning 116023, China

Received 17 January 2013; Accepted 23 February 2013

Academic Editor: Jun Zhao

Copyright © 2013 Yi An et al. This is an open access article distributed under the Creative Commons Attribution License, which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.

#### Abstract

Reliable feature extraction from 3D point cloud data is an important problem in many application domains, such as reverse engineering, object recognition, industrial inspection, and autonomous navigation. In this paper, a novel method is proposed for extracting the geometric features from 3D point cloud data based on discrete curves. We extract the discrete curves from 3D point cloud data and research the behaviors of chord lengths, angle variations, and principal curvatures at the geometric features in the discrete curves. Then, the corresponding similarity indicators are defined. Based on the similarity indicators, the geometric features can be extracted from the discrete curves, which are also the geometric features of 3D point cloud data. The threshold values of the similarity indicators are taken from , which characterize the relative relationship and make the threshold setting easier and more reasonable. The experimental results demonstrate that the proposed method is efficient and reliable.

#### 1. Introduction

Rapid developments in 3D rangefinder technology allow us to accurately and conveniently digitize the shape and surface of physical objects [1, 2]. The 3D point cloud data acquired by 3D rangefinders, such as laser scanners, provide the geometric information of the sampling points on the surfaces of physical objects. Nowadays, 3D point cloud data processing techniques have been applied to various domains, including object recognition, industrial inspection, reverse engineering, and autonomous navigation. The geometric features in 3D point cloud data, such as ridges and corners which are composed of the geometric discontinuities, contain the important information of physical objects which frequently require special attention to achieve high accuracy and reliability. Therefore, feature extraction is essential to 3D point cloud data processing, especially to segmentation, reconstruction, and registration.

According to differential geometry, the geometric features in 3D point cloud data can be categorized into three types: discontinuities, discontinuities, and discontinuities. At the discontinuities, the positions are discontinuous; at the discontinuities, the positions are continuous, while the normals are discontinuous; at the discontinuities, the positions and normals are continuous, while the curvatures are discontinuous. Due to the importance of the geometric features, many researchers have devoted themselves to developing methods to identify discontinuities and extract geometric features from 3D point cloud data for different purposes in the past 30 years. Fan et al. [3] showed the behaviors of curvatures in jump boundaries (), folds (), and ridge lines () and used the zero crossings and extrema of curvatures to extract these geometric features from 3D point cloud data. In [4], a curvature consistency algorithm is proposed to improve the estimates of Darboux frames. Then, the orientation discontinuities () are smoothed into local maxima or minima along one of the principal directions, and the depth discontinuities () are identified by considering the angle between the surface normal and the view vector. Similarly, Milroy et al. [5] developed a method to extract the discontinuous points (edge points) from orthogonal cross-section models for segmentation. In order to segment point cloud data, Yang and Lee [6] used a parametric quadric surface approximation to estimate the local surface curvature properties and identified the edge points by a two-step process. Huang and Menq [7] reconstructed a triangle mesh structure from unorganized 3D point cloud data and used the curvature-based border detection to extract the and borders from the triangle meshes. Similar to the method proposed by Huang and Menq [7], Baker [8] and Jiao and Bayyana [9], respectively, proposed their methods to identify the geometric features and the , discontinuities from triangle meshes by using the geometric and topological information, such as the dihedral angle, turning angle, angle defect, and ridge valence. Recently, Várady et al. [10] developed a novel method for automatic extraction of surface structures based on discrete Morse theory, which can extract features similar to the discontinuities from triangle meshes.

In the most above-mentioned methods, the thresholds of geometric indicators (such as normal vectors and principal curvatures) or error indicators (e.g., the average errors obtained on plane and surface fitting) need to be set for the whole point cloud region to identify the discontinuities and extract the geometric features. Setting good threshold values may be fairly easy, if the user is experienced and has reconstructed several objects with similar shapes from similar data earlier. However, it is a difficult task to find appropriate threshold values for an unfamiliar object with unknown dimensions and noise distribution, and several iterations may be needed until the proper values are found [11]. This is because these indicators have no explicit ranges for the whole point cloud region of an unfamiliar object. To avoid this problem, a new method is proposed to extract the geometric features from the structured 3D point cloud data, which are generated by regular sampling on a certain grid, based on discrete curves in this paper. It differs from the existing methods in that we extract the discrete curves from the structured 3D point cloud data firstly. Then, the chord lengths, angle variations, and curvatures are estimated from the discrete curves, and the corresponding similarity indicators are calculated. Based on the similarity indicators, the geometric features can be extracted from the discrete curves, which are also the geometric features of 3D point cloud data. The threshold value of the similarity indicator is taken from , which characterizes the relative relationship and makes the threshold setting easier and more reasonable.

#### 2. Geometric Properties Estimation from Discrete Curves

In this section, we introduce our method for estimating the geometric properties from discrete curves based on derivative estimation [12]. We develop derivative estimation by defining the derivative of a discrete function at a point, which will be called the discrete derivative, based on the previous research [13–15]. By using the discrete derivatives, classical differential geometry is discretized, and the geometric properties are estimated from discrete curves.

##### 2.1. Derivatives of a Discrete Function

In mathematics, a function that is defined only for a set of numbers is called a *discrete function*. Generally, a discrete function is denoted by
like a series of points .

In calculus, the derivative of a continuous function at a point equals the slope of the tangent line to the graph of the function at that point. Similarly, the derivative of a discrete function at a given point can also be thought of as the slope of the tangent line to the graph of the discrete function at , which is called the *discrete tangent line*. We define the *discrete tangent line* at as the straight line which simultaneously meets two requirements: the straight line passes through the point ; the sum of the squares of the distances between the straight line and the neighboring points of along -axis is minimal. As shown in Figure 1, if the discrete function is a sampling of a continuous differentiable function , the discrete tangent line will approximate to the tangent line at when , , …, , and are very close.

According to the definition, the discrete tangent line at can be obtained by

Therefore, the slope of the discrete tangent line at can be solved as

*Definition 1. *Let be a discrete function. The value given by
is called the *derivative* of the discrete function at the point , which we will call the *discrete derivative* for short.

If we calculate the discrete derivative at each point on the discrete function , then a new discrete function , called the *first order discrete derivative function* is produced. Its derivative at is called the *second order discrete derivative* of at and is given in the same way of Definition 1 as follows:
By parity of reasoning, the th order discrete derivative at can also be defined.

##### 2.2. Geometric Properties of the Discrete Curve

A *discrete curve * is composed of a series of discrete points , as shown in Figure 2. In order to estimate the geometric properties from a discrete curve, we must parametrize the discrete curve at first. In our research, the location parameters are assigned by the chord length parametrization method [16]. In this case, the cumulative chord length parameter at each point is defined as
with . Then, the discrete curve can be thought of as a mapping where and , that is,
where the coordinate functions , , and are regarded as the discrete functions of the chord length parameter . Naturally, the definitions of the discrete derivatives can be used for , for example, .

In differential geometry, most geometric properties are defined by using the curve parametrized by arc length , such as the *unit tangent vector *, *curvature *, and *principal normal vector * [17]. (In order to distinguish the derivatives with respect to different parameters, the derivative with respect to the arc length parameter is denoted by , and that with respect to a general parameter is denoted by .) However, these definitions can not be directly used for a discrete curve , because it is impossible for the discrete curve to be parametrized by arc length . In order to apply the geometric properties of the parametrized differential curve to the discrete curve , we must deduce the geometric properties of the curve which is parametrized by a general parameter at first. Let be a curve parametrized by a general parameter . By geometric derivation [12], the geometric properties of the curve , such as the *unit tangent vector *, *curvature *, and *principal normal vector *, can be calculated by
Based on the geometric properties (8) of , we give the definition of the geometric properties of the discrete curve by using the discrete derivatives.

*Definition 2. *Let be a discrete curve parametrized by chord length. We say that (1)* is the unit tangent vector of the discrete curve *;(2)* is the curvature of the discrete curve *;(3)* is the principal normal vector of the discrete curve *.

The derivative of the discrete vector function is calculated by Definition 1, that is, . Similar to the second order discrete derivative, is then calculated. These geometric properties of the discrete curve are the reliable estimates of the geometric properties of the underlying continuous curve. Therefore, Definition 2 provides a simple and reliable method to estimate the geometric properties from discrete curves. Figure 3 presents the results of the geometric properties estimation from the three discrete spatial curves: the discrete clelia curve, the discrete elliptic helix, and the discrete toric solenoid. As can be observed, our method has very good estimation performance.

#### 3. Behaviors of the Geometric Properties at the Geometric Discontinuities

According to differential geometry, the geometric discontinuities of continuous curves can be categorized into three types: , , and discontinuities. At the discontinuity, the position is discontinuous; at the discontinuity, the position is continuous, while the tangent vector is discontinuous; at the discontinuity, the position and tangent vector are continuous, while the curvature is discontinuous. As we know, the discrete curve can be thought of as the sampling of a continuous curve. Therefore, the discrete curve also includes the geometric discontinuities sometimes. Now, we will study the behaviors of the geometric properties of the discrete curve at the geometric discontinuities, such as the chord length , the angle variation of the unit tangent vector , and the curvature .

Figure 4 shows the chord length, angle variation, and curvature estimated by our method at the discontinuity without noise. As can be observed, the chord length exhibits an isolated extremum, and the angle variation and curvature both exhibit two extrema. In order to study the discontinuity further, the zero-mean Gaussian noise is added to all position coordinates. The standard derivation is set to 50% where is the average distance between two neighboring points. Figure 5 shows the chord length, angle variation, and curvature at the discontinuity with noise. As can be observed, the geometric properties exhibit the similar behaviors as those without noise, and the chord length is the least affected by noise, since the chord length is the lowest order geometric property.

Figures 6, 7, 8, 9, 10, and 11 show the chord lengths, angle variations, and curvatures estimated by our method at the three types of discontinuities, which are formed by two straight lines (Type I, as shown in Figures 6 and 7), two convex curves (Type II, as shown in Figures 8 and 9), and two concave curves (Type III, as shown in Figures 10 and 11), respectively, without and with noise. As can be observed, the chord lengths change gradually and do not have the sudden change. That is because the position is continuous at the discontinuity. From the experimental results, we can also find that the angle variations and curvatures both undergo an isolated extremum. The noise has some effect on the angle variations and curvatures, but the angle variations and curvatures still have an obvious change which can be detected.

Figure 12 shows the chord length, angle variation, and curvature estimated by our method at the discontinuity without noise. As can be observed, the chord length and angle variation change gradually, while the curvature undergoes a jump. That is because the position and tangent vector are continuous, while the curvature is discontinuous at the discontinuity. Figure 13 shows the chord length, angle variation, and curvature estimated by our method at the discontinuity with noise. From the experimental results, we can find that the discontinuity has been drowned out by noise, and the curvature variation at the discontinuity can not be detected. That is because the curvature is the second order geometric property, which is affected by noise more easily.

From the above-mentioned analysis, we can conclude that at the discontinuity, the chord length has the obvious change and exhibits an isolated extremum; at the discontinuity, the angle variation of the unit tangent vector has the obvious change and exhibits an isolated extremum; at the discontinuity, the curvature has the obvious change and exhibits a jump. These behaviors of the geometric properties will enable us to identify the , , and discontinuities from the discrete curves effectively and reliably.

#### 4. Similarity Indicator

In order to extract the discontinuities more effectively, we will study the variations of the geometric properties in the different neighborhoods further. Let be a given point on the discrete curve , as shown in Figure 14. and are two neighborhoods of on , where is larger than , that is, . The cumulative chord length , unit tangent vector , and curvature at the point can be calculated by our method. The variations and of the cumulative chord length in and are, respectively, calculated by The variations and of the unit tangent vector in and are, respectively, calculated by The variations and of the curvature in and are, respectively, calculated by

Based on (9)–(11), the similarity indicators of the cumulative chord length , unit tangent vector , and curvature at are defined as follows.

*Definition 3. *Let be a given point on the discrete curve . We say that (1) is the similarity indicator of the cumulative chord length at ;(2) is the similarity indicator of the unit tangent vector at ;(3) is the similarity indicator of the curvature at .

At a point far away from the discontinuity, the cumulative chord length changes gradually, since the point has the continuous position. Therefore, we can think that the variation between two neighboring points is a constant , which makes . At a point near the discontinuity, the cumulative chord length changes suddenly, and becomes larger, which makes . Figure 15 shows the similarity indicator of the cumulative chord length at the discontinuity without noise, where and . As can be observed, the similarity indicator at the point far away from the discontinuity is approximately equal to , while the similarity indicator at the point near the discontinuity is much greater than (), which is in accord with our theoretical analysis. Figure 16 shows the similarity indicator at the discontinuity with noise. As can be observed, the similarity indicator exhibits the same behavior as that without noise. From the experimental result, we can also find that the similarity indicator is robust to noise.

Similarly, at a point far away from the discontinuity, the unit tangent vector changes gradually, which makes . At a point near the discontinuity, the unit tangent vector changes suddenly, and becomes larger, which makes . Figures 17 and 18 show the similarity indicators of the unit tangent vector at the discontinuities without and with noise, where and . As can be observed, far away from the discontinuity , while near the discontinuity .

In the same principal, at a point far away from the discontinuity, the curvature changes gradually, since the point has the continuous curvature, which makes . At a point near the discontinuity, the curvature changes suddenly, and becomes larger, which makes . Figure 19 shows the similarity indicator of the curvature at the discontinuity without noise, where and . As can be observed, far away from the discontinuity , while near the discontinuity . Figure 20 shows the similarity indicator at the discontinuity with noise. From the experimental result, we can find that the similarity indicator is sensitive to noise, which makes it difficult for us to detect the discontinuity.

From the above-mentioned analysis, we can find that the similarity indicators , , and are approximately equal to at the points far away from the , , and discontinuities, while the similarity indicators , , and are much greater than at the points near the , , and discontinuities. This conduces to identify the areas near the discontinuities. Another advantage of the similarity indicators is that their thresholds are taken from , because , , and , which characterises the relative relationship and makes the threshold setting easier and more reasonable.

#### 5. Discontinuity Identification from the Discrete Curves

In order to extract the geometric features from 3D point cloud data, we will identify the , , and discontinuities (the , , and discontinuous points) from the discrete curves, respectively, by using a two-step method. The first step is to identify the points near the , , and discontinuities, which are called the *candidate points*. Then, the , , and discontinuous points are extracted from the candidate points, respectively, in the second step.

##### 5.1. Identifying the Discontinuous Points

As mentioned in Section 4, the similarity indicators at the points near the discontinuity are much larger. Therefore, the candidate points of the discontinuous points are identified as the points at which the similarity indicators are larger than a threshold value. In this paper, the threshold value of the similarity indicator is set to . Then, we will extract the discontinuous points from their candidate points. As analyzed in Section 3, the chord length exhibits an isolated extremum at the discontinuity. Therefore, the discontinuous points are identified as the candidate points whose chord lengths are the isolated extrema.

The above-mentioned method can identify the discontinuous points reliably in most of the time, but sometimes the discrete curves will be seriously polluted by noise, which will make some points have small extrema of chord lengths. Obviously, these small extrema of chord lengths are caused by noise, and the corresponding points are not the real discontinuous points. Therefore, in order to reduce the noise influence and improve the identification reliability, we will remove these points by using the statistical method. First, the distribution of the chord lengths is calculated by the statistical histogram for the whole discrete curve. As we know, the number of the continuous points is much greater than that of the discontinuous points. Therefore, if the small extrema of chord lengths have higher frequencies, the corresponding points are the continuous points and will be removed. Figure 21 shows the candidate points (green points) and the discontinuous points (blue points) identified by our method.

##### 5.2. Identifying the Discontinuous Points

In order to facilitate the discontinuity identification, we remove the identified discontinuous points from the discrete curve, and then the discrete curve is segmented into several sections by the removed points. As shown in Figure 21, the discrete curve is divided into two sections by the discontinuous points. Every section of discrete curve has its own geometrical characteristic. Therefore, we should identify the discontinuous points from each section of discrete curve individually.

As shown in Figures 17 and 18, the similarity indicators at the points near the discontinuity are much larger. Therefore, the candidate points of the discontinuous points are identified as the points at which the similarity indicators are larger than a threshold value. In this paper, the threshold value of the similarity indicator is set to . As analyzed in Section 3, the angle variation of the unit tangent vector exhibits an isolated extremum at the discontinuity. Therefore, the discontinuous points are identified as the candidate points whose angle variations are the isolated extrema. Similar to the discontinuity identification, we also use the statistical method to remove the points, which have the small extrema of angle variations caused by noise, from the identified discontinuous points to improve the identification reliability. Figure 22 shows the candidate points (green points) and the discontinuous points (blue points) identified by our method.

##### 5.3. Identifying the Discontinuous Points

In order to facilitate the discontinuity identification, we will remove the identified discontinuous points from the discrete curve successively. Then, the discrete curve will be segmented into more small sections by the removed discontinuous points, and we will identify the discontinuous points from each small section of discrete curve individually.

As shown in Figures 19 and 20, the similarity indicators at the points near the discontinuity are much larger. Therefore, the candidate points of the discontinuous points are identified as the points at which the similarity indicators are larger than a threshold value. In this paper, the threshold value of the similarity indicator is set to . As analyzed in Section 3, the curvature exhibits a jump at the discontinuity; that is, the curvature variation exhibits an isolated extremum at the discontinuity. Therefore, the discontinuous points are identified as the candidate points whose curvature variations are the isolated extrema. Similar to the and discontinuity identification, we also use the statistical method to remove the points, which have the small extrema of curvature variations caused by noise, from the identified discontinuous points to improve the identification reliability. Figure 23 shows the candidate points (green points) and the discontinuous points (blue points) identified by our method.

#### 6. Feature Extraction from 3D Point Cloud Data

As we know, the geometric features can be categorized into three types: , , and discontinuities according to the differential geometry. In general, the discontinuities for object surfaces are composed of piecewise smooth curves. However, for 3D point cloud data, the discontinuities are composed of discrete data points, that is, the , , and discontinuous points.

From the structured 3D point cloud data, which are obtained by regular sampling on a certain grid, four groups of discrete curves: the horizontal discrete curves (purple), the vertical discrete curves (blue), the down-sloping discrete curves (brown), and the up-sloping discrete curves (green) can be extracted along four directions, as shown in Figure 24. In order to extract the discontinuous points from the structured 3D point cloud data, the , , and discontinuous points should be extracted from each group of discrete curves by using our method at first. Then, four groups of identified , , and discontinuous points are merged together according to the type of geometric discontinuity by logical OR operation. These merged , , and discontinuous points are exactly the different types of discontinuous points of the 3D point cloud data, that is, the geometric features of the 3D point cloud data.

#### 7. Experimental Results

In order to show the performance of our method, we experiment with both synthetic and real 3D point cloud data. The synthetic 3D point cloud data used for the experiments are generated by regular sampling a geometrical model which includes , , and discontinuities, as shown in Figure 25(a). Figures 25(c)–25(f) shows the discontinuous points extracted from four groups of discrete curves: the horizontal discrete curves (Figure 25(c)), the vertical discrete curves (Figure 25(d)), the down-sloping discrete curves (Figure 25(e)), and the up-sloping discrete curves (Figure 25(f)) along four directions. Figure 25(b) shows the merging result. As can be observed, the geometric features (the , , and discontinuous points) are accurately extracted from the 3D point cloud data of the model. The real 3D point cloud data used for the experiments are acquired by scanning the mouse (), blade (), terracotta warrior model (), and gear () with the 3D laser scanner. Figure 26 shows the feature extraction results from the 3D point cloud data of the mouse (Figure 26(a)), blade (Figure 26(b)), terracotta warrior (Figure 26(c)), and gear (Figure 26(d)). As can be observed, the geometric features are reliably extracted from the real 3D point cloud data. From the experiments, we can find that the extraction results obtained by our method are consistent with the actual situation, which demonstrates that our method is efficient and reliable.

#### 8. Conclusion

In this paper, we propose a novel method for extracting the geometric features (the , , and discontinuities) from 3D point cloud data based on discrete curves. By using the discrete curves extracted from 3D point cloud data, the chord lengths, angle variations, curvatures, and similarity indicators are calculated, and the discontinuous points are identified from the discrete curves. After the merging process, we can get the geometric features for 3D point cloud data. In this method, the similarity indicators make the threshold setting easier and more reasonable and improve the performance of feature extraction. From the experimental results, we can conclude that the proposed feature extraction method is efficient and reliable.

#### Acknowledgments

The authors thank all the reviewers for their constructive comments to improve the paper. This work is supported by National Natural Science Foundation of China (Grant no. 61074020).

#### References

- F. Chen, G. M. Brown, and M. Song, “Overview of three-dimensional shape measurement using optical methods,”
*Optical Engineering*, vol. 39, no. 1, pp. 10–22, 2000. View at Publisher · View at Google Scholar · View at Scopus - F. Blais, “Review of 20 years of range sensor development,”
*Journal of Electronic Imaging*, vol. 13, no. 1, pp. 231–243, 2004. View at Publisher · View at Google Scholar · View at Scopus - T. J. Fan, G. Medioni, and R. Nevatia, “Segmented descriptions of 3-D surfaces,”
*IEEE Journal of Robotics and Automation*, vol. 3, no. 6, pp. 527–538, 1987. View at Google Scholar · View at Scopus - F. P. Ferrie, J. Lagarde, and P. Whaite, “Darboux frames, snakes, and super-quadrics: geometry from bottom up,”
*IEEE Transactions on Pattern Analysis and Machine Intelligence*, vol. 15, no. 8, pp. 771–784, 1993. View at Publisher · View at Google Scholar · View at Scopus - M. J. Milroy, C. Bradley, and G. W. Vickers, “Segmentation of a wrap-around model using an active contour,”
*Computer-Aided Design*, vol. 29, no. 4, pp. 299–320, 1997. View at Google Scholar · View at Scopus - M. Yang and E. Lee, “Segmentation of measured point data using a parametric quadric surface approximation,”
*Computer-Aided Design*, vol. 31, no. 7, pp. 449–457, 1999. View at Publisher · View at Google Scholar · View at Scopus - J. Huang and C. H. Menq, “Automatic data segmentation for geometric feature extraction from unorganized 3-D coordinate points,”
*IEEE Transactions on Robotics and Automation*, vol. 17, no. 3, pp. 268–279, 2001. View at Publisher · View at Google Scholar · View at Scopus - T. J. Baker, “Identification and preservation of surface features,” in
*Proceedings of the 13th International Meshing Roundtable*, pp. 299–310, 2004. - X. Jiao and N. R. Bayyana, “Identification of ${C}^{1}$ and ${C}^{2}$ discontinuities for surface meshes in CAD,”
*Computer-Aided Design*, vol. 40, no. 2, pp. 160–175, 2008. View at Publisher · View at Google Scholar · View at Scopus - T. Várady, M. A. Facello, and Z. Terék, “Automatic extraction of surface structures in digital shape reconstruction,”
*Computer-Aided Design*, vol. 39, no. 5, pp. 379–388, 2007. View at Publisher · View at Google Scholar · View at Scopus - P. Benko and T. Várady, “Segmentation methods for smooth point regions of conventional engineering objects,”
*Computer-Aided Design*, vol. 36, no. 6, pp. 511–523, 2004. View at Publisher · View at Google Scholar · View at Scopus - Y. An, C. Shao, X. Wang, and Z. Li, “Geometric properties estimation from discrete curves using discrete derivatives,”
*Computers and Graphics*, vol. 35, no. 4, pp. 916–930, 2011. View at Publisher · View at Google Scholar · View at Scopus - N. J. Mitra and A. Nguyen, “Estimating surface normals in noisy point cloud data,” in
*Proceedings of the 19th Annual Symposium on Computational Geometry*, pp. 322–328, San Diego, Calif, USA, June 2003. View at Scopus - J. Berkmann and T. Caelli, “Computation of surface geometry and segmentation using covariance techniques,”
*IEEE Transactions on Pattern Analysis and Machine Intelligence*, vol. 16, no. 11, pp. 1114–1116, 1994. View at Publisher · View at Google Scholar · View at Scopus - W. L. Wang, “Some properties of finite discrete functions,”
*Journal of Inner Mongolia Normal University*, vol. 28, no. 2, pp. 106–110, 1999. View at Google Scholar · View at MathSciNet - W. Ma and J. P. Kruth, “Parameterization of randomly measured points for least squares fitting of B-spline curves and surfaces,”
*Computer-Aided Design*, vol. 27, no. 9, pp. 663–675, 1995. View at Google Scholar · View at Scopus - M. P. do Carmo,
*Differential Geometry of Curves and Surfaces*, Prentice Hall, Englewood Cliffs, NJ, USA, 1976.