Это далеко не полный ответ, но на мой взгляд кажется, что он может помочь вам:
Вместо того, чтобы рисовать кривые от начала до конца всей линии, рассмотрите возможность разделения вашей доски наравномерно распределенная сетка.Каждый квадрат одного столбца сетки имеет право иметь одну точку одной кривой, и вы будете неуклонно продвигаться слева направо (сначала - для простоты.).
Произойдет случайностьв игру, выбрав квадрат для кривой - чтобы она не становилась слишком хаотичной, вы можете задать границы случайности, скажем, «вам нельзя выбирать квадрат, который (если расстояние от квадрата до квадрата считается 1
) нарушает abs(current vertical position - new vertical position) <= 5
, если ни один из них больше не свободен на этом этапе "или какое-либо другое произвольное ограничение.(«если на данный момент больше ничего такого не свободно» важно, в противном случае возможно заблокировать себя в неразрешимом состоянии.)
(Извините, рисование кривых с помощью моей мыши-> худшая / никакой интерполяции никогда. Интерполяция Кэтмалла-Рома, вероятно, будет здесь вашим другом, хотя, я думаю.)
Дисплей должен быть достаточно свободным, учитывая, что ваши точки кривой не могут произвольноразбросать вместе по сетке, но, вероятно, очень трудно заставить кривую соединяться с конечной точкой «плавно» - может быть хорошим решением, если вы не возражаете против произвольных конечных точек, хотя, читайте как, алгоритм может решить длясама, где она хочет, чтобы линия закончилась.
Думаешь, эта идея поможет тебе с твоими кривыми?