计算机图形学(二)输出图元_20_章节总结_程序展示_折线图和直方图
来源:互联网 发布:如何快速入门java 编辑:程序博客网 时间:2024/06/11 14:14
折线图和直方图
第一个程序展示使用一条折线、一组多点标记和位图字符标号来生成一年内按月的折线图。尽管等宽字体与图中的位置比较容易对齐,但此处给出了比例空间的字体。由于位图左下角提供了当前光栅位置的参考,所以我们必须移动参考位置以使文字串中心与绘制数据的位置对齐。图3.67给出了折线图程序的输出。
#include <GL/glut.h>GLsizei winWidth = 600, winHeight = 500; //Initial display window size.GLint xRaster = 25, yRaster = 150; // Initialize raster position.GLubyte label [36] = { 'J', 'a', 'n', 'F', 'e', 'b', 'M', 'a', 'r', 'A', 'p', 'r', 'M', 'a', 'y', 'J', 'u', 'n', 'J', 'u', 'l', 'A', 'u', 'g', 'S', 'e', 'p', 'O', 'c', 't', 'N', 'o', 'v', 'D', 'e', 'c'};GLint dataValues [12] = {420, 342, 324, 310, 262, 185, 190, 196, 217, 240, 312, 438};void init (void){ glClearColor (1.0, 1.0, 1.0, 1.0); //White display window. glMatrixMode (GL_PROJECTION);gluOrtho2D (0.0, 600.0, 0.0, 500.0);}void lineGraph (void){ GLint month, k; GLint x = 30; // Initialize x position for chart.glClear (GL_COLOR_BUFFER_BIT); // Clear display window.glColor3f (0.0, 0.0, 1.0); // Set line color to blue.glBegin (GL_LINE_STRIP); // Plot data as a polyline. for (k = 0; k < 12; k++) glVertex2i (x + k * 50, dataValues [k]);glEnd ();glColor3f (1.0, 0.0, 0.0); // Set marker color to red.for (k = 0; k < 12; k++){ // Plot data as asterisk polymarkers. glRasterPos2i (xRaster + k * 50, dataValues [k] - 4);glutBitmapCharacter (GLUT_BITMAP_9_BY_15, '*');}glColor3f (0.0, 0.0, 0.0); // Set test color to black.xRaster = 20; // Display chart labels.for (month = 0; month < 12; month++) { glRasterPos2i (xRaster, yRaster);for (k = 3 * month; k < 3 * month + 3; k++) glutBitmapCharacter (GLUT_BITMAP_HELVETICA_12, label [k]);xRaster += 50;}glFlush ( );}void winReshpeFcn (GLint newWidth, GLint newHeight){ glMatrixMode (GL_PROJECTION);glLoadIdetity ( );gluOrtho2D (0.0, GLdouble (newWidth), 0.0, GLdouble (newHeight));glClear (GL_COLOR_BUFFER_BIT);}void main (int argc, char** argv){ glutInit (&argc, argv);glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);glutInitWindowPosition (100, 100);glutInitWindowSize (winWidth, winHeight);glutCreateWindow ("Line Chart Data Plot");init ( );glutDisplayFunc (lineGraph);glutReshapeFunc (winReshpeFcn);glutMainLoop ( );}
第二个程序使用同样的数据集生成图3.68所示的直方图。该程序展示了矩形填充区及位图字符标号的应用。
void barChart (void){ GLint month, k;glClear (GL_COLOR_BUFFER_BIT); // Clear display window.glColor3f (1.0, 0.0, 0.0); // Set bar color to red.for (k = 0, k < 12; k++) glRecti (20 + k * 50, 165, 40 + k * 50, dataValues [k]);glColor3f (0.0, 0.0, 0.0); // Set text color to black.xRaster = 20; // Display chart labels.for (month = 0; month < 12; month++){ glRasterPos2i (xRaster, yRaster);for (k = 3 * month; k < 3 * month + 3; k++) glutBitmapCharacter (GLUT_BITMAP_HELVETICA_12, label [h]); xRaster += 50;}glFlush ( );}
0 0
- 计算机图形学(二)输出图元_20_章节总结_程序展示_折线图和直方图
- 计算机图形学(二)输出图元_20_章节总结_程序展示_饼图
- 计算机图形学(二)输出图元_20_章节总结_程序展示_蜗形线、心形线、螺旋线
- 计算机图形学(二)输出图元_20_章节总结(上)
- 计算机图形学(三)_图元的属性_章节总结(上)
- 计算机图形学(三)_图元的属性_章节总结(下)
- 计算机图形学(二)输出图元
- 计算机图形学(三)_图元的属性
- 计算机图形学(三)_图元的属性_2_颜色和灰度
- 计算机图形学(二)输出图元_9_填充区图元
- 计算机图形学(二)输出图元_12_OpenGL顶点数组
- 计算机图形学(二)输出图元_16_字符函数
- 计算机图形学(二)输出图元_17_图形分割
- 计算机图形学(二)输出图元_8_像素编址和对象的几何要素
- 计算机图形学(二)输出图元_10_多边形填充区_1_多边形分类和识别
- 计算机图形学(三)_图元的属性_16_ 反走样_5_过滤技术和像素移相
- 计算机图形学(二)输出图元_13_像素阵列图元
- 计算机图形学(二)输出图元_15_字符图元
- 单点登录SSO的实现原理
- Appium总结
- java基础整理-File类
- 不同版本PHP之间cURL的区别
- html初学日记
- 计算机图形学(二)输出图元_20_章节总结_程序展示_折线图和直方图
- poj 2723
- 关于Android线性布局中weight属性的一个小发现
- 上下移动jquery
- Android Fragment实例
- part1: maven 工程整合spring+activemq
- Android 编程下 Touch 事件的分发和消费机制
- RequireJS入门(二)
- Spark源码学习(3)——Job Runtime