首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在OpenGL中用固定速度沿Bezier曲线移动物体

在OpenGL中用固定速度沿Bezier曲线移动物体
EN

Stack Overflow用户
提问于 2018-03-15 02:41:26
回答 1查看 1.9K关注 0票数 0

我正在处理一个OpenGL项目,它简单地使用一个2D数组来创建bezier曲线(顺序是起点、->起始控制点、->末端控制点、-> end):

代码语言:javascript
复制
GLfloat controlPointsGirl[numControlPointsGirl][3] = {
    {1.0,0.0,0.0},{1.0,-0.5,0.0},{1.0,0.0,0.0},{-1.0,0.5,0.0}
};  

并使用以下公式(取自boards/showthread.php/136550-Moving-object-along-a-bezier-curve )沿该路径移动字符:

代码语言:javascript
复制
//Drawing, initializing, display refresh every timeInterval seconds, etc.

girlX = ((1 - time)*(1 - time)*(1 - time)*controlPointsGirl[0][0]
    + (3 + time*(1 - time)*(1 - time))* controlPointsGirl[1][0]
    + (3 * time*time*(1 - time))* controlPointsGirl[2][0]
    + time*time*time*controlPointsGirl[3][0])
    /10;

cout << girlX <<" ";

girlY = ((1 - time)*(1 - time)*(1 - time)*controlPointsGirl[0][1]
    + (3 + time*(1 - time)*(1 - time))* controlPointsGirl[1][1]
    + (3 * time*time*(1 - time))* controlPointsGirl[2][1]
    + time*time*time*controlPointsGirl[3][1])
    /10;

cout << girlY << endl;

time += timeInterval;

问题是,这种逻辑导致非常急促的运动,当时钟超过1秒时,运动也会迅速加速。这显然不是理想的,我希望女孩的运动速度是固定的,而且理想的情况下,我也希望能够选择一个速度来进行运动。我已经对这个公式做了很多调整,但是我很难解决这个问题,我该如何修改这段代码以实现我想要的结果呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-15 04:14:28

看看你所提供的公式的链接,你的方程式中有一个错误。第二个术语在应该是3 + time的时候使用3 * time

代码语言:javascript
复制
(3 * time*(1 - time)*(1 - time))* controlPointsGirl[1][0]

在这两个方程中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49290723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档