資源簡介
利用opengl使用Microsoft Visual Studio 2005編寫出來的小程序,附帶著源代碼

代碼片段和文件信息
#define?MAX_POLYGONS?8
#define?MAX_VERTICES?10
#define?TRUE?1
#define?FALSE?0
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
using?namespace?std;?
void?myMouse(intintintint);
void?myMotion(intint);
void?myDisplay();
void?Reshape(intint);
void?color_menu(int);
void?safe_menu(int);
void?main_menu(int);
int?pick_polygon(int?xint?y);
void?myinit();
typedef?struct?polygon
{
int?color;
bool?used;
int?xminxmaxyminymax;
float?xcyc;
int?nvertices;
int?x[MAX_VERTICES];
int?y[MAX_VERTICES];
}polygon;
bool?picking?=?FALSE;
bool?moving?=?FALSE;
bool?changing?=?false;
bool?del?=?false;
int?in_polygon?=?-1;
int?present_color?=?0;
int?fs;
ifstream?fin;
ofstream?fout;
GLsizei?wh?=?500ww?=?500;
int?draw_mode?=?0;
GLfloat?colors[8][3]={{0.00.00.0}{1.00.00.0}{0.01.00.0}{0.00.01.0}{0.01.01.0}{1.00.01.0}{1.01.00.0}{1.01.01.0}};
polygon?polygons[MAX_POLYGONS];
void?myReshape(int?wint?h)
{
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0.0(GLdouble)w0.0(GLdouble)h);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glViewport(00wh);
ww?=?w;
wh?=?h;
}
void?myinit()
{
int?i;
glClearColor(1.01.01.01.0);
for(i=0;i polygons[i].used=FALSE;
}
void?myMouse(int?btnint?stateint?xint?y)
{
int?ij;
y?=?wh-y;
if(btn==GLUT_LEFT_BUTTON?&&?state==GLUT_DOWN?&&?!picking?&&?!moving)
{
moving?=?FALSE;
if(in_polygon>=0)
{
if(polygons[in_polygon].nvertices==MAX_VERTICES)
{
printf(“exceeds?maximum?number?vertices\n“);
exit(0);
}
i=polygons[in_polygon].nvertices;
polygons[in_polygon].x[i]=x;
polygons[in_polygon].y[i]=y;
polygons[in_polygon].nvertices++;
}
}
if(btn==GLUT_LEFT_BUTTON?&&?state==GLUT_DOWN?&&?picking?&&?!moving)
{
picking=?FALSE;
moving?=FALSE;
j=pick_polygon(xy);
if(j>=0)
{
polygons[j].used=FALSE;
in_polygon=-1;
glutPostRedisplay();
}
}
}
int?pick_polygon(int?xint?y)
{
int?i;
for(i=0;i {
if(polygons[i].used)
if((x>=polygons[i].xmin)&&(x<=polygons[i].xmax)&&(y>=polygons[i].ymin)&&(y<=polygons[i].ymax))
{
in_polygon=i;
moving?=?TRUE;
return(i);
}
}
printf(“not?in?a?polygon\n“);
return(-1);
}
void?myMotion(int?xint?y)
{
float?dxdy;
int?ij;
if(moving)
{
y?=?wh?-y;
j?=?pick_polygon(xy);
if(j<0)
{
printf(“not?in?a?polygon\n“);
return;
}
dx=x-polygons[j].xc;
dy=y-polygons[j].yc;
for(i=0;i {
polygons[j].x[i]+=dx;
polygons[j].y[i]+=dy;
}
polygons[j].xc+=dx;
polygons[j].yc+=dy;
if(dx>0)
polygons[j].xmax+=dx;
else
polygons[j].xmin+=dx;
if(dy>0)
polygons[j].ymax+=dy;
else
polygons[j].ymin+=dy;
glutPostRedisplay
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????7278??2013-11-13?19:59??test02.cpp
?????文件??????47616??2013-11-17?17:40??實驗模板.doc
?????文件??????61440??2013-11-17?17:33??實驗二(2).exe
-----------?---------??----------?-----??----
???????????????116334????????????????????3
- 上一篇:中國軟件文檔國家標準
- 下一篇:小程序離職交接文檔
評論
共有 條評論