我在自定义曲面图(trisurf 或 trimesh)颜色方面遇到了问题。
我希望每个面的颜色都根据网格三角形相对应变形值(针对每个三角形计算)而定。我考虑过类似这样的做法:
p = patch('Faces',faces,'Vertices',verts,'FaceColor',strain);
但是FaceColor
似乎无法处理数组。
strain
是一个Nx1
的数组,其中N
是面数。
我在自定义曲面图(trisurf 或 trimesh)颜色方面遇到了问题。
我希望每个面的颜色都根据网格三角形相对应变形值(针对每个三角形计算)而定。我考虑过类似这样的做法:
p = patch('Faces',faces,'Vertices',verts,'FaceColor',strain);
但是FaceColor
似乎无法处理数组。
strain
是一个Nx1
的数组,其中N
是面数。
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