首页 > 代码库 > ADS-B&雷达显示终端6.2
ADS-B&雷达显示终端6.2
修改日志:
1 由于地图层的不但增多,如果全部开启所有地图层显示,则整体显示过于密集凌乱,容易导致视
觉疲劳,也会使得飞行目标显示不突出,为解决些问题,对软件的配色模式进行了调整,并对软件的
反色模式进行了增强。只需要按下F12快捷键,即可实现配色模式的切换。
2 由于显示图层多,绘图元素数量过大,导致在进行缩放重绘时,软件出显卡顿,为解决此问题,
加入了绘图元素有有效性守检查,绘图之前,先判断绘图元素是否位于屏幕内,不是屏幕内的元素则
不绘制。对于点状元素,如VOR、NDB、城市等元素,只需要判断点坐标是否位于屏内即可;对于区
域,如行政省、危险区、限制区、管制区、情报区,以及折线类元素,如航路、河流等,则需要采用
另外的方式进行处理。具体修理方法为先获得绘图元素的最大外切矩形,然后判断些矩形与屏幕矩形
是否存在相交区域,若有则绘制此元素,否则不绘制。文章后面将会给出相关算法。
软件运行效果:
反色显示效果:
源代码如下:
CRect CDraw::get_area_bound_rect(
POINT* pt, int nLen) { // POINT rtPt; int lMaxX = (pt)->x; int lMinX = (pt)->x; int lMaxY = (pt)->y; int lMinY = (pt)->y; for(int i=0 ;i<nLen; i++) { if(lMaxX < (pt+i)->x) lMaxX = (pt+i)->x; if(lMinX > (pt+i)->x) lMinX = (pt+i)->x; if(lMaxY < (pt+i)->y) lMaxY = (pt+i)->y; if(lMinY > (pt+i)->y) lMinY = (pt+i)->y; } CRect rtRc(lMinX, lMinY, lMaxX, lMaxY); return rtRc; }
//判断两矩形是否相交算法 bool check_rect_cover( CRect rec1, CRect rec2) { CPoint rec1TL = rec1.TopLeft(); CPoint rec1BR = rec1.BottomRight(); CPoint rec2TL = rec2.TopLeft(); CPoint rec2BR = rec2.BottomRight(); if(rec1TL.x > rec2BR.x) return 0; if(rec1BR.x < rec2TL.x) return 0; if(rec1TL.y > rec2BR.y) return 0; if(rec1BR.y < rec2TL.y) return 0; return 1; }
软件作为兴趣项目,仍在持续的更新中,欢迎各位多提意见,促进完善. qq 387969934 tel 13332000255.
ADS-B&雷达显示终端6.2
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。