图2.3. l, 1几何装示意囲
以上四个基本的几何类即为空1可几何对象类的封装,考虑到它们具有共同的一些操作(序列化 serial ize),绘制(Draw)等) ,我们将这些类抽象为一个基类 C9eomBaSe, 作为一个纯虚类, 由其可实例成任何一个子类 。
15
-In nll):int CGeo'Polnon CGeo1'Tert 一m_geo地R:CACTRe,ct -m coor(iArray:CArny 2.基于UML表示的图形对象实体建模 南京理工大学工程硕 士论文 下面简要讨论了 GIS各类矢量图形元素l可的空闻拓朴结构及其位置关系, 并用VC++6. 0及MFC具体分析了国弧与多边形区域的相交关系及实現。 在GIS中,涉及大量的空间统计与分析计算工作,如统计一个表自多边形区域、困形区域的某种对象的数量、分布情况, 计算一条高速公路(可理解为連续直线)与其它地市、 行政区(可理解为国形区域或多边形区域)是何关系(如相交、 相邻及相交方式等) , 所有这些功能的核心是各种矢量国形间的拓朴结构关系, 即它们间的相互位置关系, 将上述各种实体进行一般层次上的空间抽象, 则可归纳为以下几种矢量图形同的相对位置关系 。 第一类:点与一般图形的位置美系。 (l)点与点的位置关系, (2)点与直线的位置美 系; ,,(3)点与困、国弧的位置关系, (4) 点与多边形区域的位置美系l 第二类:直线与多边形 区域的位置美系 。 (1) 直线与直.线的位置关系, (2) 直线与多边形区域的相交美系, (3)連续直线与多;ia形区域的相交关系。 第三类:国弧与多边形区域的位董关系 。 (1)直线与園的位置关系, (2) 直线与国孤的位置关系: (3) 連续直线与国弧的位置关系; (4)園弧与多边形区域的位置关系a 在定又并实现了各种基本图元的基础上, 再根据上述各种图形元素的位置关系 。 利用 vc编制相应的实现電数,对于一个具体的间题,测u完全可利用上面的各种抽象关系, ;逐一调用相关函数绘制出各种实体及实体同的美系图, 如一条河流(連续直线或国弧)与一座城市(多边形区域)的位置关系。 为具体分析清楚国弧与多边形区域的位置关系与算法实现['l 。 对进界矩形的计算可利用多态性来完成基美C路yDraf 中定义一个纯虚函数: public class CMyl);raw{ publio CMyDraw0 i 1 publio virtua1 void(ietlRect0( } L1li 在其派生类中必须重载: publili‘ virtual void GetRect(float 生]ninx, float 如iny, float*maxx, float *My)=0, 南京理工大学工程硕 士论文 基子uML表示的数字城市 GIs国形庫建據及其实践 ( 1 ) 多:t!t形区域的边界矩形分析: 多边形区域的地界矩形计算方法就是要得到所有顶点的最小和最大坐标,对連续直线类CPline重载虚函数GetRect,实现如下: void Cpline:: GetRect(f1oat*mi:al【, f1oat *min;y, f10at寒 maxx, f10a* 配取y) ifloatx1 , yl ,x2 , y2 1 //ThePoList isusedtostore the(x, y) lloordinate of the vertexes. x1=in_PoList[0〕,x; x2 = m_PoList[0].x; y1=1ln_;PoList[0].yl y2= m_PoList[l[)],y: for(int k=1, k y2= max (x1 , m_PoList[ k] , y) ; ] *iainx=lKl : *maxx= ;x2 : *lniny= y1 ; 如理y=y2 , i (2)日a地界短形分析: 圆弧的边界矩形由几个特征点决定, 即 国弧的起点、终点以及国弧与坐标軸能交点。 由国弧的起始弧度和结束弧度可确定国弧与坐标轴有几个交点, 并求出这些交点置于 F'oLi st中, 然后在国弧类加入重载函数得到国弧的边界矩形。 void CA:rc::GetRect(float 相inx. float*miny, f1oat 如aM, f1oa*Illaxy) ;1ttt界矩形相交的判断:由于囲形相交的前提是其边界矩形相交, 因此判断图形的位置关系可先判断其边界矩形的位置关系,其中相交是最重要的,在My]1)ta,lfdoc. cpp 中定又一布尔函数 IsReotCross( ), 相交返回TRIJE ,否则返画FALSE,代码如下: B00L:[sRectCross( f1oat minx , f1oat l1liny, f1oat max, float maxy) {if(I[lim>maxx2ll max( minx2ll miny) maxy2llnaxy< lniriy2) ret,utn FALSEf else retum TR1:JNl } 其中n1in:=, miny, na,Kx, maxy,为当前边界矩形最小最大X, y坐标 另四个变量为另一相比较的图形的边界矩形已求出的最小最大X , Y坐标。 (3)直线与国的相变关系 基本思想;it-算直线与国 的組交关系,最基本進最重要是求出直线与困的交点坐 标(当然可不相交) ,从.几何的角度就是通过求解国与直线的方程来实现, 函数实現,在维图应用程序My.[〕raw 的国类 CCi:rcle中定又一函数: public ,[;1ass CCircle{ l7