Matlab 的插值补丁函数根据顶点的顺序产生不同的结果



我有一个带有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));

上面会产生两个不同的色块。但是,坐标和颜色仅以循环方式更改了顺序。 有什么建议可以克服这个问题吗?

我认为这是因为您没有关闭补丁 - 如果补丁中的最后一个点与第一个点不同,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));

然后你每次都会得到相同的补丁。

最新更新