作业帮 > 综合 > 作业

怎么通过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
怎么通过opengl实现一个二维图形的平移和曲线移动呢?
应该是你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; }