以类似于正弦波的方式在列表中应用值偏移(缓入和缓出)

Applying a value offset through a list in a way that resembles a sine wave (eases in and out)

首先,抱歉标题太血腥了,我不确定如何更优雅地描述我所追求的。

基本上,我正在尝试创建一个函数,我可以将数字列表传递给该函数,将偏移值传递给该函数,并使该函数 return 具有在 [= 中应用偏移量的列表17=], easing-out 方式, similar to a sine wave.

例如,假设我给这个函数一个 0,0,0,0,0,0,0,0,0,0 和偏移量 10 的列表。我希望它 return 类似 0、2、5、8.5、10、8.5、5、2、0。我该怎么做?

这将完全满足您的要求:

import math

d = [0] * 9
offset = 10

dlen = len(d)
r = [d[i] + offset * math.sin(i * math.pi / (dlen - 1))
     for i in range(dlen)]

print d
print r