首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于“补间”的lerp实现

用于“补间”的lerp实现
EN

Stack Overflow用户
提问于 2013-02-13 20:42:50
回答 1查看 19.8K关注 0票数 6

我将这个作为我的lerp函数:

代码语言:javascript
复制
  Vec2f lerp(float t, Vec2f a, Vec2f b){
      return (1-t)*a + t*b;
  }

我有下面的代码,我希望它能产生一个“补间”:

代码语言:javascript
复制
    Vec2f a(0,0);
    Vec2f b(3,4);
    Vec2f c(5,4);
    Vec2f d(5,0);

    if( i < 100 ){
        if(i <= 30){
            ball.pos = lerp(i, a, b);
        }
        else if(i > 30 && i < 80){
            ball.pos = lerp(i, b, c);
        }
        else {
            ball.pos = lerp(i, a, d);
        }
    } i += 1;

但我得到的是一个“不连续的补间”,即不是从从A到B的lerp结束的最后一点开始,而是从其他地方开始,有些开始于其他lerp。我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-13 20:46:34

在插值函数中,t必须介于0和1之间,但您传递的值介于0和100之间。将您的调用更改为lerp(i/100.0f, a, b),等等。(请务必将100.0指定为浮点文字,而不是整数文字!)

正如DarenW正确指出的那样,您必须为每个片段覆盖从0到1的范围,以获得所需的效果,即在您的情况下,lerp(i/30.0f, a, b)lerp((i-30)/50.0f, a, b)等。

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

https://stackoverflow.com/questions/14853845

复制
相关文章

相似问题

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