Frank793 2023-05-24 13:18 采纳率: 16.7%
浏览 79
已结题

轴对称图形生成轴对称的三角网格

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

img

  • 写回答

6条回答 默认 最新

  • 配电网和matlab 2023-05-26 21:58
    关注

    该回答引用自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)
    

    生成的三角网格保证了对称性,你可以用这个程序来解决你的问题。

    评论

报告相同问题?

问题事件

  • 系统已结题 6月1日
  • 修改了问题 5月24日
  • 创建了问题 5月24日