Mentioned in questions and answers.

Given 3 vertices and their normals in a 3D triangular mesh, I am interpolating them over the triangular surface. And I want to calculate the principal curvatures k1, k2 for each point in that surface.

My code briefly looks like this:

Vertex v1,v2,v3,v12,p,vp; // Vertex is an structure of x,y,z and some operators
v1 = ...;   v2 = ...;   v3 = ...;
Vertex n1,n2,n3,n12,n;//normals
n1 = ...;   n2 = ...;   n3 = ...;
int interLevels = ceil(sqrt(tArea(v1,v2,v3)));
for (float a=0; a<=1;a+=1.0f/interLevels){
    v12 = v1*a+v2*(1-a);
    n12 = n1*a+n2*(1-a);
    for (float b=0; b<=1;b+=1.0f/interLevels){
        p = v12*b+v3*(1-b);
        n = n12*b+n3*(1-b);

        Vertex k1,k2;       


How can we calculate k1 and k2? Is it enough to depend on the given input, or should I consider nearby vertices?

Implementation of a really working algorithm is so complex that it is impossible to describe it in a brief post. I am not aware of any readily available implementations for triangulated surfaces, but there is a detailed algorithm for surfaces consisting of quadrilaterals (transformation of triangulated surfaces to quadrangulated ones is possible; there is a variety of approaches to do that). Such problem is typical in the Finite Element Analysis of shells, whose surfaces are meshed to triangular of quadrilateral elements. An important thing is that calculation of the principal curvatures can only be done on very accurately interpolated surfaces, since it implies a necessity of numerical evaluation of second derivatives. For that reason, interpolation should be made by at least the 2nd-order elements (just a triangle obviously has zero curvature in any direction at any point belonging to its surface). There is a book that contains a very detailed (with all exceptions and special cases considered) algorithm that allows evaluation of principal curvatures on any smooth surface. That algorithm is contained in Chapter 5; and the book is also supplied with a CD-ROM containing complete source codes implementing the algorithms developed in Chapter 5. A brief overview is available on website that belongs to the developers of the algorithm:

Here is a link to that book on the Amazon website:

Hope this helps.