编三维地质建模系统-整体思路
副标题#e#
接办三维地质建模系统体例的项目时,我只是一个很菜鸟的业余编程喜好者, 但我对付这个项目很感乐趣,不管功效如何,参加这个项目标进程就很有意思。
语言选择:c++。选择c++是思量到c++可以向下兼容c,同时兼具面向工具的特 征。
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)返回舱安详坠入大海。
#p#副标题#e#
然后每一个阶段方针更进一步地解析为更小的方针,公然在1969年,人类首次 登岸月球。
我们举办的方针解析进程如下:
(1)成立一个100×100×100的数据体,实现多层地层建模。
进一步解析:
①给定100个地层层面离散点,将地质数据体分为两个层块,实现对两个层块 别离举办属性值插值。
②给定少于100个离散点,自动延拓到数据体界线。
③给定多于100个离散点,自动裁剪到数据体界线。
④增加一个与上一个地层近平行不相接的地层层面,将地质数据体分为三个层 块,实现对三个层块别离举办属性值插值。
⑤增加一个与上一个地层部门相接的地层层面,将地质数据体分为三个层块, 实现对三个层块别离举办属性值插值。
⑥实现任意多层层面任意拓扑干系的地质建模和属性插值算法。
(2)成立一个100×100×100的数据体,实现地层-断层殽杂建模 。
进一步解析:
①实现一个地层面与一个断层面的相交线的求取算法
②实现按照一对相交线对一个地层举办撕裂的算法,并分块举办属性值插值。
③实现按照一对相交线对多个地层举办撕裂的算法,并分块举办属性值插值。
④实现按照两对相交线对多个地层举办撕裂的算法,并分块举办属性值插值。
⑤实现按照任意多个相交线对多个地层举办撕裂的算法,并分块举办属性值插 值。
(3)成立一个10000×10000×10000的数据体,实现地层-断层混 合建模。
进一步解析:
①将原始数据举办抽稀,使每个层面的数据少于便是10000.
②操作内存映射的技能对数据举办简朴操纵。
③将第二步调的算法用内存映射的技能举办算法从头编写。
(4)实现三维地质模子的三维显示。
(5)实现三维地质模子的三维交互(及时查询与修改模子)