Matlab deja de interpolar los colores en una malla correctamente si es más grande que 120 triángulos

Estoy tratando de dibujar una gran malla en Matlab usando eltrimesh Función, con la coordenada z de los vértices que controlan el color. Desafortunadamente, Matlab deja de interpolar los colores correctamente cuando el tamaño de la malla supera los 120 triángulos. Aquí hay una imagen que muestra el problema, con 120 triángulos a la izquierda y 121 triángulos a la derecha.

Como puede ver, para mallas grandes, Matlab interpola directamente desde el color de un vértice al color del otro vértice. Probablemente esto se hizo por razones de rendimiento, pero estoy tratando de generar buenas imágenes para mi tesis, y no me importa cuánto tiempo se tarda en calcularlas. ¿Hay alguna manera de deshabilitar esta aproximación?

Aquí está el código para generar la imagen:

function test(n)
    %%% Generate a mesh with n triangles.

    oneTriVerts = [0 0 0;
                   1 0 0;
                   1 0 1];

    offset = [0 (1/n) 0;
              0 (1/n) 0;
              0 (1/n) 0];

    verts = zeros(0,3);
    tris  = zeros(0,3);
    for i = 0:(n-1)
        verts = [verts; (oneTriVerts + i * offset)];
        tris = [tris; i*3+1, i*3+2, i*3+3];
    end

    %%% Draw the mesh, with color corresponding to the z coordinate.

    trimesh(tris, verts(:,1), verts(:,2), verts(:,3), verts(:,3));
    title(sprintf('n = %d', n))
    shading interp
    axis equal

Respuestas a la pregunta(1)

Su respuesta a la pregunta