Подтвердить что ты не робот

Как оживить линию так же, как волнообразный эффект, который показывает Сири?

Я хотел бы создать эту звуковую/синюю волну, которая выглядит как динамическая звуковая волна Siri в iOS 7:

1

2

34

Я знаю, как создавать и анимировать форму UIBezierCurve sin, и я много искал, но я не нашел и не знаю, как добиться этого эффекта.

Линия начинается плоской, чем волны и заканчивается плоской. Я не завязываю звуковой файл (ы), просто эффект случайной размахивания будет достаточным.

4b9b3361

Ответ 2

Я думаю, что было бы очень сложно сделать это с помощью одной кривой Безье, вероятно, лучше использовать кривую NURBS или B-сплайна.

Для примера изображений, которые вы показываете, вы можете сделать это с помощью 7 контрольных точек на кубике.
Вероятно, однородная кубическая, с зажатыми/безьевыми концами. Другими словами, вектор узла будет (0, 0, 0, 1, 2, 3, 4, 4, 4).

Чтобы описать позиции контрольной точки, мы будем называть их P0..P6.

P0 и P6 будут конечными точками кривой.

P2..P4 будет равномерно распределен в X между P0 и P6. То есть P2 будет 1/4 пути, P2 будет 2/4 пути, а P3 будет 3/4 пути между P0 и P6 в размерности X.

P1 будет удерживать кривую, идущую прямо из стороны. Значение P1 Y всегда должно совпадать с значением P0 Y. Значение P1 X должно составлять 1/3 пути между P0 и P2.

P5 аналогичен P1, то же значение Y, что и P6, а значение X равно 1/3 пути между P6 и P5.

Затем просто анимируйте значения Y P2..P4, и вы получите бодрую линию, которая прямо на концах.

Я не уверен, есть ли у iOS версия NURBS или B-сплайна, доступная для использования. Если нет ни одного доступного, хорошей новостью является то, что кривые NURBS можно разбить на кривые Безье. Для простого примера, подобного этому, возможно преобразование жесткого кода из NURBS в Bezier без реализации полной библиотеки.