在FrameworkInterfaces工程的INMM3DServer.cs中定义了

岩石材料结构 BlockMaterial  -----> StrBLOCKProperty
     public struct StrBLOCKProperty
        {
            public int      nID;
            public double   dbDensity;        //密度       [0]
            public double   dbYoungModulus;        //杨氏模量 [0]
        public double     dbPoissonRadio;        //泊松比   [0]
        public double[] dbGravityDirection;     //重力方向 [0,0,-1]
        public double     dbGravityAcceleration;    //重力加速度[9.8]
        public double[] dbInitialStress;    //初始应力  [0,0,0]
        public double     dbStressGradient;    //应力梯度  [0]
    }
    节理材料结构 faceMaterial  ----> StrFaceProperty
    public struct StrFACEProperty
    {
        public int nID;
        public double dbCohesion;        //粘聚力   [0]
        public double dbFriction;        //摩擦角   [0]
        public double dbTensileStrength;    //抗拉强度 [0]
        public double dbAperture;        //节理宽度 [0]
    }

关键块结构 keyblock
    public struct StrTARGETBLOCKMODEL
    {
        public StrBLOCK[]   ObjBlockArr;
            public StrFACET[]   ObjFACETArr;
            public StrVERTEX[]  ObjVERTEXArr;
    }
        public struct StrBLOCK
        {
                public int      nID;
                 public int      nEDGECOUNT;
                public int[]    nFACEIDs;
                public int[]    nVERTEXIDs;
                public int      nBLOCKTYPEIndex;
                public int      nBLOCKMATERIALIndexID;
       }
        public struct StrKEYBLOCK
        {
                public int      nBLOCKID;
                 public int      nITERATION;
               public double[] dbVECTOR;
                 public double   dbFORCE;
                 public double   dbVOLUME;
        }
        public struct StrFACET
        {
            public int      nID;
            public int[]    nVERTEXIDs;
            public double[] dbNORMALVECTOR;
            public double   dbDISTANCE;
            public double   dbAREA;
                public int      dbFACETMATERIALIndexID;
            public int      dbFACETIndexID;
        }
        public struct StrVERTEX
        {
            public int      nID;
            public double[] dbCOORD;
        }

2. 界面部分摘主要的重新写 - 2周时间 (8个工作日内)                                                           
    
3. 确定交换数据定义和接口  -- 1周时间
    a. 定义岩石材料和节理材料的接口 ----》 调用接口传给底层
    b. 定义 切割 接口          ----》 调用接口传给底层
    c. 定义 分析 接口        ----》 动用接口传给底层

4. 渲染和选择    --  3周时间(10个工作日)
    改用osg作为3D渲染平台

5. 集成测试        -- 2周时间

6. 操作手册和说明文档    -- 1周时间(并行)
////////////////////////////////////////////////////

系统架构
架构1 :
        ///////////////////////////////////////////////////////////    
        //         “系统界面框架模块”
        //    使用Virtual C#开发.NetFrameWork 4.0(doNet控件)
        //          程序名:NMM3DVIEWER.exe
        //        工程名:MainUI
        //////////////////////////////////////////////////////////
                    /\
                    ||
                    \/
    //////////////////////////////////////////////////////////////////////////////
    //                "中间层模块"
    //        功能:采用托管C++将底层的C++类封装以便上层C#调用
    //        一个或多个dll,以N打头
    //            
    //////////////////////////////////////////////////////////////////////////////
                    /\
                    ||
                    \/"核心层模块"
    /////////////////////////////////////////////////////////////////////////////////////
    //                    "逻辑模块"
    //                定义显示控制和专业应用的逻辑接口
    //                实现业务逻辑与具体实现技术分离
    //                                     模块名称:RockInterface.dll
    //                 调用业务模块和渲染模块相关接口实现
    //    --------------------------------------------------------------------------
    //        |                 |             |                                                            
    //       "专业业务模块"                         |        "3D渲染模块"
    //C++封装的dll负责切割,分析等专业算法的实现 |负责渲染“岩石”“节理面”等专业对象
    //在此模块中定义基础数据结构             |场景操控,用户交互,选择反馈,漫游等
    //       模块名称:???.dll                     |       模块名称:RockScene.dll
    //                         |    
    /////////////////////////////////////////////////////////////////////////////////////

架构2

///////////////////////////////////////////////////////////    
        //         “系统界面框架模块”
        //    使用Virtual C++开发 office风格的窗口界面
        //          程序名:NMM3DVIEWER.exe
        //        工程名:  NMMRockExplore
        //////////////////////////////////////////////////////////
                    /\
                    ||
                    \/"核心层模块"
    /////////////////////////////////////////////////////////////////////////////////////
    //                    "逻辑模块"
    //                定义显示控制和专业应用的逻辑接口
    //                实现业务逻辑与具体实现技术分离
    //                                     模块名称:RockInterface.dll
    //                 调用业务模块和渲染模块相关接口实现
    //    --------------------------------------------------------------------------
    //        |                 |             |                                                            
    //       "专业业务模块"                         |        "3D渲染模块"
    //C++封装的dll负责切割,分析等专业算法的实现 |负责渲染“岩石”“节理面”等专业对象
    //在此模块中定义基础数据结构             |场景操控,用户交互,选择反馈,漫游等
    //       模块名称:???.dll                     |       模块名称:RockScene.dll
    //                         |    
    /////////////////////////////////////////////////////////////////////////////////////

