3.6.2 编程实例-河南地图绘制

程序有关介绍请参考图书3.6.1节内容

程序运行结果如下图:

#include <iostream> #include <fstream> #include<vector> #include <GL/glut.h> using namespace std;

class MapPoint { public:     double longitude;     double latitude; }; class Polygon { public:     vector<MapPoint> points; //多边形的顶点序列 }; vector<Polygon*> polys; //多边形集合 vector<Polygon*> ReadMapData(char* filename) {     int PointCount;     vector<Polygon*> polygons;     ifstream fs(filename);     while(fs.eof()!=true)     {         Polygon* poly=new Polygon;         fs>>PointCount;         cout<<PointCount<<endl;         for(int i=0;i<PointCount;i++)         {             MapPoint p;             fs>>p.longitude>>p.latitude;             poly->points.push_back(p);         }         polygons.push_back(poly);

    }     return polygons; } void display(void) {        glClear (GL_COLOR_BUFFER_BIT);        //用蓝色色绘制各省边界     glColor3f (0.0, 0.0, 1.0);     glPolygonMode(GL_BACK, GL_LINE);         for(int i=0;i<polys.size();i++)     {                vector<MapPoint> points=polys[i]->points;         glBegin(GL_LINE_STRIP);         for(int j=0;j<points.size();j++)         {                        glVertex3f (points[j].longitude, points[j].latitude, 0.0);                }         glEnd();     }        glFlush(); } void init (void) {     //设置背景颜色     glClearColor (1.0, 1.0, 1.0, 0.0);     //初始化观察值     glMatrixMode(GL_PROJECTION);    //将矩阵模式设为投影     glLoadIdentity();                 //对矩阵进行单位化     glOrtho(110.0, 118.0, 30.0, 38.0, -1.0, 1.0);   //构造平行投影矩阵 } int main(int argc, char** argv) {     //数据文件请到http://files.cnblogs.com/opengl/HenanCounty.rar下载放到D盘根目录下并解压     char* filename="D:/HenanCounty.txt";

    polys=ReadMapData(filename);        glutInit(&argc, argv);     glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);  //单缓存和RGB     glutInitWindowSize (500, 500);     glutInitWindowPosition (100, 100);     glutCreateWindow ("地图绘制");     init ();     glutDisplayFunc(display);     //显示回调函数     glutMainLoop();     return 0; }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏书山有路勤为径

编码蓝幕/证件照背景替换

此时你会发现背景可能是红色,不是预料的蓝色,这是因为OpenCv会把彩色图像读取成BGR(蓝绿红)图像

8320
来自专栏一棹烟波

OpenGL进行简单的通用计算实例

博主作为OpenGL新手,最近要用OpenGL进行并行的数据计算,突然发现这样的资料还是很少的,大部分资料和参考书都是讲用OpenGL进行渲染的。好不容易找到一...

29970
来自专栏小特工作室

基于iTextSharp的PDF文档操作

  公司是跨境电商,需要和各种物流打交道,需要把东西交给物流,让他们发到世界各地。其中需要物流公司提供一个运单号,来追踪货物到达哪里?!   最近在和DHL物流...

283100
来自专栏Python数据科学

快速入门Matplotlib教程

Matplotlib 可能是 Python 2D-绘图领域使用最广泛的套件。它能让使用者很轻松地将数据图形化,并且提供多样化的输出格式。这里将会探索 matpl...

12410
来自专栏生信宝典

如何获取目标基因的转录因子(下)——Linux命令获取目标基因TF

如何获取目标基因的转录因子(上)一文中我们以人类基因组为例,从ensemble网站下载了基因组中基因位置信息矩阵GRCh38.gene.bed和基因组中转录因子...

56540
来自专栏xdecode

Java调用PDFBox打印自定义纸张PDF

打印对象 一份设置为A3纸张, 页面边距为(10, 10, 10, 10)mm的PDF文件. ? PageFormat  默认PDFPrintable无法设置页...

59150
来自专栏向治洪

iOS自动布局框架之Masonry

目前iOS开发中大多数页面都已经开始使用Interface Builder的方式进行UI开发了,但是在一些变化比较复杂的页面,还是需要通过代码来进行UI开发的。...

21860
来自专栏蜕变

#哆啦A梦

write('by dongdong', font=("Bradley Hand ITC", 30, "bold"))

11300
来自专栏CVer

利用OpenCV和深度学习实现人脸检测

今天偷点儿懒,就没有及时整理最新的paper,还请各位看官谅解。这里整理了一份前段时间做的小demo,实现献丑了 本文基于OpenCV3.3.1或以上版本(如O...

4.1K150
来自专栏计算机视觉与深度学习基础

Leetcode 5 Longest Palindromic Substring

Given a string S, find the longest palindromic substring in S. You may assume ...

19450

扫码关注云+社区

领取腾讯云代金券