三维城市建模

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

城市工程地质计算机三维建模

设计说明书

1、概述

1.1编写目的

本文档是在交流基础上,结合我们对城市工程地质计算机三维建模的理解,编写相应的实现方案而制定了本文档,目的是指导后续的软件设计和软件开发、测试。

1.2项目背景

城市工程地质计算机三维建模软件设计说明书是依据城市三维地质信息系统需求分析报告的要求编写的,它确定了城市三维地质信息系统的体系结构、数据组织和内外部数据接口,是软件详细设计和编码的基础。其主要的预期读者有该软件负责人、软件设计人员和软件编码人员。

1.3主要内容

城市工程地质计算机三维建模以实际需求为指导,并充分结合三维建模的实际情况,现阶段主要包括钻孔模拟、反距离加权地层模拟、克里金地层模拟:

钻孔模拟主要通过读取的已知的城市工程地质数据,根据已有的坐标点的属性值,模拟出该钻孔。

反距离加权地层模拟是以面模型为基础,通过已知的钻孔数据,

对每一层的钻孔进行网格化,再进行属性值插值处理,最后模型实现。

克里金地层模拟是以面模型为基础,通过已知的钻孔数据,对每一层的钻孔进行网格化,再进行属性值插值处理,最后模型实现。1.4软件框架

1.5相关术语

✧面模型

在城市工程地质计算机三维建模中常用的有面模型和体模型,本项目是采用面模型。

✧地层插值

本项目的主要内容,实现建模的具体功能。

✧IDW插值

通过对已知数据进行IDW算法处理后,并对结果进行三维显示。

✧IDW参数设置

通过此模块可以对模型中数据点大小进行设置。

✧Kriging数据结果

通过对已知数据进行Kriging算法处理后,得到处理结果,保存成全局变量存在于后台。此目的是为了方便三维显示。

✧Kriging参数设置

通过此模块可以对模型中数据点大小进行设置。

✧Kriging图形显示

对Kriging的处理数据进行三维显示。

✧钻孔显示

对已知钻孔数据进行三维显示。

2、城市工程地质计算机三维建模软件设计

2.1软件开发目的

随着计算机图形技术的不断发展和运算能力的提高,三维地质模型已经越来越多地被应用到城市环境地质评价中。三维地质模型包含大量的城市环境地质信息,不但给城市建设和管理提供数据上的支持,还能给人们提供可视化界面,帮助人们直观地了解环境地质状况。并且利用OpenGL在计算机图形方面的优势,结合MFC和OpenGL 各自的长处开发本软件。

2.3软件主要功能内容

打开:即读取钻孔数据,本软件读取的数据格式只能为excel的数

据,并且excel文件的第一行为描述性的文字。第一列和第二列为坐标,其他列为属性值数据。

保存:将得到的三维图像进行保存,保存格式为bmp位图格式。默认的保存名为image.bmp。

另存为:对得到的三维图像进行命名保存,自己命名。

背景颜色:改变三维图形显示时的背景颜色,方便比较不同背景下的观看效果。

放大:对对象进行一定倍数的放大处理。

缩小:对对象进行一定倍数的缩小处理。

平移:对对象在x、y轴方向进行大小不变的移动,以便得到一个合适的观看角度。

旋转:绕一个中心点进行转动。不改变其大小等,以便得到一个合适的观看角度。

地层插值:实现钻孔三维显示,两种算法下地层三维显示。

2.4主要函数功能代码介绍

(1)打开excel文件的函数为:void OnFileRead();该函数主要是从excel文件读取钻孔数据保存到l_dRawExcel数组当中。CSpreadSheet.h是对excel进行操作的类声明和实现。

(2)保存图像函数为:void OnFileSave();该函数将要保存的图像保存成bmp格式,其中 WriteWindowToDIB(sz, this)函数为主要函数,sz为要保存的名字,默认为image.bmp。也可自行修改。

(3)另存为图像函数为:void OnFileSaveAs();该函数跟保存图像

函数基本一致。

(4)改变背景颜色函数为:void OnBkcolor();该函数通过对颜色的R、G、B值进行修改来达到改变颜色的目的。参数为:m_BKColorR,m_BKColorG,m_BKColorB。

(5)放大函数为:void OnZoomin();该函数通过m_ScaleX、m_ScaleY、m_ScaleZ三个参数来调整,放大倍数为1.1倍。借助opengl 库函数glScalef(m_ScaleX,m_ScaleY,m_ScaleZ)来实现放大功能。

(6)放大函数为:void sizeDecrease();该函数通过m_ScaleX、m_ScaleY、m_ScaleZ三个参数来调整,缩小倍数为1.1倍。借助opengl 库函数glScalef(m_ScaleX,m_ScaleY,m_ScaleZ)来实现缩小功能。

(7)平移函数为:void OnRotate();该函数通过m_yRotate、m_xRotate两个参数来调整,根据屏幕分辨率来实现沿X、Y方向的移动,借助opengl库函数glRotated(m_xRotate, 1.0, 0.0, 0.0)和glRotated(m_yRotate, 0.0, 1.0, 0.0)来实现平移功能。

(8)旋转函数为:void OnTranslation();该函数通过m_TranslatedX、m_TranslatedY、m_TranslatedZ三个参数来调整,借助opengl库函数glTranslated(m_TranslatedX,m_TranslatedY,m_TranslatedZ)来实现平移功能。

(9)IDW三维显示的函数为:void drawidw();算法的类声明和实现分别是idw.h和idw.cpp。

(10)Kriging三维显示的函数为:void drawkrinet();在执行此函数前一定要先执行void drawkriging()函数,主要是为了显示效果。算法

相关文档
最新文档