NMM3DViewer 设计
在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 设计的更多相关文章
- 如何一步一步用DDD设计一个电商网站(九)—— 小心陷入值对象持久化的坑
阅读目录 前言 场景1的思考 场景2的思考 避坑方式 实践 结语 一.前言 在上一篇中(如何一步一步用DDD设计一个电商网站(八)—— 会员价的集成),有一行注释的代码: public interfa ...
- 如何一步一步用DDD设计一个电商网站(八)—— 会员价的集成
阅读目录 前言 建模 实现 结语 一.前言 前面几篇已经实现了一个基本的购买+售价计算的过程,这次再让售价丰满一些,增加一个会员价的概念.会员价在现在的主流电商中,是一个不大常见的模式,其带来的问题是 ...
- 设计爬虫Hawk背后的故事
本文写于圣诞节北京下午慵懒的午后.本文偏技术向,不过应该大部分人能看懂. 五年之痒 2016年,能记入个人年终总结的事情没几件,其中一个便是开源了Hawk.我花不少时间优化和推广它,得到的评价还算比较 ...
- 如何一步一步用DDD设计一个电商网站(十)—— 一个完整的购物车
阅读目录 前言 回顾 梳理 实现 结语 一.前言 之前的文章中已经涉及到了购买商品加入购物车,购物车内购物项的金额计算等功能.本篇准备把剩下的购物车的基本概念一次处理完. 二.回顾 在动手之前我对之 ...
- 如何一步一步用DDD设计一个电商网站(一)—— 先理解核心概念
一.前言 DDD(领域驱动设计)的一些介绍网上资料很多,这里就不继续描述了.自己使用领域驱动设计摸滚打爬也有2年多的时间,出于对知识的总结和分享,也是对自我理解的一个公开检验,介于博客园这个平 ...
- 如何一步一步用DDD设计一个电商网站(七)—— 实现售价上下文
阅读目录 前言 明确业务细节 建模 实现 结语 一.前言 上一篇我们已经确立的购买上下文和销售上下文的交互方式,传送门在此:http://www.cnblogs.com/Zachary-Fan/p/D ...
- 如何一步一步用DDD设计一个电商网站(六)—— 给购物车加点料,集成售价上下文
阅读目录 前言 如何在一个项目中实现多个上下文的业务 售价上下文与购买上下文的集成 结语 一.前言 前几篇已经实现了一个最简单的购买过程,这次开始往这个过程中增加一些东西.比如促销.会员价等,在我们的 ...
- 如何一步一步用DDD设计一个电商网站(五)—— 停下脚步,重新出发
阅读目录 前言 单元测试 纠正错误,重新出发 结语 一.前言 实际编码已经写了2篇了,在这过程中非常感谢有听到观点不同的声音,借着这个契机,今天这篇就把大家提出的建议一个个的过一遍,重新整理,重新出发 ...
- 如何一步一步用DDD设计一个电商网站(四)—— 把商品卖给用户
阅读目录 前言 怎么卖 领域服务的使用 回到现实 结语 一.前言 上篇中我们讲述了“把商品卖给用户”中的商品和用户的初步设计.现在把剩余的“卖”这个动作给做了.这里提醒一下,正常情况下,我们的每一步业 ...
随机推荐
- 《Python全栈开发指南》第3版 Alex著(LFXC2018)
第一章 Python基础——Python介绍&循环语句 1.1 编程语言介绍 1.2 Python介绍 1.3 Python安装 1.4 第一个Python程序 1.5 变量 1.6 程序交互 ...
- “万恶”的break
写这篇随笔主要是希望自己长点记性,break的作用是跳出当次循环,每次用break都有点忘记break后面的条件提前. 正常是这样: exit_flag=Falsefor i in range(10) ...
- Zookeeper在windows环境下安装
1.已安装JDK并配置好了环境变量 2.下载Zookeeper,在清华大学镜像下载,选择合适版本 https://mirrors.tuna.tsinghua.edu.cn/apache/zookee ...
- creat-react-app/dva静态项目,用nginx部署在次级域名路径(如a.com/sub/)需要注意的几点
因为要把dist文件夹部署在一个域名的次级目录,没想到和运维同学一起折腾了一下午.. 放在这里备忘,也给后来的同学一些可查的中文资料: 1,dva/cra给你的模板index.html是在public ...
- Codecraft-18 and Codeforces Round #458 (Div. 1 + Div. 2, combined)
我真的是太菜了 A. Perfect Squares time limit per test 1 second memory limit per test 256 megabytes input st ...
- FTP的搭建过程,以及遇到的坑
在之前的博客中,我有说到,我最喜欢用Yum在线安装的方式安装软件,简单省事儿.现在看来,也不尽然,关键是,无法快速找到我要的文件,整个whereis 也很累.所以,现在觉得,还是乖乖的整个压缩包,自行 ...
- netcore命令行部署|跨域问题
1.在hosting中修改发布端口号,如遇见不识别IP则改成*再用命令行运行 { "server.url": "http://*:8089"} 3.给接口开外网 ...
- 项目记事【SpringMVC-2】:将后台的对象,转成JSON报文
Spring版本:3.2.7 Jackson版本: <!--Jackson --> <dependency> <groupId>com.fasterxml.jack ...
- PHP服务接口测试
最近百度Hi项目拟针对内部员工版本增加设备绑定功能,也许是公司出于对员工聊天信息安全性的考虑,同时也考虑到后期会有相应的员工名片等功能的推出,设备绑定的过程也是为了员工名片功能做个准备吧!设备绑定的服 ...
- Codeforces 903E Swapping Characters
题目大意 考虑一个未知的长为 $n$($2\le n\le 5000$)由小写英文字母构成的字符串 $s$ .给出 $k$($1\le k\le 2500$,$nk\le 5000$)个字符串 $s_ ...