Matlab przestaje poprawnie interpolować kolory na siatce, jeśli jest większy niż 120 trójkątów
Usiłuję narysować dużą siatkę w Matlab za pomocątrimesh
funkcja, ze współrzędną z wierzchołków kontrolujących kolor. Niestety Matlab przestaje poprawnie interpolować kolory, gdy rozmiar siatki przekracza 120 trójkątów. Oto zdjęcie przedstawiające problem: 120 trójkątów po lewej i 121 trójkątów po prawej.
Jak widać, w przypadku dużych siatek Matlab interpoluje bezpośrednio z koloru jednego wierzchołka na kolor drugiego wierzchołka. Prawdopodobnie zostało to zrobione ze względu na wydajność, ale staram się generować ładne zdjęcia do mojej pracy magisterskiej i nie obchodzi mnie, ile czasu zajmuje ich obliczenie. Czy istnieje sposób na wyłączenie tego przybliżenia?
Oto kod do wygenerowania obrazu:
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