永发信息网

用OpenGL绘制小球,按给定的坐标点沿直线运动。实现问题。

答案:2  悬赏:80  手机版
解决时间 2021-03-28 12:48
用OpenGL绘制小球,按给定的坐标点沿直线运动。实现问题。
最佳答案
#include 
#include 

void myinit(void)
{
  glClearColor(0.0, 0.0, 0.0, 0.0);
  glDepthFunc(GL_LESS);
  glEnable(GL_DEPTH_TEST);
  glShadeModel(GL_FLAT);
  glDepthRange(0.0, 1.0);  
}



GLfloat tx = 0.0f, ty = 0.0f, tz = 0.0f;

void drawsphere(GLenum mode)
{
glPushMatrix();
glTranslatef( tx, ty, tz-90.0f);
glutWireSphere(1.0,10,10);
glPopMatrix();
}

void idle(void)
{
if( tx < 20.0f )
tx += 0.2f;
else if( ty < 20.0f )
ty += 0.2f;
else if ( tx < 40.0f && ty < 40.0f )
{
tx += 0.2f;
ty += 0.2f;
}
else
{
tx = ty = 0.0f;
}
glutPostRedisplay();

}

void display(void)
{
  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  glColor3f(0.0f,1.0f,1.0f);
  glPushMatrix();
  glBegin(GL_LINES);
  glVertex3f( -50.0f,0.0f,-80.0f);
  glVertex3f( 50.0f, 0.0f, -80.0f);

  glVertex3f(0.0f, -50.0f,-80.0f);
  glVertex3f(0.0f,50.0f, -80.0f);
  glEnd();
  glPopMatrix();
  drawsphere(GL_RENDER);
  glutSwapBuffers();
}

void myReshape(int w, int h)
{
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45.0, (GLfloat) 1.0, 1.0, 100.0);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef (-3.0, -3.0, -8.0);
}

static void
key(unsigned char k, int x, int y)
{
  switch (k) {
  case 27:  
    exit(0);
    break;

  default:
    return;
  }
  glutPostRedisplay();
}


int
main(int argc, char **argv)
{
  glutInitWindowSize(200, 200);
  glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
  glutInit(&argc, argv);
  glutCreateWindow(argv[0]);
  myinit();

  glutReshapeFunc(myReshape);
  glutDisplayFunc(display);
  glutIdleFunc(idle);
  glutKeyboardFunc(key);
  glutMainLoop();
  return 0;             
}追问谢谢,这是一种思路了。如果我的轨迹点很多,怎么用循环写呢?追答你说的问题不是重复绘制吗,关键是每一帧获得新的位置,而不要把绘制放到循环里。就算你一下子算出所有的位置,也是每一帧取下一个位置用。
全部回答
斯蒂芬各地方感到十分敢死队风格
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
单选题下列营养成分中谷氨酸发酵要添加的是A.
2003年马自达6排量2.3的现在值多少钱
朝阳大酒店-棋牌室我想知道这个在什么地方
G高达 trust you forever这首歌的中文歌词
按雨前雨时雨小雨停听雨的的声音
SIFT算法提取特征点,怎样得到正确的特征点空
钱:符号怎样在键盘上打出来?
面油炸可以做什么美食
352是4的多少倍?
乐滋烧烤地址在哪,我要去那里办事
0·649÷9的竖式是什么
南方如何预防白蚁
彼此曾相与不问天有涯什么意思
05年百元人民币尾号100 200 300....有没有收
这题有简便运算吗
推荐资讯
乐理试题。
男孩名字前面陈奕最后一个字叫什么好
韵读成语齐韵篇的答案
土豆非会员什么时候可以看冰上的尤里最新一集
GTA5隐藏了多少东西
急求南京伊刘屯车管所电话号码
零购网是骗人网站我于5月20号买了一件T恤,结
去一个小的电力工程公司做电力造价好,还是去
求助:本人在广州,现在我在网上订了起发站为
福州大学有哪些学院
玩cf用physx好还是CPU好
已知(X平方十6X十8)(X平方十8x十15)十a是一个
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?