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

3

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

我希望每个面的颜色都根据网格三角形相对应变形值(针对每个三角形计算)而定。我考虑过类似这样的做法:

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

但是FaceColor似乎无法处理数组。

strain是一个Nx1的数组,其中N是面数。

1个回答

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接