#include <GL/glut.h> #include <iostream> #include <cmath> using namespace std; ; ;//设置窗口的宽和高 void myInit() { glClearColor(,,,); } void show() { GLsizei dw; int n,i; dw=; n=(width-)/dw; cout<<"n="<<n<<endl; glC…
1. 剔除多边形表面 在三维空间中,一个多边形虽然有两个面,但我们无法看见背面的那些多边形,而一些多边形虽然是正面的,但被其他多边形所遮挡.如果将无法看见的多边形和可见的多边形同等对待,无疑会降低我们处理图形的效率. 在这种时候,可以将不必要的面剔除. 首先,使用glEnable(GL_CULL_FACE);来启动剔除功能(使用glDisable(GL_CULL_FACE)可以关闭之)  然后,使用glCullFace来进行剔除.  glCullFace的参数可以是GL_FRONT,GL_BAC…
OpenGL 支持两种颜色模式:一种是 RGBA模式,一种是 颜色索引模式.无论哪种颜色模式,计算机都必须为每一个像素保存一些数据,即通过每一个像素的颜色,来改变整体图形的颜色.不同的是, RGBA 模式中,数据直接就代表了颜色:而颜色索引模式中,数据代表的是一个索引,要得到真正的颜色,还必须去查索引表.具体如下: 1.RGBA模式 RGBA 模式中,每一个像素会保存以下数据: R 值(红色分量). G 值(绿色分量). B 值(蓝色分量)和A 值( alpha 分量).其中红.绿.蓝三种颜色相…
OpenGL 支持两种颜色模式:一种是 RGBA模式.一种是 颜色索引模式. 不管哪种颜色模式.计算机都必须为每个像素保存一些数据,即通过每个像素的颜色,来改变总体图形的颜色.不同的是. RGBA 模式中,数据直接就代表了颜色:而颜色索引模式中,数据代表的是一个索引,要得到真正的颜色,还必须去查索引表.详细例如以下: 1.RGBA模式 RGBA 模式中,每个像素会保存下面数据: R 值(红色分量). G 值(绿色分量). B 值(蓝色分量)和A 值( alpha 分量). 当中红.绿.蓝三种颜色…
引自:http://blog.csdn.net/mzyang272/article/details/7655464 在许多OpenGL操作中,我们都向OpenGL发送一大块数据,例如向它传递需要处理的顶点数组数据.传输这种数据可能非常简单,例如把数据从系统的内存中复制到图形卡.但是,由于OpenGL是按照客户机-服务器模式设计的,在OpenGL需要数据的任何时候,都必须把数据从客户机内存传输到服务器.如果数据并没有修改,或者客户机和服务器位于不同的计算机(分布式渲染),数据的传输可能会比较缓慢,…
Python有很多可视化工具,本篇只介绍Matplotlib. Matplotlib是一种2D的绘图库,它可以支持硬拷贝和跨系统的交互,它可以在Python脚本.IPython的交互环境下.Web应用程序中使用.该项目是由John Hunter于2002年启动的,其目的是为Python构建一个MATLAB式的绘图接口.如果结合使用一种GUI工具包(如IPython),Matplotlib还具有诸如缩放和平移等交互功能.它不仅支持各种操作系统上许多不同的GUI后端,而且还能将图片导出为各种常见的食…
-----------------------------------------------------------Matplotlib:绘图和可视化------------------------------------------------------------------------------    Matplotlib:---------------------------------------------------是一个强大的Python绘图和数据可视化的工具包    一:…
OpenGL中的帧缓存 在OpenGL窗口中, 左下角的像素为(0, 0). 一般而言, 像素(x, y)占据的矩形区域左下角为(x, y), 右上角为(x+1, y+1). 1. 缓存及其用途 [1]颜色缓存,  左前,右前,左后,右后和任意数量的辅助颜色缓存; [2]深度缓存 [3]模板缓存 [4]累积缓存 2.颜色缓存 1) 颜色缓存存储了颜色索引或RGB颜色数据, 还可能存储了alpha值. 2) 支持立体观察(stereoscopic viewing)的OpenGL实现有左颜色缓存和右…
OpenGL的绘图机制是 OpenGL的绘图方式与Windows一般的绘图方式是不同的,主要区别如下: (1)Windows采用的是GDI(Graphy Device Interface 图形设备接口)在设备描述表DC上进行绘图. (2)OpenGL采用的是OpenGL相关的函数(OGL的命令)在渲染描述表RC上进行绘图. (3)OpenGL使用的是特殊的像素格式. 在Windows中使用GDI绘图时必须指定在哪个设备环境DC中绘制,同同样的在使用OpenGL函数时也必须指定一个所谓的渲染环境.…
GradientFill函数可以对特定的矩形区域或者三角形区域进行渐变颜色的填充.我们先来看看GradientFill函数到底长得什么样子,帅不帅. BOOL GradientFill( _In_  HDC hdc, _In_  PTRIVERTEX pVertex, _In_  ULONG nVertex, _In_  PVOID pMesh, _In_  ULONG nMesh, _In_  ULONG ulMode ); 参数涉及结构体,于是有些人就开始感到痛苦了,调用函数一遇到结构体就会…
Python之绘图和可视化 1. 启用matplotlib 最常用的Pylab模式的IPython(IPython --pylab) 2. matplotlib的图像都位于Figure对象中. 可以使用plt.figure创建一个新的Figure,不能通过空Figure绘图,必须用add_subplot创建一个或多个subplot axes[0,1]可以通过sharex和sharey指定subplot应该具有相同的X轴或Y轴. 利用Figure的subplots_adjust方法可以修改间距,w…
Matplotlib:绘图和可视化 简介 简单绘制线形图 plot函数 支持图类型 保存图表 一 .简介 Matplotlib是一个强大的Python绘图和数据可视化的工具包.数据可视化也是我们数据分析的最重要的工作之一,可以帮助我们完成很多操作,例如:找出异常值.必要的一些数据转换等.完成数据分析的最终结果也许就是做一个可交互的数据可视化. 安装方式: pip install matplotlib 引用方法: import matplotlib.pyplot as plt 二 .简单绘制线形图…
OpenGL函数库相关的API有核心库(gl).实用库(glu).辅助库(aux).实用工具库(glut).窗口库(glx.agl.wgl)和扩展函数库等.gl是核心,glu是对gl的部分封装.glx.agl.wgl 是针对不同窗口系统的函数.glut是为跨平台的OpenGL程序的工具包,比aux功能强大.扩展函数库是硬件厂商为实现硬件更新利用OpenGL的扩展机制开发的函数.下面逐一对这些库进行详细介绍.(glut是基本的窗口界面,是独立于gl和glu的,如果不喜欢用glut可以用MFC和Wi…
matplotlib 是python最著名的绘图库,它提供了一整套和matlab相似的命令API,十分适合交互式地进行制图.而且也可以方便地将它作为绘图控件,嵌入GUI应用程序中. 它的文档相当完备,并且 Gallery页面 中有上百幅缩略图,打开之后都有源程序.因此如果你需要绘制某种类型的图,只需要在这个页面中浏览/复制/粘贴一下,基本上都能搞定. 在Linux下比较著名的数据图工具还有gnuplot,这个是免费的,Python有一个包可以调用gnuplot,但是语法比较不习惯,而且画图质量不…
在OpenGL中实现双缓冲技术的一种简单方法: 1.在调用glutInitDisplayMode函数时, 开启GLUT_DOUBLE,即glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);.这里将我们惯用的GLUT_SINGLE替换为GLUT_DOUBLE,意为要使用双缓冲而非单缓冲. 2. 调用glutDisplayFunc(display)注册回调函数时, 在回调函数中所有绘制操作完成后调用glutSwapBuffers()交换两个缓冲区指针. 3. 调用…
OPENGL坐标系可分为:世界坐标系和当前绘图坐标系. 世界坐标系:在OpenGL中,世界坐标系是以屏幕中心为原点(0, 0, 0),且是始终不变的.你面对 屏幕,你的右边是x正轴,上面是y正轴,屏幕指向你的为z正轴.长度单位这样来定: 窗口范围按此单位恰好是(-1,-1)到(1,1),即屏幕左下角坐标为(-1,-1),右上角 坐标为(1,1). 当前绘图坐标系:是绘制物体时的坐标系.程序刚初始化时,世界坐标系和当前绘图坐标系是重合 的.当用glTranslatef(),glScalef(),…
1.深度 所谓深度,就是在openGL坐标系中,像素点Z坐标距离摄像机的距离.摄像机可能放在坐标系的任何位置,那么,就不能简单的说Z数值越大或越小,就是越靠近摄像机. 2.深度缓冲区 深度缓冲区原理就是把一个距离观察平面(近裁剪面)的深度值(或距离)与窗口中的每个像素相关联.      首先,使用glClear(GL_DEPTH_BUFFER_BIT),把所有像素的深度值设置为最大值(一般是远裁剪面).      然后,在场景中以任意次序绘制所有物体.硬件或者软件所执行的图形计算把每一个绘制表面…
OpenGL中的投影使用 在OpenGL中,投影矩阵指定了可视区域的大小和形状.对于正投影与透视投影这两种不同的投影类型,它们分别有各自的用途. 正投影 它适用于2D图形,如文本.建筑画图等.在它的应用场合,我们希望在屏幕上展示准确的物体大小和度量. 透视投影 它使用透视除法,对距离观察者较远的物体进行缩短和收缩.由于可视区域前端和后端的宽度度量方法并不同样,导致两个逻辑大小同样的物体,当它们分别位于可视区域的前面和后面时,前者看上去要比后者大一些. 下图展示了平截头体(frustum)所定义的…
glPushMatrix.glPopMatrix操作事实上就相当于栈里的入栈和出栈. 很多人不明确的可能是入的是什么,出的又是什么. 比如你当前的坐标系原点在你电脑屏幕的左上方.如今你调用glPushMatrix,然后再调用一堆平移.旋转代码等等,然后再绘图.那些平移和旋转都是基于左上角为原点进行变化的.并且都会改变坐标的位置,经过了这些变化后,你的坐标肯定不再左上角了. 那假设想恢复怎么办呢?这时就调用glPopMatrix从栈里取出一个"状态"了,这个状态就是你调用glPushMa…
(一)BMP文件格式简单介绍 BMP文件是一种像素文件,它保存了一幅图象中所有的像素.这种文件格式可以保存单色位图.16色或256色索引模式像素图.24位真彩色图象,每种模式种单一像素的大小分别为1/8字节,1/2字节,1字节和3字节.目前最常见的是256色BMP和24位色BMP.这种文件格式还定义了像素保存的几种方法,包括不压缩.RLE压缩等.常见的BMP文件大多是不压缩的.这里为了简单起见,我们仅讨论24位色.不使用压缩的BMP.(如果你使用Windows自带的画图程序,很容易绘制出一个符合…
转自:http://blog.sina.com.cn/s/blog_957b9fdb0100zesv.html 为了说明在三维物体到二维图象之间,需要经过什么样的变换,我们引入了相机(Camera)模拟的方式,假定用相机来拍摄这个世界,那么在相机的取景器中,就存在人眼和现实世界之间的一个变换过程.      第一步:视点变换(如同拍照的时候设置相机的位置)          在拍照的时候,我们首先要将相机置于三角架上,让它对准三维场景.在OpenGL中调整视点的位置就像是是要放置相机一样,我们称…
第1节 pandas 回顾 第2节 读写文本格式的数据 第3节 使用 HTML 和 Web API 第4节 使用数据库 第5节 合并数据集 第6节 重塑和轴向旋转 第7节 数据转换 第8节 字符串操作 第9节 绘图和可视化 pandas 回顾 一.实验简介 学习数据分析的课程,需要同学们掌握好 Python 的语言基础,和对 Numpy 与 Matplotlib 等基本库有一些了解.同学们可以参考学习实验楼的 Python 语言基础教程与 Python 科学计算的课程. pandas 是后面我们…
由于上位机需要绘制电压电阻表盘,如下图所示: 后来,在网上找阿找,还是没找到满意的,索性自己来画控件算了,由于第一次画控件,所以花了我2天时间,才画好 效果图如下: 上图的所有颜色(包括滑动的渐变/单一颜色,以及字体颜色)都可以自定义,包括图标也可以(上面的电阻图标,网上没找到好看的,所以很丑~) 整体效果图如下所示: 该demo程序放在了提供的源码地址里了,下载好后,在子文件夹demo1里面 介绍 代码里添加了自适应设置,根据窗口大小自动改变标签,图标,刻度值,中心圆数值等 代码里集成了定时器…
转载:https://blog.csdn.net/meegomeego/article/details/8686816 OPENGL坐标系可分为:世界坐标系和当前绘图坐标系. 世界坐标系以屏幕中心为原点(0, 0, 0).你面对屏幕,你的右边是x正轴,上面是y正轴,屏幕指向你的为z正轴.长度单位这样来定: 窗口范围按此单位恰好是(-1,-1)到(1,1). 当前绘图坐标系是 绘制物体时的坐标系.程序刚初始化时,世界坐标系和当前绘图坐标系是重合的.当用glTranslatef(),glScalef…
Lighting:https://www.evl.uic.edu/julian/cs488/2005-11-03/index.html 光照 OpenGL中的光照(Linghting)是很重要的,为什么重要?请看下图 上图中左图是有光照的效果,右图是没有光照的效果. 有光照的好处: 给人更多关于曲率和深度的视觉感受 给人更明显的3D效果 隐藏面清除 在照明和着色中,深度信息和法向量变得非常重要. 旧的painter算法是这样的: while (1) { get_viewing_point_fro…
OpenGL中位图的操作 OpenGL中位图的操作(glReadPixels,glDrawPixels和glCopyPixels应用举例). 1. BMP文件格式简单介绍 BMP文件是一种像素文件,它保存了一幅图象中所有的像素.这种文件格式可以保存单色位图.16色或256色索引模式像素图.24位真彩色图象,每种模式 种单一像素的大小分别为1/8字节,1/2字节,1字节和3字节.目前最常见的是256色BMP和24位色BMP.这种文件格式还定义了像素保存的几种方 法,包括不压缩.RLE压缩等.常见的…
OpenGl 中的基本数据类型 为了便于 OpenGL在各种平台上移植,OpenGL定义了自己的数据类型. 如果你愿意也可用这些数据类型对应的标准C的数据类型来替代.如OpenGL也定义 GLvoid类型,如果用C语言编写,可以用它替代void类型.不同的C编译器或环境对各种C变量的大小和内存分布都有自己的规则.使用 OpenGL定义的数据类型就可以隔离开这些不同. 下表列出了Win32操作系统中OpenGL的数据类型及相应的C数据类型,为了便于识别,使用了后缀. 在本书中,我将会使用这些后缀.…
OPengl的官方文档如下:https://www.opengl.org/sdk/docs/man4/ void glGetIntegerv(   GLenum pname,      GLint * data); 返回Pname所指的OPengl中的状态变量,放置在data指针的空间. 第一个参数,表示你要得到什么状态的值 第二个参数即输出这个值 说明: If glGetBooleanv is called, a floating-point (or integer) value is con…
OpenGL中的需要注意的细节问题 1. 虽然我们使用Windows的BMP文件作为纹理时,一般是蓝色的像素在最前,其真实的格式为GL_BGR而不是GL_RGB,在数据的顺序上有所 不同,但因为同样是红.绿.蓝三种颜色,因此这里仍然使用GL_RGB.(如果使用GL_BGR,OpenGL将无法识别这个参数,造成错误)…
OpenGL中的像素包装理解 像素包装 位图和像素图很少会被紧密包装到内存中.在许多硬件平台上,考虑到性能的原因位图和像素图的每一行的数据会从特殊的字节对齐地址开始.绝大多数编译 器会自动把变量和缓冲区放置在当前计算机架构优化的对齐地址上.OpenGL默认是4字节对齐的.在之前的例子中,篝火图的数据是紧密包装在一起的,但这 不会引起什么问题,因为篝火图刚好是按照4字节对齐的,其宽是32位即4字节.如果位图是34位宽的话,为了按照4字节对齐我们需要为每一行的数据多添加 额外的30位(凑齐64位)无…