二维拓扑关系分析与实践(7)

类别:软件工程 点击:0 评论:0 推荐:

2.3分明区域蛋黄模型RCC8

接下来在RCC5的基础上实现分明区域蛋黄模型RCC8程序。

2.3.1算法设计:

由于分明区域蛋黄模型RCC5程序已经考虑到扩展性,此部分保持程序风格不变,将继续使用类的继承,不过这次将对函数relateRcc()进行重载,使他返回一个标志位,标志“两矢量多边形的边或顶点是否有重合,或顶点是否在边上”,这样就可以更具体的区分:

DR(分离)――DC(不连接),EC(外部连接)

PP(真部分)――TPP(正切真部分), NTPP(非正切真部分)

PPI(反真部分)――TPPI(反正切真部分), NTPPI(反非正切真部分)

 

实现过程:

yolkRcc8.h

#include”yolk1.h”/*头文件*/

class yolkRcc8 :public yolk

{

       protected:

              int relateRcc();/*重载 yolk1.h 中的 函数 void relateRcc();*/

       public:

              yolkRcc8(int itmp,int jtmp):yolk(itmp,jtmp){}

              ~yolkRcc8(){}

              int printRelate();/*重载 void printRelate()*/

};

对相应函数重载后,当relateRcc()返回值为1时,表示有相切;为0 表示相离。

这样也充分的利用了Superdotline.h(即其中的返回值3和4)。

 

实现技巧:

本部分之所以使用重载而非扩展,是为了减少计算量。虽然代码上有一些冗赘,但是为了整体风格,这些牺牲是可以忍受的。

 

实现效果:

操作形式与RCC5完全相同,输出RCC8情况的一种。

 

本文地址:http://com.8s8s.com/it/it37147.htm