#include <GL/glut.h>
#include <stdio.h>
#include <iostream>
using namespace std;
void myDisplay(void);
//char * filename=(char *)"d:/aaacpp/点云数据转换/data/人体点云数据_out.asc";
char * filename=NULL; static GLfloat xRot=0.0f;
static GLfloat yRot=0.0f;
int n; float xTmp[];
float yTmp[];
float zTmp[]; void getPoint(char * filename,float * pX,float * pY,float * pZ,int & n)
{
FILE * fp=NULL;
n=;
if (fp = fopen(filename, "r"), fp == NULL)
{
cout << "文件打开失败,文件路径:" << filename << endl;
exit();
}
while(!feof(fp))
{
fscanf(fp,"%f %f %f\n",&pX[n],&pY[n],&pZ[n]);
++n;
//glVertex3f(x/2,y/2,z/2);
}
} void printPoint(float * pX,float * pY,float * pZ,int n)
{
int i=;
float x,y,z;
while(i<n)
{
x=pX[i];
y=pY[i];
z=pZ[i];
glVertex4f(x,y,z,2.0);
++i;
}
} void Display(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glPushMatrix();
glRotatef(xRot,1.0,0.0,0.0);
glRotatef(yRot,0.0,1.0,0.0);
glBegin(GL_POINTS);
glColor3f(1.0,1.0,1.0);//白色
//glVertex2f(0.0f,0.0f);
//glVertex2f(0.5f,0.8f); printPoint(xTmp,yTmp,zTmp,n);
glEnd();
glBegin(GL_LINES);//glBegin和glEnd保证指定的这些点有效
glColor3f(1.0,0.0,0.0);//红色
glVertex3f(0.0,0.0,0.0);
glVertex3f(1.0,0.0,0.0);
glColor3f(0.0,1.0,0.0);//绿色
glVertex3f(0.0,0.0,0.0);
glVertex3f(0.0,1.0,0.0);
glColor3f(0.0,0.0,1.0);//蓝色
glVertex3f(0.0,0.0,0.0);
glVertex3f(0.0,0.0,1.0);
glEnd();
glFlush();//保证前面的命令立即执行
glPopMatrix();
glutSwapBuffers();
} void rDisplay()
{
static int i=;
++i;
glPushMatrix();
glRotatef(0.1*i,1.0f,0.0f,0.0f);
//draw();
glPopMatrix();
glFlush();
//glutSwapBuffers();
} void SpecialKeys(int key,int x,int y)
{
float span=5.0;
switch(key)
{
case GLUT_KEY_UP:
xRot-=span;
break;
case GLUT_KEY_DOWN:
xRot+=span;
break;
case GLUT_KEY_LEFT:
yRot-=span;
break;
case GLUT_KEY_RIGHT:
yRot+=span;
break;
default:
break;
}
xRot=(xRot>360.0)?(xRot-360.0):xRot;
xRot=(xRot<0.0)?(xRot+360.0):xRot;
yRot=(yRot>360.0)?(yRot-360.0):yRot;
yRot=(yRot<0.0)?(yRot+360.0):yRot;
glutPostRedisplay();
} int main(int argc,char* argv[])
{
glutInit(&argc,argv);
filename=(argc==)?argv[]:NULL;
getPoint(filename,xTmp,yTmp,zTmp,n);
glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);
glutInitWindowPosition(,);
glutInitWindowSize(,);
glutCreateWindow("Three Window");//直到glutMainLoop才显示窗口
glPointSize(1.0);
glLineWidth(1.0);
glClearColor(0.0,0.0,0.0,0.0);
glClear(GL_COLOR_BUFFER_BIT);
glFlush();
glutSwapBuffers();
glViewport(, , , );
glMatrixMode(GL_MODELVIEW);//设置当前操作的矩阵为模型视图矩阵
//glLoadIdentity();//使当前绘图坐标系与世界坐标系重合
//glTranslatef(0.5,0.5,0.5);//使绘图坐标系相对世界坐标系沿xyz移动
glutDisplayFunc(&Display);
glutSpecialFunc(&SpecialKeys);
//glutIdleFunc(&rDisplay);
glutMainLoop();
return ;
} void myDisplay(void)
{
static int i=;
++i;
glEnable(GL_DEPTH_TEST);
glColor3f(1.0f,,);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
//gluPerspective(75,1,1,40000000);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glRotatef(0.01*i,1.0f,0.0f,0.0f);
//gluLookAt(0,-20000000,-20000000,0,0,0,0,0,1);
glPolygonMode(GL_FRONT, GL_FILL); // 设置正面为填充模式
glPolygonMode(GL_BACK, GL_LINE); // 设置反面为线形模式
glFrontFace(GL_CCW); // 设置逆时针方向为正面
glBegin(GL_POLYGON); // 按逆时针绘制一个正方形,在左下方
glVertex2f(-0.5f, -0.5f);
glVertex2f(0.0f, -0.5f);
glVertex2f(0.0f, 0.0f);
glVertex2f(-0.5f, 0.0f);
glEnd();
glBegin(GL_POLYGON); // 按顺时针绘制一个正方形,在右上方
glVertex2f(0.0f, 0.0f);
glVertex2f(0.0f, 0.5f);
glVertex2f(0.5f, 0.5f);
glVertex2f(0.5f, 0.0f);
glEnd(); glFlush();
glutSwapBuffers();
}

