Алгоритм генерации ландшафта Midpoint Displacement

Midpoint displacement - алгоритм построения ландшафта, работающий на одномерном отрезке (поэтому с его помощью можно, например, создать линию горизонта).
То, что роднит этот алгоритм с фракталами — это его рекурсивное поведение. Изначально мы любым образом задаем высоту на концах отрезка и разбиваем его точкой посередине на два под-отрезка. Эту точку мы смещаем на случайную величину и повторяем разбиение и смещение для каждого из полученных под-отрезков. И так далее — пока отрезки не станут длиной в один пиксель. Вот и весь алгоритм. Важное замечание - случайные смещения должны быть пропорциональны длинам отрезков, на которых производится разбиения. Например, мы разбиваем отрезок длиной l — тогда точка посередине него должна иметь высоту
$$h = (h_L + h_R) / 2 + random(- R * l, R * l)$$(hL и hR — высоты на левом и правом конце отрезка, а константа R определяет «шероховатость» получающейся ломаной и является главным параметром в данном алгоритме).

Направление: