Code covered by the BSD License

Highlights from Patch Curvature

4.22222
4.2 | 10 ratings Rate this file 26 Downloads (last 30 days) File Size: 314 KB File ID: #32573 Version: 1.2

Patch Curvature

Dirk-Jan Kroon (view profile)

18 Aug 2011 (Updated )

Principal, Gaussian and Mean Curvature of triangulated mesh

File Information
Description

This function calculates the principal curvature directions and values
of a triangulated mesh.

The function first rotates the data so the normal of the current
vertex becomes [-1 0 0], so we can describe the data by XY instead of
XYZ.
Secondly it fits a least-squares quadratic patch to the local
neighborhood of a vertex "f(x,y) = ax^2 + by^2 + cxy + dx + ey + f".
Then the eigenvectors and eigenvalues of the hessian are used to
calculate the principal, mean and gaussian curvature.

[Cmean,Cgaussian,Dir1,Dir2,Lambda1,Lambda2]=patchcurvature(FV,usethird)

inputs,
FV : A triangulated mesh (see Patch)
usethird : Use third order neighbour vertices for the curvature
fit, making it smoother but less local. true/ false (default)

outputs,
Cmean : Mean Curvature
Cgaussian : Gaussian Curvature
Dir1 : XYZ Direction of first Principal component
Dir2 : XYZ Direction of second Principal component
Lambda1 : value of first Principal component
Lambda2 : value of second Principal component

MATLAB release MATLAB 7.12 (R2011a)
30 Jun 2016 G. Sken

G. Sken (view profile)

By shifting around a sphere we obtain different curvatures. thus the curvature seems to depend on the position of the centre (?)
...
[xx,yy,zz] = meshgrid(1:side,1:side,1:side);
c=[h_side h_side h_side]; % centre
rr = sqrt( (xx-c(1)).^2 + (yy-c(2)).^2 + (zz-c(3)).^2 );
[...]=patchcurvature(FV,usethird);

10 Mar 2016 XiaoGang

XiaoGang (view profile)

30 Oct 2015 Stefano Cauzzi

Stefano Cauzzi (view profile)

Great tool, however I keep on getting the following warning:
Warning: Rank deficient
Did anyone experience the same problem? Did you find a solution?

04 Feb 2015 Helia

Helia (view profile)

why shifting the cylinder changes the curvature values? Is there an error in calculation?
I used the cylinder provided with this code but shifted the vertices keeping the same scaling. I obtained a different curvature values. Sounds strange to me.

11 Dec 2014 Marta

Great!

26 Oct 2014 Leo

Leo (view profile)

Dear author, Thank you for this work.

k = rand(1,3)
in the VectorRotationMatrix.
It will be very kind of you, if you can give me some hint.
Thanks again.

15 Jan 2014 Binhang

Binhang (view profile)

This version seems much better!

15 Jan 2014 Dirk-Jan Kroon

Dirk-Jan Kroon (view profile)

* Binhang
Thank you, there was a bug which I solved by removing abs from the eigenvalues. This version will probably be online in one or two days.

Comment only
13 Jan 2014 Binhang

Binhang (view profile)

Dear author, I have a question for the result.

Have you ever test your code for the torus? Did you notice that all the values for gauss and mean curvature are positive?

Well, I think this is incorrect.

06 Apr 2013 baziham

baziham (view profile)

06 Mar 2012 SABYASACHI DASGUPTA

SABYASACHI DASGUPTA (view profile)

Dear Mr.Kroon ,
Is it possible that you include how to calculate squared mean curvature over the mesh .
Regards,
Sabya

Comment only
10 Jan 2012 Jonathan Sullivan

Jonathan Sullivan (view profile)

Great submission. Very help. Nice examples provided too!

15 Jan 2014 1.2

Fixed eigenvector calculation, sign of eigenvalues and sorting of eigenvectors