O Matlab pára a interpolação de cores em uma malha corretamente se for maior que 120 triângulos
Eu estou tentando desenhar uma malha grande em Matlab usando otrimesh
função, com a coordenada z dos vértices controlando a cor. Infelizmente, o Matlab interrompe a interpolação de cores corretamente quando o tamanho da malha excede 120 triângulos. Aqui está uma foto demonstrando o problema, com 120 triângulos à esquerda e 121 triângulos à direita.
Como você pode ver, para malhas grandes, o Matlab interpola diretamente da cor de um vértice para a cor do outro vértice. Provavelmente, isso foi feito por motivos de desempenho, mas estou tentando gerar boas fotos para minha tese e não me importo com o tempo necessário para calculá-las. Existe uma maneira de desabilitar essa aproximação?
Aqui está o código para gerar a imagem:
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