必胜高考网 > 计算机类 > 计算机等级 > 资讯 >

计算机等级考试编三维地质建模系统整体思路

时间: 未知2 资讯

  IDE:本来打算利用VC++6.0,因为VC++6.0是目前的主流开发三维可视化的IDE,不过使用难度较大,而且我们领导用的是C++ BUILDER,C++ BUILDER具有上手快、制作界面简易的优点,于是选择用BCB了。

  三维图形库:利用open graphics library(opengl),至于Open Inventor(OIV),暂时不打算用,在开发过程中如果OPENGL用得比较好了再考虑是否用OIV。

  主要难点:

  (1)地质三维建模方法:地质体是一个三维的、非均质性非常明显的复杂体,和CAD系统相比建模方法要复杂很多。

  (2)三维地质模型的三维显示与交互:特别是交互功能的实现比较困难。

  (3)对海量数据的处理:地质体三维数字化数据是非常庞大的,一个地层就动辄数十、上百万个离散点。

  自顶向下的目标分解思路:

  三维地质建模系统是一个很庞大的软件工程,如果不进行目标分解来逐步达成的话,实现起来将会遥遥无期。1961年,美国为了实现1970年登上月球曾经制定了详细的登月计划:

  (1)发射火箭到大气层;

  (2)环绕地球;

  (3)发射火箭,环绕月球;

  (4)月球着陆器从火箭中分离,在月面降落;

  (5)月球着陆器离开月球,与轨道舱会合;

  (6)返回地球;

  (7)进入大气层;

  (8)返回舱安全坠入大海。

  然后每一个阶段目标更进一步地分解为更小的目标,果然在1969年,人类首次登陆月球。

  我们进行的目标分解过程如下:

  (1)建立一个100×100×100的数据体,实现多层地层建模。

  进一步分解:

  ①给定100个地层层面离散点,将地质数据体分为两个层块,实现对两个层块分别进行属性值插值。

  ②给定少于100个离散点,自动延拓到数据体边界。

  ③给定多于100个离散点,自动裁剪到数据体边界。

  ④增加一个与上一个地层近平行不相接的地层层面,将地质数据体分为三个层块,实现对三个层块分别进行属性值插值。

  ⑤增加一个与上一个地层部分相接的地层层面,将地质数据体分为三个层块,实现对三个层块分别进行属性值插值。

  ⑥实现任意多层层面任意拓扑关系的地质建模和属性插值算法。

  (2)建立一个100×100×100的数据体,实现地层-断层混合建模。

  进一步分解:

  ①实现一个地层面与一个断层面的相交线的求取算法

  ②实现根据一对相交线对一个地层进行撕裂的算法,并分块进行属性值插值。

  ③实现根据一对相交线对多个地层进行撕裂的算法,并分块进行属性值插值。

  ④实现根据两对相交线对多个地层进行撕裂的算法,并分块进行属性值插值。

  ⑤实现根据任意多个相交线对多个地层进行撕裂的算法,并分块进行属性值插值。

  (3)建立一个10000×10000×10000的数据体,实现地层-断层混合建模。

  进一步分解:

  ①将原始数据进行抽稀,使每个层面的数据少于等于10000.

  ②利用内存映射的技术对数据进行简单操作。

  ③将第二步骤的算法用内存映射的技术进行算法重新编写。

  (4)实现三维地质模型的三维显示。

  (5)实现三维地质模型的三维交互(实时查询与修改模型)

52766