怎么通过opengl实现一个二维图形的平移和曲线移动呢?
来源:学生作业帮 编辑:搜搜做题作业网作业帮 分类:综合作业 时间:2024/05/05 04:17:11
怎么通过opengl实现一个二维图形的平移和曲线移动呢?
最好附代码,对于平移glTranslate具体怎么用,我绘制了简单的矩形,但是运用glTranslate之后,矩形并没有移动啊?另外怎么实现物体沿曲线移动呢.重金答复.
#include#include
void display()
{
float i=0.0,x=-1.0,y;
glClear(GL_COLOR_BUFFER_BIT);
glLoadIdentity ();
for(i=0;i
最好附代码,对于平移glTranslate具体怎么用,我绘制了简单的矩形,但是运用glTranslate之后,矩形并没有移动啊?另外怎么实现物体沿曲线移动呢.重金答复.
#include#include
void display()
{
float i=0.0,x=-1.0,y;
glClear(GL_COLOR_BUFFER_BIT);
glLoadIdentity ();
for(i=0;i
应该是你translate使用错误,translate使用时应该在绘制矩形之前.
实现物体曲线移动:做一个随时间刷新的命令响应,隔一个刷新时间更新一下物体的坐标.例如做正弦函数移动:
OnTimer
{
xpos=sin(t);
ypos=cos(t);
zpos=tan(t);
t++
gltranslatef(xpos,ypos,zpos);
gldraw*******();//你要绘制的物体
}
再问: 额,我有点菜,没有太理解,您能给我个小例子程序吗?我又增加了问题补充,麻烦您帮忙看下!
再答: 你这个程序的算法错了,你的display函数中每次都对X进行了初始化为-1,也就是说,每次执行这个函数,物体的位置都没有变化。再有,你为什么要用for循环,虽然你的循环中X有了变化,比如变化了10次,但是,系统进行绘图刷新的时候不会管你这些变化的,他只会读取一个值。 改成这样试试吧 #include#include void display() { glClear(GL_COLOR_BUFFER_BIT); glLoadIdentity (); x=x+0.1;y=0; glTranslatef(x,y,0); glBegin(GL_POLYGON); glVertex2f(-0.2,-0.2); glVertex2f(-0.2,0.2); glVertex2f(0.2,0.2); glVertex2f(0.2,-0.2); glEnd(); glFlush(); Sleep(1000); } int main(int argc,char ** argv){ float i=0.0,x=-1.0,y; glutInit(& argc, argv); glutCreateWindow("traffic control"); glutDisplayFunc(display); glutMainLoop(); return 0; }
实现物体曲线移动:做一个随时间刷新的命令响应,隔一个刷新时间更新一下物体的坐标.例如做正弦函数移动:
OnTimer
{
xpos=sin(t);
ypos=cos(t);
zpos=tan(t);
t++
gltranslatef(xpos,ypos,zpos);
gldraw*******();//你要绘制的物体
}
再问: 额,我有点菜,没有太理解,您能给我个小例子程序吗?我又增加了问题补充,麻烦您帮忙看下!
再答: 你这个程序的算法错了,你的display函数中每次都对X进行了初始化为-1,也就是说,每次执行这个函数,物体的位置都没有变化。再有,你为什么要用for循环,虽然你的循环中X有了变化,比如变化了10次,但是,系统进行绘图刷新的时候不会管你这些变化的,他只会读取一个值。 改成这样试试吧 #include#include void display() { glClear(GL_COLOR_BUFFER_BIT); glLoadIdentity (); x=x+0.1;y=0; glTranslatef(x,y,0); glBegin(GL_POLYGON); glVertex2f(-0.2,-0.2); glVertex2f(-0.2,0.2); glVertex2f(0.2,0.2); glVertex2f(0.2,-0.2); glEnd(); glFlush(); Sleep(1000); } int main(int argc,char ** argv){ float i=0.0,x=-1.0,y; glutInit(& argc, argv); glutCreateWindow("traffic control"); glutDisplayFunc(display); glutMainLoop(); return 0; }
怎么通过opengl实现一个二维图形的平移和曲线移动呢?
openGL中怎么在三维图形函数中画二维线段
英语翻译OpenGL基础与纹理知识摘要:OpenGL被定义为“图形硬件的一种软件接口”.从本质上说,它是一个3D图形和模
一个图形沿着一定的方向平行移动,叫做平移变换,简称平移,它是由( )和()所决定的
图形的平移是由移动的 和 决定的.
哪些图形是通过平移和旋转得到的
一个图沿着某个( )移动一定的( ),图形的这种移动,叫做平移交换,简称平移
利用MATLAB通过矩阵变化实现图像的平移缩放和旋转,要一个程序两者同时进行
Matlab怎么将二维图形转换成三维图形呢?
CAD中使用移动命令移动一个图形时,怎么做到快速的移动这图形到相对某点一定距离上呢?
图形的什么移动叫做图形的平移
想请问你,一个图形怎么把左边的两个夹点移动而右边的不移动呢?