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情况的一种。