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.

enter image description here

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?

  • $\begingroup$ 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. $\endgroup$
    – Hamzalihi
    May 8, 2022 at 16:50

1 Answer 1


I haven't heard of PCA being used to define curvature. I know, though, that PCA is a useful tool to reduce dimensionality of multivariate data, where most of the data that you have may only be relevant across certain dimensions and not others. In this situation, PCA helps you reducing the size of the problem at the cost of losing some explanatory power by telling you how you can rearrange your orthogonal axis in a completely different way that happens to order those dimensions from most relevant to least.

Effectively, that allows you, often times, reduce your dimensionality to - let's say- half of what it was in the first place, losing - say- 5% of the explanatory power.

In your case, and the point cloud you show, those local patches are 3 dimensional. If they are "flat" enough, PCA will give you some 3 new orthogonal axis where the first two will be good enough to describe your local patch, and the third one you can toss it.

And I imagine, that dimensionality reduction may ease the calculation of the curvature since your are down to a 2D space instead of a 3D one.


You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .