Применение значения смещения через список таким образом, который напоминает синусоидальную волну (облегчает вход и выход)

Прежде всего, извините за заголовок, я не уверен, как описать то, что мне нужно, более элегантно.

По сути, я пытаюсь создать функцию, в которую я могу передать список чисел, значение смещения, и заставить эту функцию возвращать этот список со смещением, применяемым в порядке замедления, аналогично синусоида.

Так, например, скажем, я даю этой функции список 0,0,0,0,0,0,0,0,0,0 и смещение 10. Я бы хотел, чтобы она возвращала что-то вроде 0, 2, 5, 8,5, 10, 8,5, 5, 2, 0. Как мне это сделать?

1 ответ

Решение

Это будет делать именно то, что вы просили:

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
Другие вопросы по тегам