Я создал карту случайных высот, и теперь я хочу создать реки. Я создал алгоритм, основанный на *, чтобы реки текли от пиков к морю, и теперь я нахожусь в поиске элегантного алгоритма для их рендеринга.
Это 2D, квадрат, карта сетки. Ячейки, которые помещает река, имеют простое целочисленное значение в этой форме: rivernumber && pointOrder. Т.е.: 10, 11, 12, 13, 14, 15, 16 ... 1 + N для первой реки, 20,21,22,23 ... 2 + N для второй и т. Д. Это создается в время генерации сетки карты и выполняется один раз, когда генерируется мир.
Я хотел рассматривать каждую реку как вектор, но есть проблема: если у одной и той же реки есть ветви (потому что я создаю некоторый шум для создания ветвей), я не могу просто соединить точки по порядку.
Второй альтернативой является создание сложного алгоритма, в котором анализируется каждая точка, проверяется, не является ли следующая ветвь, если это так, запускается другой алгоритм, который заботится о ветке, затем возвращается к главной реке и т. Д. Очень сложный и неэлегичный.
Возможно, есть решение в алгоритме генерации мира или в алгоритме рендеринга, которое обычно используется в этих случаях, и я не в курсе.
Какие-нибудь советы? Спасибо!!