前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >3.6.2 编程实例-河南地图绘制

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

作者头像
步行者08
发布2018-10-09 17:15:43
7230
发布2018-10-09 17:15:43
举报
文章被收录于专栏:图形学与OpenGL图形学与OpenGL

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

程序运行结果如下图:

image
image

#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; }

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017年04月17日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档