Matlab перестает корректно интерполировать цвета на сетке, если она больше 120 треугольников
Я пытаюсь нарисовать большую сетку в Matlab, используяtrimesh
функция, с координатой z вершин, управляющих цветом. К сожалению, Matlab перестает корректно интерполировать цвета, когда размер сетки превышает 120 треугольников. Вот картина, демонстрирующая проблему: 120 треугольников слева и 121 треугольник справа.
Как вы можете видеть, для больших сеток Matlab интерполирует непосредственно от цвета одной вершины к цвету другой вершины. Вероятно, это было сделано из соображений производительности, но я пытаюсь создать красивые картинки для своей диссертации, и мне все равно, сколько времени потребуется для их вычисления. Есть ли способ отключить это приближение?
Вот код для генерации картинки:
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