菜鸟编三维地质建模系统-整体思路

      接手三维地质建模系统编制的项目时,我只是一个很菜鸟的业余编程爱好者,但我对于这个项目很感兴趣,不管结果如何,参与这个项目的过程就很有意思。

     语言选择: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)返回舱安全坠入大海。
然后每一个阶段目标更进一步地分解为更小的目标,果然在1969年,人类首次登陆月球。
     我们进行的目标分解过程如下:
    (1)建立一个100×100×100的数据体,实现多层地层建模。
进一步分解:
①给定100个地层层面离散点,将地质数据体分为两个层块,实现对两个层块分别进行属性值插值。
②给定少于100个离散点,自动延拓到数据体边界。
③给定多于100个离散点,自动裁剪到数据体边界。
④增加一个与上一个地层近平行不相接的地层层面,将地质数据体分为三个层块,实现对三个层块分别进行属性值插值。
⑤增加一个与上一个地层部分相接的地层层面,将地质数据体分为三个层块,实现对三个层块分别进行属性值插值。
⑥实现任意多层层面任意拓扑关系的地质建模和属性插值算法。


    (2)建立一个100×100×100的数据体,实现地层-断层混合建模。
进一步分解:
①实现一个地层面与一个断层面的相交线的求取算法
②实现根据一对相交线对一个地层进行撕裂的算法,并分块进行属性值插值。
③实现根据一对相交线对多个地层进行撕裂的算法,并分块进行属性值插值。
④实现根据两对相交线对多个地层进行撕裂的算法,并分块进行属性值插值。
⑤实现根据任意多个相交线对多个地层进行撕裂的算法,并分块进行属性值插值。


    (3)建立一个10000×10000×10000的数据体,实现地层-断层混合建模。
进一步分解:
①将原始数据进行抽稀,使每个层面的数据少于等于10000.
②利用内存映射的技术对数据进行简单操作。
③将第二步骤的算法用内存映射的技术进行算法重新编写。

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

 

 

 

 

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于任何项目,首先需要进行问题分析和需求定义。在本例中,我们的目标是一个快递物流中心,以拟包裹的到达、分拣和派送过程。 1. 型框架 在AnyLogic中,我们可以使用Process Modeling库来型框架。我们将使用流程图来描述系统中各个组件之间的交互和顺序。 2. 定义实体和属性 在这个型中,我们需要定义一些实体和属性,例如: - 包裹:每个包裹都有一个唯一的ID和一个目的地地址。 - 邮件员:每个邮件员都有一个唯一的ID和一个当前的工作状态(例如,是否繁忙)。 - 操作员:每个操作员都有一个唯一的ID和一个当前的工作状态(例如,是否繁忙)。 3. 型流程 在型中,我们需要立以下流程: - 包裹到达:当一个包裹到达时,它需要被扫描,并分配到一个邮件员进行处理。 - 包裹分拣:邮件员需要将包裹按照目的地地址进行分拣,并将它们放入相应的车辆中。 - 包裹派送:车辆需要按照目的地地址进行派送,并将包裹送达收件人手中。 4. 添加实体流程 在型中,我们需要为每个实体定义一个流程: - 包裹到达:当一个包裹到达时,它需要被扫描,并分配到一个邮件员进行处理。 - 邮件员工作流程:当一个邮件员开始工作时,他需要检查自己是否有未完成的包裹,如果有,他需要继续处理它们。如果没有,他需要从包裹池中获取一个新的包裹进行处理。 - 操作员工作流程:操作员需要监控整个系统,并在必要时协调不同实体之间的交互。 5. 添加实体交互 在型中,我们需要定义各个实体之间的交互: - 邮件员和包裹:当一个包裹到达时,系统需要分配一个最近的邮件员来处理它。 - 邮件员和车辆:当一个邮件员分拣完所有的包裹后,他需要将它们放入相应的车辆中。 - 车辆和包裹:车辆需要按照目的地地址进行派送,并将包裹送达收件人手中。 6. 运行拟 完成立后,我们可以运行拟,观察系统中各个实体的交互和整个过程的性能表现。我们还可以通过调整各个实体的属性和流程,优化整个系统的运行效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值