通常,trisurf用于绘制三角形网格上的节点数量。但是,我想使用以下命令绘制一些元素数量。
trisurf(t,p(:,1),p(:,2),elewise_quantity,'edgecolor','k','facecolor','interp');
其中elewise_quantiy应与p(:,1)或p(:,2)具有相同的维度,因此我通过将元素数量与该元素的每个节点相关联来创建elewise_quantity。
在这种特定情况下,中间的8个三角形元素与1相关联,所有其他元素都是0值。有10 * 10个小方块和10 * 10 * 2个小三角形。
问题是,如图所示,trisurf无法产生我想要的效果。我所期望的是“精确的元素描述”,即边缘处的急剧过渡
另外请注意,在每个角落,显示效果都不同,这是由于三角形的具体方向,是否有优雅的处理方式?
答案 0 :(得分:1)
如果您需要跨元素的明显不连续性,我建议不要显示节点值。计算内部积分点处的元素值(例如,质心处的元素平均值)并将该值分配给元素。要求Matlab根据其质心或积分点值为每个元素着色。
答案 1 :(得分:0)
您可以使用此方法设置每个三角形颜色:
%// Example data
X = rand(100,1);
Y = rand(100,1);
Z = X+Y;
T = delaunay(X,Y);
C = mean(Z(T),2);
%// Plot the data
hh = trisurf(T,X,Y,Z);
set(gca, 'CLim', [min(C), max(C)]);
set(hh,'FaceColor', 'flat', ...
'FaceVertexCData', C, ...
'CDataMapping', 'scaled');
如果您也不希望看到边界处出现的三角形,则只需一次调用trimesh
即可获得此行为。您需要计算每个三角形的数量,然后根据每个三角形的数量删除您不想绘制的数量。