土石坝网格剖分程序源代码

土石坝网格剖分程序在vc++开发平台上,用c++和vtk开发,主要分两部分

第一,程序剖分内核,剖分算法用的是递推断面法,  本文针对土石坝断面形状相似的特点,在综合分析土石坝各个断面形状的基础上,提出标准断面,其它各个断面都是标准断面的一部分,把标准断面划分成四边形和三角形,然后平移形成其它断面,把相邻断面的四边形和三角形对应的联接起来,根据断面的不同边界条件剖分成六面体,四面体,三棱柱单元,从而完成土石坝的网格剖分,并且提供了两个算例检验此算法的效果.

第二,图形显示模块,本文结合vtk用面向对像的方式开发,主要类层次结构及功能如下

   

CAbstractReader读取数据,抽像类,提供接口

而CDamReader具体读取六面体

CQuadReader具体读取四边形

CAbstractActor把读入的数据经过三维坐标转换后形成图像

而CActor具体处理六面体

CQuadActor具体处理四边形

另外还提供了节点显示及打印jpg文件的功能,由以下两个类实现

具体只需要传入所需的参数即可

CNumber控制节点显示,可以显示节点或者单元编号

CPutOutImage可以把显示的图形打印成jpg文件

CRender用于把渲染完成的图像显示出来

CMange主要是用于管理整个程序,实现了三层结构,表现层,数据层,逻辑层,用来

控制大坝的各种功能

CCutDam类,在构造函数里面实现大坝的剖分算法

本程序的功能

首先读入数据,然后点击显示坝体则出现整体大坝,按左键可以任意角度观察,按中键可以任意平移,按右键可以任意缩放。同时在鼠标移到界面右边按下右键,则弹出菜单,可以按不同的材料显示.同时点击上方的按钮则可以在单材料和多材料之间切换。如果点击显示坝段,则可以按不同的坝段显示,并且用以上同样的方法,可以在单坝段显示和多坝段显示之间切换.同时还提供了两种观察模式,规迹球和操纵杆.默认为规迹球观察

提供源代码供大家使用,此程序必须建立VTK环境,具体方法可参考http://www.vtk.org/

程序源代码在DAM文件夹

两个实例在DAMDATAY文件夹中的data1.txt,data2.txt,同时此文件夹包含的运行结果输出的jpg文件,其它四个文本文件是剖分结果

 

运行的图形结果存在本博客的相册"程序"分类里面

 

 

 

原文地址:https://www.cnblogs.com/lizhengjin/p/1269695.html