资源简介

利用OpenGL实现了三维点云的显示,添加了鼠标控制事件,可以用鼠标对三维点云模型进行移动、缩放等功能。很不错的源代码,本代码运行环境是VS2010,需要添加OpenGL的配置。很不错的源代码分享给大家。

资源截图

代码片段和文件信息

// 999.cpp : Defines the entry point for the console application.
//
#include “stdafx.h“
#include 
#include      /* For “exit“ prototype */
#include     /* Header File For The GLUT Library */

/* ASCII code for the escape key. */
#define ESCAPE 27

GLint window;           /* The number of our GLUT window */
GLint Xsize=480;
GLint Ysize=640;

GLfloat xs=1.0ys=1.0zs=1.0;   /* scale */
GLfloat xr=0.0yr=0.0zr=0.0;
bool mouseLeftDown = false;
bool mouseRightDown = false;
float mouseX = 0 mouseY = 0;
float cameraDistance = -3.0;
float cameraAngleX = 0;
float cameraAngleY = 0;

/* Simple window transformation routine */
GLvoid Transform(GLfloat Width GLfloat Height)
{
  glViewport(0 0 Width Height);              /* Set the viewport */
  glMatrixMode(GL_PROJECTION);                  /* Select the projection matrix */
  glLoadIdentity(); /* Reset The Projection Matrix */
  gluPerspective(45.0Width/Height0.1100.0);  /* Calculate The Aspect Ratio Of The Window */
  glMatrixMode(GL_MODELVIEW);                   /* Switch back to the modelview matrix */
}


/* A general OpenGL initialization function.  Sets all of the initial parameters. */
GLvoid InitGL(GLfloat Width GLfloat Height)
{
  glClearColor(0.0 0.0 0.0 0.0); /* This Will Clear The Background Color To Black */
  glShadeModel(GL_SMOOTH);
  Transform( Width Height );                   /* Perform the transformation */
}

/* The function called when our window is resized  */
GLvoid ReSizeGLScene(GLint Width GLint Height)
{
  if (Height==0)    Height=1;                   /* Sanity checks */
  if (Width==0)     Width=1;
  Transform( Width Height );                   /* Perform the transformation */
}


/* The main drawing function

   In here we put all the OpenGL and calls to routines which manipulate
   the OpenGL state and environment.

   This is the function which will be called when a “redisplay“ is requested.
*/

GLvoid DrawGLScene()
{
  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); /* Clear The Screen And The Depth Buffer */

  glPushMatrix(); //把矩阵压入栈中保存起来,留着以后再用

  glLoadIdentity(); //把矩阵堆栈中的在栈顶的那个矩阵置为单位矩阵,好让之前的任何变换都不影响后面的变化
 // glTranslatef(0.00.00.0); //下面物体将在(x0.0f0.0f)的位置绘制
 // glRotatef(xr1.00.00.0); //沿x0.0f0.0f的y轴旋转45度    从 坐标(0,0,0)即原点,引出一条线到(100)用右手握住这条线,
//这时,你会问,如何握?右手大拇指指向 (0,0,0)至(1,0,0)的方向 才握。另外四个手指的弯曲指向 即是物体旋转方向。
  glTranslatef(0 0 cameraDistance);
  glRotatef(cameraAngleX 1 0 0);
  glRotatef(cameraAngleY 0 1 0);
  glScalef(xsyszs);      //xsyszs分别为模型在xyz轴方向的缩放比。   

 // glBegin(GL_QUADS);          
 glBegin(GL_POLYGON); 
    glColor3f(1.01.00.0);     
    glVertex3f( 1.0 1.0 1.0);       
    glColor3f(1.00.00.0);     
    glVertex3f(-1.0 1.0 1.0);        
    glColor3f(1.01.00.0);     
    glVertex3f(-1.0-1.0 1.0);       
glColor3f(1.00.00.0);     
glVertex3f( 1.0-1.0 1.0); 
  glEnd();


 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2016-05-20 19:29  OpenGL 3D显示\
     目录           0  2016-05-20 19:28  OpenGL 3D显示\999\
     文件    25317376  2016-05-03 12:12  OpenGL 3D显示\999.sdf
     文件         876  2016-04-20 09:27  OpenGL 3D显示\999.sln
     文件       12288  2016-05-03 12:12  OpenGL 3D显示\999.suo
     文件        6493  2016-05-03 09:17  OpenGL 3D显示\999\999.cpp
     文件        4360  2016-04-20 09:27  OpenGL 3D显示\999\999.vcxproj
     文件        1327  2016-04-20 09:27  OpenGL 3D显示\999\999.vcxproj.filters
     文件         143  2016-04-20 09:27  OpenGL 3D显示\999\999.vcxproj.user
     目录           0  2016-05-20 19:27  OpenGL 3D显示\999\Debug\
     文件         406  2016-04-20 09:35  OpenGL 3D显示\999\Debug\999.exe.embed.manifest
     文件         472  2016-04-20 09:35  OpenGL 3D显示\999\Debug\999.exe.embed.manifest.res
     文件         381  2016-04-20 11:11  OpenGL 3D显示\999\Debug\999.exe.intermediate.manifest
     文件          47  2016-04-20 11:11  OpenGL 3D显示\999\Debug\999.lastbuildstate
     文件        2509  2016-04-20 11:11  OpenGL 3D显示\999\Debug\999.log
     文件       17308  2016-04-20 11:11  OpenGL 3D显示\999\Debug\999.obj
     文件     1179648  2016-04-20 09:35  OpenGL 3D显示\999\Debug\999.pch
     文件           0  2016-04-20 09:35  OpenGL 3D显示\999\Debug\999.write.1.tlog
     文件         196  2016-04-20 09:35  OpenGL 3D显示\999\Debug\999_manifest.rc
     文件        1754  2016-04-20 11:11  OpenGL 3D显示\999\Debug\cl.command.1.tlog
     文件        3288  2016-04-20 11:11  OpenGL 3D显示\999\Debug\CL.read.1.tlog
     文件         548  2016-04-20 11:11  OpenGL 3D显示\999\Debug\CL.write.1.tlog
     文件           2  2016-04-20 11:11  OpenGL 3D显示\999\Debug\link-cvtres.read.1.tlog
     文件           2  2016-04-20 11:11  OpenGL 3D显示\999\Debug\link-cvtres.write.1.tlog
     文件           2  2016-04-20 11:11  OpenGL 3D显示\999\Debug\link.8880-cvtres.read.1.tlog
     文件           2  2016-04-20 11:11  OpenGL 3D显示\999\Debug\link.8880-cvtres.write.1.tlog
     文件           2  2016-04-20 11:11  OpenGL 3D显示\999\Debug\link.8880.read.1.tlog
     文件           2  2016-04-20 11:11  OpenGL 3D显示\999\Debug\link.8880.write.1.tlog
     文件        2228  2016-04-20 11:11  OpenGL 3D显示\999\Debug\link.command.1.tlog
     文件        5624  2016-04-20 11:11  OpenGL 3D显示\999\Debug\link.read.1.tlog
     文件         610  2016-04-20 11:11  OpenGL 3D显示\999\Debug\link.write.1.tlog
............此处省略52个文件信息

评论

共有 条评论