[记录]使用openGL显示点云的一个程序的更多相关文章

  1. [Python 学习]2.5版yield之学习心得 - limodou的学习记录 - limodou是一个程序员,他关心的焦点是Python, DocBook, Open Source …

    [Python 学习]2.5版yield之学习心得 - limodou的学习记录 - limodou是一个程序员,他关心的焦点是Python, DocBook, Open Source - [Pyth ...

  2. 记录一下mac上码云的使用

    项目比较多的时候用第三方的托管平台管理自己的代码还是挺不错的,记录一下码云的基本使用 分两部分进行说明: 一 :怎么上传自己本地的代码到码云.(方式,通过终端输入命令行) 具体的步骤: 1 :首先得在 ...

  3. 第12课 OpenGL 显示列表

    显示列表: 想知道如何加速你的OpenGL程序么?这一课将告诉你如何使用OpenGL的显示列表,它通过预编译OpenGL命令来加速你的程序,并可以为你省去很多重复的代码. 这次我将教你如何使用显示列表 ...

  4. PCL Show Point Cloud 显示点云

    在使用PCL库的时候,经常需要显示点云,可以用下面这段代码: #include <pcl/visualization/cloud_viewer.h> pcl::PointCloud< ...

  5. 重复ID的记录,只显示其中1条

    --重复ID的记录,只显示其中1条 --生成原始表 select * into #tempTable from ( select '1' as id ,'a' as name union all se ...

  6. [工作记录] Android OpenGL ES: non-square texture - continue

    previous: [工作记录] Android OpenGL ES 2.0: square texture not supported on some device recently I found ...

  7. ASP.NET Web API 记录请求响应数据到日志的一个方法

    原文:http://blog.bossma.cn/dotnet/asp-net-web-api-log-request-response/ ASP.NET Web API 记录请求响应数据到日志的一个 ...

  8. 编写一个程序,开启 3 个线程,这三个线程的 ID 分别为 A、B、C,每个线程将自己的 ID 在屏幕上打印 10 遍,要求输出的结果必须按顺序显示。如:ABCABCABC…… 依次递归

    import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.Lock; import java.uti ...

  9. PCL:PCL可视化显示点云

    (1):引用:仅仅是简单的显示点云,可以使用CloudViewer类.这个类非常简单易用.但要注意,它不是线程安全的.如果要用于多线程,还要参考PCLVisualizer. 需要注意的是,PointC ...

随机推荐

  1. 流媒体学习一(RTP)

    一.流媒体简介 随着Internet的日益普及,在网络上传输的数据已经不再局限于文字和图形,而是逐渐向声音和视频等多媒体格式过渡.目前在网络上传输音频/视频(Audio/Video,简称A/V)等多媒 ...

  2. 【上手centos】二、C/C++的编译与运行

    尝试了一下运行C/C++程序,觉得最好还是记下来吧,毕竟也算是从不知到已知呢么. 我用sublime写了2个程序,test.c和test.cpp,分别是C程序和C++程序 step1:编译: #gcc ...

  3. appium关于定位元素

    Windows上定位元素我用的是uiautomatorviewer 这个工具在你的SDK-tools目录下,点击uiautomatorviewer.bat启动,注意appium在跑的时候是取不到的 工 ...

  4. Fiddler-005-获取 Cookie 信息

    随着网络安全(例如:登录安全等)要求的不断提升,越来越多的登录应用在登录时添加了验证码登录,而验证码生成算法也在不断的进化,因而对含登录态的自动化测试脚本运行造成了一定程度的困扰,目前解决此种问题的方 ...

  5. c#中栈和堆的理解

    之前对栈(stack)和堆(heap)的认识很模糊,今天看了一篇关于堆栈的文章<译文---C#堆VS栈>后,仿佛有种拨开云雾见青天的感觉,当然只是一些浅显的理论的认识,这里做一些简单的记录 ...

  6. OProfile 性能分析工具

    OProfile 性能分析工具 官方网站:http://oprofile.sourceforge.net/news/ oprofile.ko模块本文主要介绍Oprofile工具,适用系统的CPU性能分 ...

  7. mongoose的promise(转发)

    Switching out callbacks with promises in Mongoose Published on July 28, 2015 mongo node mongoose pro ...

  8. 第五篇 SQL Server安全架构和安全

    本篇文章是SQL Server安全系列的第五篇,详细内容请参考原文. 架构本质上是一个数据库对象,其他对象的一个容器,在复杂的数据库中它能够很容易的管理各组对象.架构具有重要的安全功能.在这一篇你会学 ...

  9. 用仿ActionScript的语法来编写html5——第八篇,图片处理+粒子效果

    用仿ActionScript的语法来编写html5系列开发到现在,应该可以做出一些东西了,下面先来研究下图片的各种效果预览各种效果看下图效果和代码看这里,看不到效果的请下载支持html5的浏览器 ht ...

  10. 磁盘io负载查看

    转自:http://blog.csdn.net/i_am_jojo/article/details/7698458 为了方便各位和自己今后遇到此类问题能尽快解决,我这里将查看linux服务器硬盘IO访 ...