【问题标题】:A name for this primitive operation?这个原始操作的名称?
【发布时间】:2012-02-27 14:55:08
【问题描述】:

我在游戏/图形编程中很多使用这个函数。

float slide(float from, float to, float by) {
    float difference = to - from;
    if(difference > by) {
        return from + by;
    } else if(difference < -by) {
        return from - by;
    } else {
        return to;
    }
}

基本思想是“向某某移动这么多”。

我将其称为slide,因为如果您在某物的位置上的每一帧都调用它,它会显示为以恒定速度向目标位置滑动。

还有其他的命名建议吗?

【问题讨论】:

  • 好像是linear interpolation的一种形式?
  • 我不知道正式名称。我可能会使用“提前”。
  • 它在某种程度上有点像lerp,只是by 表示为“外部”单位而不是差异的一个因素。但它位于我的实用程序库中的 lerp 旁边。
  • lerp,代表“线性插值”

标签: animation graphics terminology


【解决方案1】:

我觉得 slide 还可以,也许 moveTo 或 floatTo 也可以。

还有一个想法。当你像这样使用这个函数时:

Slide(0, 5, 10);

(表示“by”比可能的步长更大)

你会调用它几次,对象会围绕“to”位置摆动。

您应该为它添加一些处理。喜欢:

float slide(float from, float to, float by) {
    float difference = to - from;
    if(difference > by && from + by < to) {
        return from + by;
    } else if(difference < -by && from - by > to) {
        return from - by;
    } else {
        return to;
    }
}

希望这会有所帮助。

【讨论】:

  • 嗨,谢谢,但函数已经按照书面形式处理了这种情况:)
猜你喜欢
  • 2021-05-31
  • 1970-01-01
  • 2014-03-23
  • 2023-03-21
  • 2020-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-13
相关资源
最近更新 更多