Функция патча Matlab с интерполяцией дает другой результат в зависимости от порядка вершин - PullRequest
1 голос
/ 20 сентября 2019

У меня есть патч с координатами x, y, c, как показано ниже.При изменении порядка точек изменяется цветовая интерполяция MATLAB patch.

x = [0.9000    1.0000    1.0000  0.9000]';
y = [0.5000    0.5000    0.6000  0.6000]';
c = [0.0278    0.0371    0.0325    0.0282]';

figure();
patch(x,y,c);

order = [2:4,1];
figure();
patch(x(order),y(order),c(order));

Выше приведены два разных цветовых пятна.Однако координаты и цвет меняли последовательность только циклически.Любые предложения, чтобы преодолеть это?

1 Ответ

4 голосов
/ 20 сентября 2019

Я думаю, это потому, что вы не закрываете свой патч - если последняя точка в вашем патче не совпадает с первой, MATLAB автоматически закроет его.Видимо, это делает что-то странное с интерполяцией цвета.Если вы немного измените код, чтобы ваш патч был закрыт, например:

figure;
order = [1:4,1];
patch(x(order),y(order),c(order));
figure;
order = [2:4,1:2];
patch(x(order),y(order),c(order));
figure;
order = [3:4,1:3];
patch(x(order),y(order),c(order));

Тогда вы получите один и тот же патч каждый раз.

...