На самом деле, это достаточно просто. Основной приём — «откладывание» применения функций при помощи (abs(x — K) + x — K) * (ваша функция), где K — сдвиг по x относительно оси ординат. В случае на вашей картинке, есть 3 функции, 2 из которых — прямые, а третья — синусоида с большим коэффициентом при аргументе и умноженная на x + доп. коэффициент.
М-м, стоит объяснять подробнее? :)
verticalShift/(1+100^(-20(x-yStepCoord))) где verticalShift вертикальное смещение от текущей координаты и yStepCoord — y координата где это произойдёт. Соответственно собирая сумму таких функций можно очень точно стрелять огибая препятствия
Артиллерийская стрельба математическими функциями