1.4实现分明栅格RCC8程序
1.4.1算法设计
在写程序之前我们先对RCC5与RCC8关系进行一下分析,RCC8实际上是在RCC5基础上对拓扑关系进行更明确的表示,即
DR(分离)――DC(不连接),EC(外部连接)
PP(真部分)――TPP(正切真部分), NTPP(非正切真部分)
PPI(反真部分)――TPPI(反正切真部分), NTPPI(反非正切真部分)
这样选择使用类的结构的优势就体现出来了,使用继承对RCC5进行扩展。
v101.h
#include"v100.h"
class GridRcc8:public ClearGrid/*继承 RCC5 使用 第2遍 扫描 进行细分 */
{
private:
void DR();
void PP();
void PPI();/*当出现这三种情况时,分别使用不同函数进行细分。*/
public:
GridRcc8(){}
void ContinueJudge();
~GridRcc8(){}
};
在原有程序的基础上对出现DR,PP,PPI的情况进行再次的扫描以确定更具体的拓扑关系。
难点问题解决
由于RCC8程序的扩展都与相切有关系(边界问题),所以高效判断相切成为难点。当然本程序也对相邻进行了规定,认为“4方向”为相邻。
DR()函数实现中由于基本关系已经确定,所以只需要判断是否存在第一个栅格的单元相邻的四方向上有第二个栅格的单元存在,如果存在为EC。否则为DC
PP()只要相交栅格是否为边界就可以,所以判断过程中只对相交栅格判断,减少计算量。
PPI() 与PP()方法类似。
实现效果
与RCC5程序类似,只是输出RCC8的8种状态之一。
操作界面为字符界面。
现在二维空间分明栅格拓扑关系分析程序基本完成。