# How to compute principal components for a curvature found given XYZ points?

I have a certain XYZ set of points that make up an object. I chose a random point and make the nearest radius analysis and find the neighbors. From these neighbors, I get the green pointcloud curve which can be seen in the figure.

My goal now is to describe the curvature of those points with respect to the random point chosen (now the one on the top). What I found by searching is this:

The point cloud itself can be parameterized into a covariance matrix which will describe the data well. Then I know I need to find the principal components which can be done by taking an evd or svd. However, I have some questions.

The evd and svd will give 3 orthonomal vectors and 3 values each. To describe curvature I need k1,k2. Will these be the first two eigenvalues or the two first singular values? What does the third eigenvalue represent then?

Taking the svd will give only positive singular values and I found online that the evd of a covariance matrix gives only positive values. How can I classify my curvature into surface point classes as specified in the wiki article on principal curvature if these methods return positive values only?

Is this method rotation invariant? When passing the subsample of XYZ it can be saddle formed but if it were rotated 180 degrees it would have a "taco" form? The question could be irrelevant because XYZ is still represented within the local frame.

Or should I take another approach?

• I have implemented this with an SVD and used the first 2 singular values. I have compared these 2 singular values on flat surface and a "curvy" surface and the values correlates very well. I still want to know about the non-positive k1,k2 but It is possible I wont need them. May 8, 2022 at 16:50