NMM3DViewer 设计的更多相关文章

  1. 如何一步一步用DDD设计一个电商网站(九)—— 小心陷入值对象持久化的坑

    阅读目录 前言 场景1的思考 场景2的思考 避坑方式 实践 结语 一.前言 在上一篇中(如何一步一步用DDD设计一个电商网站(八)—— 会员价的集成),有一行注释的代码: public interfa ...

  2. 如何一步一步用DDD设计一个电商网站(八)—— 会员价的集成

    阅读目录 前言 建模 实现 结语 一.前言 前面几篇已经实现了一个基本的购买+售价计算的过程,这次再让售价丰满一些,增加一个会员价的概念.会员价在现在的主流电商中,是一个不大常见的模式,其带来的问题是 ...

  3. 设计爬虫Hawk背后的故事

    本文写于圣诞节北京下午慵懒的午后.本文偏技术向,不过应该大部分人能看懂. 五年之痒 2016年,能记入个人年终总结的事情没几件,其中一个便是开源了Hawk.我花不少时间优化和推广它,得到的评价还算比较 ...

  4. 如何一步一步用DDD设计一个电商网站(十)—— 一个完整的购物车

     阅读目录 前言 回顾 梳理 实现 结语 一.前言 之前的文章中已经涉及到了购买商品加入购物车,购物车内购物项的金额计算等功能.本篇准备把剩下的购物车的基本概念一次处理完. 二.回顾 在动手之前我对之 ...

  5. 如何一步一步用DDD设计一个电商网站(一)—— 先理解核心概念

    一.前言     DDD(领域驱动设计)的一些介绍网上资料很多,这里就不继续描述了.自己使用领域驱动设计摸滚打爬也有2年多的时间,出于对知识的总结和分享,也是对自我理解的一个公开检验,介于博客园这个平 ...

  6. 如何一步一步用DDD设计一个电商网站(七)—— 实现售价上下文

    阅读目录 前言 明确业务细节 建模 实现 结语 一.前言 上一篇我们已经确立的购买上下文和销售上下文的交互方式,传送门在此:http://www.cnblogs.com/Zachary-Fan/p/D ...

  7. 如何一步一步用DDD设计一个电商网站(六)—— 给购物车加点料,集成售价上下文

    阅读目录 前言 如何在一个项目中实现多个上下文的业务 售价上下文与购买上下文的集成 结语 一.前言 前几篇已经实现了一个最简单的购买过程,这次开始往这个过程中增加一些东西.比如促销.会员价等,在我们的 ...

  8. 如何一步一步用DDD设计一个电商网站(五)—— 停下脚步,重新出发

    阅读目录 前言 单元测试 纠正错误,重新出发 结语 一.前言 实际编码已经写了2篇了,在这过程中非常感谢有听到观点不同的声音,借着这个契机,今天这篇就把大家提出的建议一个个的过一遍,重新整理,重新出发 ...

  9. 如何一步一步用DDD设计一个电商网站(四)—— 把商品卖给用户

    阅读目录 前言 怎么卖 领域服务的使用 回到现实 结语 一.前言 上篇中我们讲述了“把商品卖给用户”中的商品和用户的初步设计.现在把剩余的“卖”这个动作给做了.这里提醒一下,正常情况下,我们的每一步业 ...

随机推荐

  1. JAVA 基础--开发环境IDEA 搭建

    1.下载IDEA  (500M+) 2.激活. 在网站http://idea.lanyus.com/中获取注册码,填入Activation code中: 然后点击Activate即可. 3.创建工程前 ...

  2. day01_14.遍历数组

    <?php $a = array('a','b','c'); print_r($a); ?> 输出结果:Array ( [0] => a [1] => b [2] => ...

  3. niubi-job:一个分布式的任务调度框架设计原理以及实现

    niubi-job的框架设计是非常简单实用的一套设计,去掉了很多其它调度框架中,锦上添花但并非必须的组件,例如MQ消息通讯组件(kafka等).它的框架设计核心思想是,让每一个jar包可以相对之间独立 ...

  4. [python IO学习篇] 补充.py文件是中文, .ini文件内容是中文

    python 代码文件的编码.py文件默认是ASCII编码,中文在显示时会做一个ASCII到系统默认编码的转换,这时就会出错:SyntaxError: Non-ASCII character.需要在代 ...

  5. hdu2094 stl之set的应用

    产生冠军 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  6. Python3网络爬虫(三):urllib.error异常

    运行平台:Windows Python版本:Python3.x IDE:Sublime text3 转载请注明作者和出处:http://blog.csdn.net/c406495762/article ...

  7. NOJ——1624死胡同(胡搞模拟)

    [1624] 死胡同 时间限制: 1000 ms 内存限制: 65535 K 问题描述 一个死胡同由排成一列的 n 个格子组成,编号从 1 到 n .实验室的“猪猪”一开始在1号格子,开始向前走,每步 ...

  8. Educational Codeforces Round 10——B. z-sort

    B. z-sort time limit per test 1 second memory limit per test 256 megabytes input standard input outp ...

  9. Excel VBA基础教程

    https://www.w3cschool.cn/excelvba/excelvba-basics.html Excel VBA语言基础 VBA语言的基础认识 详解VBA编程是什么 excel处理录制 ...

  10. 【HNOI2011/bzoj2337】XOR和路径

    第二道高斯消元练习题 题意 一张无向图,从点 $1$ 出发每次随机选一条出边走,走到 $n$ 停止,求经过的所有边权异或和的期望. $n\le 100$ 题解 注意一点,异或和的期望 $≠$ 期望的异 ...