面向对象的三维地质建模系统,该怎么解决

面向对象的三维地质建模系统
高手说:面向对象只是一种软件设计方法,不要将之变成了软件设计的目的。

高手说:牵涉到科学计算的软件不适合采用面向对象的方法,内耗太多。

不过我想尝试一下对三维地质建模系统中的三维地质模型对象进行一下面向对象的分析,只是一种尝试,大家多提批评意见!

尝试1:
class 3dgeomodel
{
public:
set模型边界();//为代表模型边界的长方体对象赋值
set采集参数();//为面元参数、测线方位角、原点坐标等赋值
input模型几何离散点();//离散点已经按照一定要求进行分类整理排序
input模型属性离散点();//离散点已经按照一定要求进行分类整理排序
修改模型数据();//对模型中的地层和断层进行点编辑或面编辑
拓扑关系分析();对地层与地层之间、断层与断层之间、地层与断层之间进行拓扑关系分析
数值模型生成();将整个数值模型计算出来
show地质模型();//选择视角(第一人称或者第三人称)利用opengl进行绘图

private:
地层组对象;//(包含多个地层对象,每个地层对象由离散点对象和三角面对象组成)
断层组对象;//(包含多个断层对象,每个断层对象由离散点对象和三角面对象组成)
拓扑关系对象;//拓扑关系分析之后的拓扑关系状态
边界对象;
采集参数对象;
}
尝试完之后发现,这哪里是一个对象,简直就是一个过程吗!那么一个三维地质模型对象到底应该是什么样子的呢?再试试

尝试2:
class 3dgeomodel
{
public:
set模型边界();//为代表模型边界的长方体对象赋值
set采集参数();//为面元参数、测线方位角、原点坐标等赋值
input模型几何离散点();//离散点已经按照一定要求进行分类整理排序
input模型属性离散点();//离散点已经按照一定要求进行分类整理排序
赋予拓扑关系();
get拓扑关系();
get模型数据();

private:
地层组对象;//(包含多个地层对象,每个地层对象由离散点对象和三角面对象组成)
断层组对象;//(包含多个断层对象,每个断层对象由离散点对象和三角面对象组成)
拓扑关系对象;//拓扑关系分析之后的拓扑关系状态
边界对象;
采集参数对象;
}
尝试后发现,这个三维地质模型对象太简单了,啥都干不了,不能进行拓扑分析,也不能进行属性数据插值生成数值模型,也不能进行三维显示和编辑,那么该如何定义这个三维地质模型的class呢?请高手说说你的看法

------解决方案--------------------
尝试后发现,这个三维地质模型对象太简单了,啥都干不了,不能进行拓扑分析,也不能进行属性数据插值生成数值模型,也不能进行三维显示和编辑,那么该如何定义这个三维地质模型的class呢?
>>能做什么不能做什么,完全在你怎么设计,你实现了什么接口,就能做什么
------解决方案--------------------
没有这方面的domain knowledge :(
------解决方案--------------------
不过下面两种说法,作为一个初懂面向对象的软件工程师,我认为在绝大部分情况下都是很不正确的。或许高手境界太高,其言深奥,非我等小辈所能揣测。坛子里不乏高人,不妨出来指教一二。

高手说:面向对象只是一种软件设计方法,不要将之变成了软件设计的目的。
高手说:牵涉到科学计算的软件不适合采用面向对象的方法,内耗太多。
------解决方案--------------------
up 等高手出现~~
------解决方案--------------------
探讨
不过下面两种说法,作为一个初懂面向对象的软件工程师,我认为在绝大部分情况下都是很不正确的。或许高手境界太高,其言深奥,非我等小辈所能揣测。坛子里不乏高人,不妨出来指教一二。

高手说:面向对象只是一种软件设计方法,不要将之变成了软件设计的目的。
高手说:牵涉到科学计算的软件不适合采用面向对象的方法,内耗太多。

------解决方案--------------------
个人理解

高手说:面向对象只是一种软件设计方法,不要将之变成了软件设计的目的。
>>这个还好说,应该就是不要为了面向对象而面向对象
 
高手说:牵涉到科学计算的软件不适合采用面向对象的方法,内耗太多。
>>没有体会,猜测一下,应该是继承、虚函数、模板之类的机制成本太高,而偏重于计算的话面向过程会效率高些
------解决方案--------------------
没搞过,。帮顶
------解决方案--------------------
只论设计,将这么多接口放到一个对象中,你想一根骨头撑起人啊?增加骨头,形成骨架。

另:算法与设计模式并不矛盾,对绝大部分应用程序来说,由设计模式带来的性能下降比起差劲的算法来说,不值一提。
------解决方案--------------------
至于具体的图像处理算法方面,推荐你用openCV,里面500个算法实现,很厉害的!
------解决方案--------------------
有些modeling系统是这样的,可以参考:

从上到下:
SceneManager -- responsible for updating/maintaining scene graph
Renderer -- responsible for rendering, call OGL/DX behind
GeometryLib -- responsible for geometry/topology computation
MathLib -- low level math lib

你的地质模型对象位于GeometryLib level,建议不要涉及Renderer/Scene等其它level的东西,应该Focus在geometry/topology computation