0

通常,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 不能产生我想要的效果。我期望的是“精确的元素描述”,即边缘的急剧过渡

还要注意每个角落的显示是不同的,这是由于三角形的特定方向,有没有优雅的方法来处理它?


在此处输入图像描述

4

2 回答 2

1

如果您需要跨元素的明显不连续性,我建议不要显示节点值。计算内部积分点的元素值(例如质心处的元素平均值)并将该值分配给元素。让 Matlab 根据其质心或积分点值对每个元素进行着色。

于 2014-07-08T11:46:43.080 回答
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. 您需要计算每个三角形的数量,然后根据每个三角形的数量删除您不想绘制的那些。

于 2015-02-20T17:18:30.010 回答