怎么通过opengl实现一个二维图形的平移和曲线移动呢?

请大神们解释清楚下,最好附代码,对于平移glTranslate具体怎么用,我绘制了简单的矩形,但是运用glTranslate之后,矩形并没有移动啊?求解!另外怎么实现物体... 请大神们解释清楚下,最好附代码,对于平移glTranslate具体怎么用,我绘制了简单的矩形,但是运用glTranslate之后,矩形并没有移动啊?求解!另外怎么实现物体沿曲线移动呢。跪求解答,重金答复。
#include<gl/glut.h>#include<windows.h>
void display()
{
float i=0.0,x=-1.0,y;
glClear(GL_COLOR_BUFFER_BIT);
glLoadIdentity ();
for(i=0;i<10;i++)
{
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){
glutInit(& argc, argv);
glutCreateWindow("traffic control");
glutDisplayFunc(display);

glutMainLoop(); return 0;
}
如上,矩形移到了左边,但是我想要的是移动过程的动画效果,求解??
展开
 我来答
HapDayannig
2013-03-15 · 超过31用户采纳过TA的回答
知道答主
回答量:140
采纳率:0%
帮助的人:94.4万
展开全部
应该是你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;
}
上海华然企业咨询
2024-10-21 广告
上海华然企业咨询有限公司专注于AI与数据合规咨询服务。我们的核心团队来自头部互联网企业、红圈律所和专业安全服务机构。凭借深刻的AI产品理解、上百个AI产品的合规咨询和算法备案经验,为客户提供专业的算法备案、AI安全评估、数据出境等合规服务,... 点击进入详情页
本回答由上海华然企业咨询提供
sabangke
2013-03-15 · TA获得超过6171个赞
知道大有可为答主
回答量:8097
采纳率:0%
帮助的人:1198万
展开全部
如果您使用错误翻译翻译使用之前绘制一个矩形。
移动对象曲线:随着时间的推移,刷新命令响应的时间间隔更新的对象的坐标的刷新时间。例如,正弦函数手机:
的OnTimer
{
XPOS = SIN(T);
ypos = COS(T);
zpos =棕褐色(T);
T + +
的glTranslatef(XPOS,ypos,zpos),
gldraw *******();/ /你想要的对象画
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式