Matlab - 根据参数自定义表面颜色

时间:2013-06-10 11:56:51

标签: matlab colors patch mesh geometry-surface

我在自定义曲面图的颜色(trisurf或trimesh)时遇到问题。

我希望每张脸的颜色都取决于相对应变值(针对网格的每个三角形计算)。我在考虑类似的事情:

p = patch('Faces',faces,'Vertices',verts,'FaceColor',strain);

FaceColor似乎无法使用数组。

应变是Nx1的数组,其中N是面数。

1 个答案:

答案 0 :(得分:2)

首先,您需要将FaceColor更改为'flat',以便从颜色数据数组中读取颜色 - CData属性:

试试这个(虽未测试):

p = patch( ...
   'Faces',     faces, ...
   'Vertices',  verts, ...
   'FaceColor', 'flat', ...
   'CData',     strain' ...
);

在这里,我将CData属性设置为strain向量的转置。然后,MATLAB应自动将此矢量中的N个应变值映射到所选的色彩图(线性)。有关详细信息,请参阅属性CDataMapping

文档:

http://www.mathworks.se/help/matlab/ref/patch_props.html#FaceColor http://www.mathworks.se/help/matlab/ref/patch_props.html#CData http://www.mathworks.se/help/matlab/ref/patch_props.html#CDataMapping