绘制一次函数的图像的平移用计算机图形学opengl或者matlab实现

想编程做一个绘制初等函数的图像,并且实现它的平移的东西。用计算机图形学的知识做还是matlab实现??求大神,现在毫无头绪。具体怎么实现?实现起来难吗?加q3861502... 想编程做一个绘制初等函数的图像,并且实现它的平移的东西。用计算机图形学的知识做还是matlab实现??求大神,现在毫无头绪。具体怎么实现?实现起来难吗?加q386150289备注百度问题 展开
 我来答
匿名用户
推荐于2016-11-23
展开全部
代码如下:
#include<windows.h>
#include <GL/glut.h>
#include<GL/glu.h>
#include<GL/gl.h>
#include <stdlib.h>
 
static GLfloat spin = -35.0;
static GLint status = 1;
 
void display(void)
{
   glClear(GL_COLOR_BUFFER_BIT);
   glPushMatrix();
   //glRotatef(spin, 0.0, 0.0, 1.0);
   glTranslatef(spin, 0.0, 0.0);//注意这里的spin为静态的全局变量
   glColor3f(0.5, 0.5, 0.5);
   glRectf(-10.0, -10.0, 10.0, 10.0);
   glPopMatrix();
 
   glutSwapBuffers();//PS:区别于glFlush();
}
 
void spinDisplay(void)
{
    if (spin >= 30)
        status = -1;
    else if(spin<=-35)
        status = 1;
   spin += status*0.05;//这一行代码用来控制移动的速度
   glutPostRedisplay();//使spin不停的变换,有些类似一个循环
}
 
void init(void)
{
   glClearColor (0.0, 0.0, 0.0, 0.0);
   glShadeModel (GL_FLAT);
//本行代码表明了颜色为单颜色方式,就是不适用混合色,后一种颜色覆盖前一种设置。
}
 
void reshape(int w, int h)
{
   glViewport (0, 0, (GLsizei) w, (GLsizei) h);//视口的大小的设置
   glMatrixMode(GL_PROJECTION);
   glLoadIdentity();
   glOrtho(-50.0, 50.0, -50.0, 50.0, -1.0, 1.0);//二维裁剪窗口函数
   glMatrixMode(GL_MODELVIEW);
   glLoadIdentity();
}
 
void mouse(int button, int state, int x, int y)//鼠标的左右键按下时的响应事件
{
   switch (button) {
      case GLUT_LEFT_BUTTON:
         if (state == GLUT_DOWN)
            glutIdleFunc(spinDisplay);
         break;
      case GLUT_MIDDLE_BUTTON:
      case GLUT_RIGHT_BUTTON:
         if (state == GLUT_DOWN)
            glutIdleFunc(NULL);
         break;
      default:
         break;
   }
}
 
 
int main(int argc, char** argv)
{
   glutInit(&argc, argv);
   glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB);
   glutInitWindowSize (400, 400);
   glutInitWindowPosition (100, 100);
   glutCreateWindow ("矩形平移效果");
   init ();
   glutDisplayFunc(display);//调用初始化的图形函数
   glutReshapeFunc(reshape);//调用开始变换的图形函数
   glutMouseFunc(mouse);//调用鼠标的响应函数
   glutMainLoop();
   return 0;   
}
希波鸿0HDeac
2015-03-22 · TA获得超过427个赞
知道小有建树答主
回答量:591
采纳率:68%
帮助的人:166万
展开全部
最好用move函数!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友3c63e6c
2015-03-22 · TA获得超过2848个赞
知道大有可为答主
回答量:3829
采纳率:68%
帮助的人:2772万
展开全部
实现它的平移的东西
这句话是什么意思??
追问
比如y=f(x)和y=f(x-1)。就是平移,怎么编程实现缓慢平移动画。
追答
x=1:100;
b = 'y = sin(x);';
eval(b);
for i=1:100
plot(x+5*i,y);
pause(0.5);
end
比如说,这种??
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式