我在自定义曲面图的颜色(trisurf或trimesh)时遇到问题。
我希望每张脸的颜色都取决于相对应变值(针对网格的每个三角形计算)。我在考虑类似的事情:
p = patch('Faces',faces,'Vertices',verts,'FaceColor',strain);
但FaceColor
似乎无法使用数组。
应变是Nx1
的数组,其中N
是面数。
答案 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