资源简介
用鼠标选中物体后,会出现x,y,z三个轴,点击轴可以沿着相应方向平移物体。

代码片段和文件信息
// moveobjectTest.cpp : 定义控制台应用程序的入口点。
//
#include “stdafx.h“
#include “gltools.h“ // OpenGL toolkit
#define TRUE 1
#define FALSE 0
///////////////////////////////
// Define object names
#define SUN 1
#define CUBE 2
#define xAxis 6
#define yAxis 7
#define zAxis 8
struct MYPOINT /*用于记录鼠标位置*/
{
int x;
int y;
};
//用于记录移动的向量
struct MOVE_VECTOR
{
float xMove;
float yMove;
float zMove;
};
//物体类
class object
{
public:
object();
void moveAlongX(float xamount); //沿着x轴移动的函数
void moveAlongY(float yamount);
void moveAlongZ(float zamount);
float xMoveyMovezMove; //记录该物体应沿着x/y/z轴移动多少
int selected; //记录物体是否被选中(初始化为FALSE)
int xSelected; //记录物体x轴是否被选中
int ySelected; //记录物体y轴是否被选中
int zSelected; //记录物体z轴是否被选中
};
object::object()
{
selected=FALSE;
xSelected=FALSE;
ySelected=FALSE;
zSelected=FALSE;
xMove=0; yMove=0; zMove=0;
}
object sun; //声明类对象sun
object cube; //声明类对象cube
struct MYPOINT oldpt={ -1 -1};
int l_button_down=FALSE; /*记录鼠标左键按下的状态*/
//绘制箭头,在绘制坐标轴函数中被调用的
void DrawArrow()
{
GLUquadricObj *qObj;
qObj = gluNewQuadric();
gluQuadricNormals(qObj GLU_SMOOTH);
gluCylinder(qObj11151616);
gluDeleteQuadric(qObj);
glPushMatrix();
glTranslatef(0015);
glutSolidCone(221616);
glPopMatrix();
}
//绘制窗口中彩色正方体的代码,可忽略之
///////////////////////////////////////////////////////////
// 画那个黄色的球的,可以忽略
void DrawSphere(float radius)
{
GLUquadricObj *pObj;
pObj = gluNewQuadric();
gluQuadricNormals(pObj GLU_SMOOTH);
gluSphere(pObj radius 26 13);
gluDeleteQuadric(pObj);
}
//画正方体的,只是每面颜色不一样而已,可以忽略
void DrawColorCube()
{
glBegin(GL_QUADS); /*画一个彩色的正方体*/
/*front*/
glColor3f( 0.0f 0.0f 1.0f);
glVertex3f(-1.0f-1.0f 1.0f);
glVertex3f( 1.0f-1.0f 1.0f);
glVertex3f( 1.0f 1.0f 1.0f);
glVertex3f(-1.0f 1.0f 1.0f);
/*back*/
glColor3f( 0.0f 1.0f 0.0f);
glVertex3f(-1.0f-1.0f-1.0f);
glVertex3f(-1.0f 1.0f-1.0f);
glVertex3f( 1.0f 1.0f-1.0f);
glVertex3f( 1.0f-1.0f-1.0f);
/*top*/
glColor3f( 1.0f 0.0f 0.0f);
glVertex3f(-1.0f 1.0f-1.0f);
glVertex3f(-1.0f 1.0f 1.0f);
glVertex3f( 1.0f 1.0f 1.0f);
glVertex3f( 1.0f 1.0f-1.0f);
/*bottom*/
glColor3f( 0.0f 1.0f 1.0f);
glVertex3f(-1.0f-1.0f-1.0f);
glVertex3f( 1.0f-1.0f-1.0f);
glVertex3f( 1.0f-1.0f 1.0f);
glVertex3f(-1.0f-1.0f 1.0f);
/*right*/
glColor3f( 1.0f 0.0f 1.0f);
glVertex3f( 1.0f-1.0f-1.0f);
glVertex3f( 1.0f 1.0f-1.0f);
glVertex3f( 1.0f 1.0f 1.0f);
glVertex3f( 1.0f-1.0f 1.0f);
/*left*/
glColor3f( 1.0f 1.0f 0.0f);
glVertex3f(-1.0f-1.0f-1.0f);
glVertex3f(-1.0f-1.0f 1.0f);
glVertex3f(-1.0f 1.0f 1.0f);
glVertex3f(-1.0f 1.0f-1.0f);
glEnd();
}
//绘制坐标轴
void DrawAxis()
{
glPushMatrix();
//glTranslatef(0010);
glRotatef(20
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 6648 2011-12-10 22:49 moveob
文件 663 2011-12-09 14:09 moveob
文件 728 2011-12-09 14:09 moveob
文件 621 2011-12-10 22:49 moveob
文件 60279 2011-12-10 22:49 moveob
文件 3211264 2011-12-09 14:09 moveob
文件 65 2011-12-10 22:49 moveob
文件 11529 2011-12-09 14:09 moveob
文件 388096 2011-12-10 22:49 moveob
文件 167936 2011-12-10 22:49 moveob
文件 14084 2011-12-10 22:49 moveob
文件 4519 2011-12-09 14:08 moveob
文件 1413 2011-12-10 22:49 moveob
文件 1225 2011-12-09 14:08 moveob
文件 219 2011-12-09 14:08 moveob
文件 233 2011-12-09 14:08 moveob
文件 498 2011-12-09 14:08 moveob
目录 0 2011-12-10 22:49 moveob
目录 0 2011-12-10 22:49 moveob
----------- --------- ---------- ----- ----
3870020 19
- 上一篇:汽轮机调速系统试验与模型参数辨识研究
- 下一篇:s7-300累计流量功能块
相关资源
- OpenGL参考手册
- Qt Creator opengl实现四元数鼠标控制轨迹
- OpenGL文档,api大全,可直接查询函数
- opengl轮廓字体源代码
- MFC读三维模型obj文件
- 利用OpenGL写毛笔字算法
- MFC中OpenGL面和体的绘制以及动画效果
- 基于OPENGL的光线跟踪源代码368758
- VC 实现三维旋转(源码)
- 自编用openGL实现3D分形树,分形山
- OpenGL球形贴图自旋程序
- OpenGL导入贴图的Texture类
- 计算机图形学(openGL)代码
- 用OpenGL开发的机械臂运动仿真程序(
- OpenGL-3D坦克模拟
- OPENGL实现世界上最小的3D游戏
- VS2012OpenGL配置所需要的全部libdllh文件
- 基于OpenGL的仿蝗虫机器人三维动态仿
- 图形学 - OpenGL实现3种三维茶壶显示源
- opengl程序-会跳舞的骷髅
- opengl实现三维网格光顺Laplacian算法
- opengl——爆炸
- OpenGL三维地形建模
- opengl游戏编程徐明亮版(含源码)
- 用OPENGL画的一个简单的直升飞机
- opengl完美天空盒
- 3D绘图程序设计:使用Direct3D 10/9和Ope
- OpenGL绘制可运动自行车源程序.zip
- OpenGL实现飘动效果
- opengl室内场景的绘制,包括碰撞检测
评论
共有 条评论