-
大小: 578KB文件類型: .rar金幣: 2下載: 0 次發(fā)布日期: 2021-06-04
- 語言: 其他
- 標(biāo)簽: OpenGL??鼠標(biāo)點(diǎn)選??平移物體??
資源簡介
用鼠標(biāo)選中物體后,會(huì)出現(xiàn)x,y,z三個(gè)軸,點(diǎn)擊軸可以沿著相應(yīng)方向平移物體。

代碼片段和文件信息
//?moveobjectTest.cpp?:?定義控制臺(tái)應(yīng)用程序的入口點(diǎn)。
//
#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??????????????????????/*用于記錄鼠標(biāo)位置*/
{
int?x;
int?y;
};
//用于記錄移動(dòng)的向量
struct?MOVE_VECTOR
{
float?xMove;
float?yMove;
float?zMove;
};
//物體類
class?object
{
public:
object();
void?moveAlongX(float?xamount);?????//沿著x軸移動(dòng)的函數(shù)
void?moveAlongY(float?yamount);
void?moveAlongZ(float?zamount);
float?xMoveyMovezMove;?????//記錄該物體應(yīng)沿著x/y/z軸移動(dòng)多少
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;???????????????/*記錄鼠標(biāo)左鍵按下的狀態(tài)*/
//繪制箭頭,在繪制坐標(biāo)軸函數(shù)中被調(diào)用的
void?DrawArrow()
{
GLUquadricObj?*qObj;
qObj?=?gluNewQuadric();
gluQuadricNormals(qObj?GLU_SMOOTH);
gluCylinder(qObj11151616);
gluDeleteQuadric(qObj);
glPushMatrix();
????glTranslatef(0015);
????glutSolidCone(221616);
????glPopMatrix();
}
//繪制窗口中彩色正方體的代碼,可忽略之
///////////////////////////////////////////////////////////
//?畫那個(gè)黃色的球的,可以忽略
void?DrawSphere(float?radius)
{
GLUquadricObj?*pObj;
pObj?=?gluNewQuadric();
gluQuadricNormals(pObj?GLU_SMOOTH);
gluSphere(pObj?radius?26?13);
gluDeleteQuadric(pObj);
}
//畫正方體的,只是每面顏色不一樣而已,可以忽略
void?DrawColorCube()
{
glBegin(GL_QUADS);???????????/*畫一個(gè)彩色的正方體*/
/*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();
}
//繪制坐標(biāo)軸
void?DrawAxis()
{
glPushMatrix();
//glTranslatef(0010);
glRotatef(20
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件???????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
評(píng)論
共有 條評(píng)論