对于关于x,y轴对称图形的节点矩阵,用MATLAB的delaunay命令生成的三角网格不能满足有限元分析时——轴对称的条件,如图所示。
请问如何编写程序能使得生成的三角网格也能保持轴对称?
目前正在解决的问题为:
已知1/4平面的坐标点,通过两次对称,生成整张平面,然后将1/4平面的点所生成的三角网格,进行对称连接,最终形成一个关于x=a,和y=b的双轴对称网格。

对于关于x,y轴对称图形的节点矩阵,用MATLAB的delaunay命令生成的三角网格不能满足有限元分析时——轴对称的条件,如图所示。
请问如何编写程序能使得生成的三角网格也能保持轴对称?
目前正在解决的问题为:
已知1/4平面的坐标点,通过两次对称,生成整张平面,然后将1/4平面的点所生成的三角网格,进行对称连接,最终形成一个关于x=a,和y=b的双轴对称网格。

该回答引用自GPT:
要实现对称的条件,你可以先使用delaunay命令生成三角网格,然后根据节点的坐标和轴对称条件,修改节点的坐标和顶点列表,最后用modifiedDelaunay函数重新生成对称的三角网格。以下是MATLAB代码示例:
假设原始1/4平面中的点坐标为(x0,y0),通过x轴和y轴的对称后,点坐标变为(-x0, y0)和(x0, -y0)。节点的坐标修改后(如下所示),则三角网格就可以保持对称:
%生成原始1/4平面的点坐标
x0 = [1 2 2 1];
y0 = [1 1 2 2];
%对称后的坐标
x_sym = [-x0 x0];
y_sym = [y0 -y0];
%修改节点坐标和顶点列表
node = [(1:length(x0))';(1:length(x0))'+length(x0)];
node_sym = [node; node+length(x0)];
x = [x0 -x0 x0];
y = [y0 y0 -y0];
tri = delaunay(x,y); %生成三角网格
%将顶点列表中的对称三角形下标添加到末尾
tri = [tri; tri+length(node); tri+2*length(node)];
%将对称后的节点坐标添加到结点列表中
node = [node; node_sym];
x = [x x_sym];
y = [y y_sym];
%重新生成对称的三角网格
tri_sym = modifiedDelaunay(node, tri);
%绘制结果
triplot(tri_sym, x, y)
生成的三角网格保证了对称性,你可以用这个程序来解决你的问题。