Как смоделировать путь реки?

В «Создание реалистичной карты мира — Водные пути » я спрашивал о том, какие именно процессы влияют на течение и извилистость рек. Имея в виду некоторые из этих знаний, мне любопытно, как создатель мира (например, я сам!) мог создать реку на карте, особенно в равнинных областях. Как и в случае с береговыми линиями , в которых, я думаю, я стал лучше, мой текущий метод состоит в том, чтобы рисовать маленькие волнистые кривые на основе любой существующей топологии, которую я вычислил. Но это все еще раздражает. Есть ли лучший способ, который обычно имитирует это?

Некоторые вещи, которые я ищу:

  • Вычислительная эффективность
  • Никаких крайне нереалистичных особенностей (например, река, постоянно петляющая и пересекающая сама себя)
  • Некоторое подобие контроля над конечным продуктом

Я подробно рассказал об алгоритме фрактала в своем ответе ниже. Ответы не должны вдаваться в такие подробности или даже показывать готовый продукт. Простое описание алгоритма подойдет.

Составьте карту плотности и твердости местности. Вода пойдет по пути наименьшего сопротивления, так что она должна вести в направлении ваших рек.
@Mormacil Я мог бы это сделать, но тогда возникает вопрос, как бы я сгенерировал такую ​​карту. Даже если у меня уже есть контурная карта, я не всегда могу легко определить плотность почвы.
Климат, ледниковые периоды и т. д. — определяемые факторы, влияющие на состав почвы. Кроме того, если вы уже определили типы растений, они указывают на конкретные типы почвы. Вы могли бы использовать такие данные?
Состав почвы имеет значение, только если вы пытаетесь смоделировать эрозию. Если вы не пытаетесь выяснить, как меняется течение реки с течением времени, то единственное, что вам действительно нужно знать, это то, что вода течет в направлении градиента. Реки будут там, где общий сток на единицу площади больше, чем ваш порог для того, чтобы назвать что-то рекой.
Вы можете найти некоторые идеи на странице gamedev.stackexchange.com.
Спрашивая на softwarerecs.stackexchange.com , я думаю, что это водяное колесо, которое не нужно изобретать заново.
Нет времени на правильный ответ, но законы Хортона описывают (математически точно), как выглядят правильные речные системы.
Вы могли бы посмотреть на L-системы.
Добавляю ссылку на другую работу по генерации ландшафта/рек: worldbuilding.stackexchange.com/a/51235/7197
это на earthscionece может быть полезно earthscience.stackexchange.com/questions/4684/…

Ответы (11)

Я не могу вам сильно помочь с кодированием, но я могу помочь с тем, что искать, чтобы сказать, правильно ли вы все поняли.

Просто высота позаботится о многом, как только вы узнаете, где находятся бассейны, вы узнаете направление и размер своих речных систем. Это означает, что вам нужно построить свои горы перед реками. давайте посмотрим на карту речных бассейнов в США.

теперь сравните это с размещением горного хребта.

обратите внимание, что внешний край каждого бассейна определяется либо береговой линией, где река впадает в океан, либо горами/возвышенностями. Обратите внимание, что по мере того, как вы углубляетесь в сушу, количество бассейнов резко уменьшается, в то время как вдоль побережья есть много маленьких бассейнов (и, следовательно, небольших рек). Вы можете сделать грубый график речной системы, просто наметив, как добраться из любой точки до побережья, не пересекая возвышенность. Вода идет по пути наименьшего сопротивления и обычно идет от гор к океану. Затем вам нужно добавить некоторые эффекты рандомизации, чтобы учесть локальную вариацию, которую вы не моделируете. Кто-то еще должен будет помочь вам в том, как добавить такую ​​большую или меньшую вариацию.

кроме того, насколько река блуждает взад и вперед, зависит от уклона реки, более крутая, быстрая вода пересекает более прямую линию (хотя и не прямую), в то время как пологие (и, следовательно, медленно движущиеся) воды извиваются, если земля плоская. достаточно, это блуждание может стать очень экстремальным. .

Полностью изолированные бассейны, не имеющие выхода к морю, встречаются редко и встречаются только при наличии полного кольца гор. Они питаются изолированными озерами, которые становятся гиперсолеными (солеными). Соленое озеро в штате Юта — отличный пример. Обычные озера создаются локальными понижениями, которые наполняются и переполняются, образуя выход. У подавляющего большинства озер есть выход, то есть выходящая река.

Небольшие реки часто образуют дельты, когда достигают моря, они настолько плоские, настолько медленно движутся, что сбрасывают наносы, блокируя себя, создавая узор ветвления. в конечном итоге они выглядят как веера или густые деревья, уходящие в океан.

Реки не извиваются, потому что уклон низкий. Реки похожи на изображенный меандр, потому что со временем их текущие пути заполняются илом, а затем они перетекают в новый путь.
Важная часть горных хребтов заключается в том, что в первом приближении горные рейнджеры определяют сток реки, а не наоборот. (Эрозия в конце концов стачивает горы, следовательно, в первом приближении) Тектоника -> оледенение и геология -> поток воды
@Shufflepants Это правильно, но уклон влияет на это, потому что он влияет на скорость потока, которая, в свою очередь, определяет способность выдерживать ил. Таким образом, реки с очень крутым уклоном будут более прямыми, чем реки, протекающие по равнинным участкам.
Одно замечание: не имеющие выхода к морю (эндорейские) бассейны на самом деле не так уж и редки: большая часть Центральной Азии и большие участки Северной Африки, Австралии и западной части Северной Америки не имеют выхода к морю: en.wikipedia.org/wiki/File:Ocean_drainage.png
Я вижу много ссылок "введите описание изображения здесь" в этом ответе...
Я использую для просмотра изображений. Теперь они ушли.
@ShadoCat Я понятия не имею, почему вы не видите изображения.
@Джон, и они вернулись. Хм. Я предполагаю, что это глюк, который Молот и я оба видели.
Первое изображение очень похоже на паттерны, созданные Diffusion Limited Aggregation. Возможно, вы могли бы использовать это, чтобы построить речные сети?
На этом изображении горного хребта изображены горы во Флориде?
он больше похож на аллигатора.
@Yakk: Хотя есть по крайней мере один пример крупной реки, протекающей через горный хребет - Колумбия через Каскады.
@jamesqf en.wikipedia.org/wiki/Columbia_River_Gorge -- ледники очень помогли :)
@james, хотя имейте в виду, что река не столько прорезала горы, сколько нашла брешь, оставленную серией наводнений древних ледяных плотин.

Я сам отвечаю на свой вопрос, но, пожалуйста, не позволяйте этому сдерживать любые другие ответы! Мне определенно любопытно узнать, есть ли какие-либо другие распространенные методы.

Используйте фракталы !

В предыдущем вопросе о береговых линиях Сэмюэл ответил , что методы фрактального ландшафта могут очень хорошо работать для имитации береговых линий. Степень самоподобия часто поражает. Я реализовал алгоритм для этого, и он дал очень хорошие результаты. Также оказывается, что реки тоже демонстрируют фракталоподобные узоры, и на относительно плоских участках их можно моделировать — фракталами! Моделирование фрактальной реки на самом деле является очень эффективным методом и часто используется.

Первым шагом для создания такой реки является определение местности. Если вы хотите, вы можете использовать фрактальные методы , например, алгоритм ромбовидного квадрата . Вы также можете выяснить это с помощью различных других методов; Я использовал случайные методы, которые начинаются с круглой области, затем случайным образом увеличиваются и уменьшаются возвышения при движении внутрь - взвешенные, конечно, с тенденцией идти вверх, а не вниз. После этого вы можете добавить еще больше деталей, смоделировав закономерности эрозии с помощью, например, клеточных автоматов ; Джаспер Макчесни написал потрясающий пост в блоге Worldbuilding.об этом. Даже не используя алгоритм Джаспера, я уже нашел некоторые результаты, которые мне нравятся. Вот несколько примеров (они показаны в виде контурных карт; зеленый, желтый, оранжевый и красный — над уровнем моря):

введите описание изображения здесь

введите описание изображения здесь

Я упоминаю их в особенности потому, что у них есть интересные особенности: долины и резкие нисходящие уклоны, а также участки равнины, спускающиеся к морю. Долины означают, что я могу понять, куда может течь река. В местах, где есть четкий спуск, легко определить путь реки. Тем не менее, некоторые из долин все еще широкие, и все они в конечном итоге заканчиваются, приводя к плоским участкам, где нет четкого пути для рек. Как же тогда я могу смоделировать, куда пойдут реки? Один из ответов, конечно, фракталы.

Вот версия (обычно используемого) метода, который я использовал для береговых линий, адаптированный и модифицированный для рек:

  1. Выберите две точки, места, где вы хотите, чтобы эта часть реки начиналась и заканчивалась. Позвони им п 1 ( Икс 1 , у б ) а также п 2 ( Икс 2 , у б ) , и положить их в множество точек, п . Я даю им то же самое у -значения, для простоты; вы можете повернуть карту под любым углом, который вы выберете, и мы могли бы также держать все горизонтально. Давайте также установим у б знак равно 0 .
  2. Нарисуйте отрезок между двумя точками. Разделите его на Н подынтервалы, каждый длиной
    л знак равно | Икс 2 Икс 1 | Н
  3. В центре каждого интервала выберите случайную длину г между л а 1 Дж + 1 а также л а 1 Дж + 1 , куда а некоторая постоянная и Дж это номер итерации. Мы начинаем с Дж знак равно 0 при запуске этого в первый раз.
  4. Добавьте еще одну точку с Икс - координата в центре интервала и у -координатное существо г .
  5. Добавьте все новые точки в п , изменение порядка п с точки зрения того, как они связаны друг с другом.
  6. Повторите шаги 3-5 необходимое количество раз.
  7. Если вы хотите, вы можете использовать какой-нибудь сплайн, чтобы сделать красивую гладкую кривую, охватывающую все точки.

Теперь у вас есть отрезок реки! Просто вставьте его на свою карту между нужными точками и смотрите, как развивается мир. Сделайте это для любого количества сегментов и рек, но будьте осторожны, чтобы делать это в основном на равнинных участках, где топография не будет иметь большого влияния.

Лучшие результаты, которые я получил, на самом деле для Н знак равно 1 а также а знак равно 10 , в течение четырех итераций. Есть, конечно, некоторые неудачи — например, случаи, когда река пересекает саму себя, — но есть и некоторые жемчужины, когда вы получаете правильные, повторяющиеся меандры, как настоящая река:

введите описание изображения здесь

введите описание изображения здесь

(Код, использованный для их создания, теперь находится на GitHub .)

Обратите внимание, что вертикальная шкала увеличена для эффекта. Качели на самом деле не такие дикие, как кажутся; на самом деле они намного меньше, и река не сильно отклоняется от прямой линии — этого достаточно, чтобы получить реалистичные извилины.

Я знаю, о чем сейчас думают некоторые люди. «Но HDE, не могли бы вы просто использовать случайное блуждание?» Ну да, вы можете использовать метод случайных блужданий по Гауссу . Это довольно просто, и на самом деле может быть проще в вычислительном отношении. Чтобы сделать это реалистичным, все, что вам нужно сделать, это случайным образом изменить размер шага. Однако в этом случае у меня есть пара проблем с использованием случайного блуждания:

  • Нет никакой гарантии, что вы достигнете желаемой конечной точки, что является проблемой. Я полагаю, вы могли бы запустить случайные обходы с обеих конечных точек одновременно и посмотреть, где они совпадают, но это может занять довольно много времени. Они могут никогда не встретиться.
  • Прогулке не очень трудно пройти через себя. Если вы реализуете алгоритм средней точки фрактала, правда, у вас будут некоторые случаи, когда река пересекает саму себя, и это может немного раздражать. Тем не менее, у большинства запусков не будет такой проблемы. Чего нельзя сказать о методе случайных блужданий.

Вот почему фракталы гораздо лучше подходят для моделирования рек, создания береговой линии и генерации ландшафта, чем случайные блуждания. У вас больше контроля, и в то же время вы гарантируете, что на течении реки будет много здоровых вариаций.

Вот еще одна мысль. Возможно, вы не хотите, чтобы ваша река текла идеально прямо. Вы уже сгенерировали свой ландшафт и определили общий путь реки в соответствии с высотой. В этот момент может показаться, что фрактальный метод бесполезен. Это не так. Все, что вам нужно сделать, это адаптировать алгоритм к прямой линии, заменив л с длиной дуги вдоль кривой от точки п я к п я + 1 , и наклон линии, перпендикулярной (и проходящей через) средней точке каждого (теперь изогнутого) сегмента с линией, нормальной к кривой (т.е. перпендикулярной) в этой точке. Остальное просто; на самом деле, после каждого шага вы можете переделывать сплайн, каждый раз создавая новую кривую с большей детализацией. В качестве альтернативы вы можете дождаться конца и сделать что-то похожее на то, что мы делали раньше, по сути, просто используя начальный путь в качестве основы только для первой итерации. Я не пробовал ничего из этого сам, но это многообещающий метод.

Здесь нужно учитывать пару вещей:

  • Вам понадобится параметрическое описание исходной кривой, т.е. запись кривой С ( т ) знак равно ( Икс ( т ) , у ( т ) ) как функция т .
  • Вам также необходимо знать определенные значения, через которые проходит кривая.
  • Вам нужно будет рассчитать длину дуги, если вы хотите выяснить точную середину каждого сегмента. Это не должно быть слишком сложным численно.

Вы можете - если очень хотите - просмотреть эти шаги, но я бы предпочел вычислить их.

Вот тот случай, о котором я говорю, со всеми параметрами и кривыми, оцененными вручную (ну, в Paint). Река на западе — это просто модифицированная прямая линия с одной итерацией исходного алгоритма. Река на востоке использует первоначально изогнутый путь, продиктованный рельефом местности, со вторичным изгибом:

введите описание изображения здесь

Я должен добавить одно заключительное замечание, потому что некоторые люди, читающие это, могут быть сбиты с толку. Фракталы и самоподобие также часто применяются к рекам, но с точки зрения образования притоков, т. е. того, как река ответвляется. Это две разные вещи, и их абсолютно не следует путать. Я извинился, если кого-то озадачил этим; совпадение не идеальное.

Я думал, что фракталы нужны только для того, чтобы выглядеть круто.
Я должен признать, что я читал здесь большую часть математики (вообще не моя сильная сторона). Что-то, что довольно важно в эволюции рек, — это геология, или, точнее, насколько мягка почва и насколько легко она размывается. Периодические приливы и отливы обнажат слабые места и воспользуются ими, так развиваются старицы и озера.
@NoahCristino Ну, они тоже работают на это. Но они имеют множество применений, потому что многие явления демонстрируют фрактальное поведение. Вы можете моделировать броуновское движение, природные закономерности (реки, кровеносные сосуды), папоротники, ферменты и многое другое. Удивительно, что они могут сделать.
@ HDE226868 Круто! Я собираюсь провести еще несколько исследований по этому поводу.
@ Пит, я, по общему признанию, проигнорировал большую часть этого. Я как бы предположил, что земля на пути реки была однородной, с очень небольшими вариациями. Очевидно, что это нереально, но эти эффекты можно компенсировать, добавив их после использования алгоритма.
@ HDE226868 HDE226868 Проект, над которым я работаю, включает в себя генерацию планетарного масштаба, и, если коротко, фрактальные реки распадаются в относительно небольших масштабах (то есть, как упоминалось в вашем ответе, за пределами относительно плоской местности). Примерно за 5 лет экспериментов мы обнаружили, что крайне важно, чтобы ландшафт имел больше дисперсии, чем шум, который может обеспечить реалистичная гидрология планетарного масштаба. По сути, наилучшие результаты получаются от «подсказанного» гибрида — мы рисуем карту тегов, на которой в общих чертах указано, где находятся характерные зоны, а затем движок «засевает» реки.
Подводя итоги: розовые очертания гор, оранжевые - вулканические, желтые - пустыни, синие - ледниковые зоны, белое облачное наложение - тектоническое давление; красные стрелки указывают направление движения тектонических плит и используются проектировщиком для точного определения местоположения других зон; Континентальный шельф и границы плит также присутствуют. Погодная система предоставляет карту среднего количества осадков. Границы бассейнов вычисляются, и на графических процессорах выполняется грубое моделирование гидрологии. Короче говоря, со всей этой дополнительной информацией становится намного проще вычислять реки по всей планете (никаких фракталов!)
(например, тектоническое давление; считается, что тектоническое поднятие привело к тому, что большой каньон стал таким большим, как он есть, поэтому движок, имеющий доступ к относительно точной информации о поднятии, помогает размещать крупные гидротехнические объекты, что, в свою очередь, обеспечивает гораздо более точное моделирование).
@LukeBriggs В настоящее время я все это перевариваю (и если вы хотите сделать это ответом, это было бы здорово). Это действительно круто; что за красные точки?
@ HDE226868 HDE226868 Это вулканические горячие точки - они направляют формирование цепочек островов, что также увеличивает вероятность появления особенностей типа «гигантской дамбы»; Я подумал о том, чтобы добавить его в качестве ответа, но мне показалось, что он не дает прямого ответа на вопрос (т. Е. Великие реки начинаются с отличной местности и множества географических метаданных! Например, на систему погоды также влияют большие городские районы) - техническая сторона заключается в том, что эти карты с тегами являются PSD, и каждый тип объектов находится на своем собственном слое; создание из него полной планеты занимает примерно 4 часа или около того.
Я так и сделал в свое время. Ламберт даже заштриховал 3D-рендеринг ландшафта, используя код, написанный с нуля в 16-битную эпоху.

Для кодирования вы можете просто использовать Perlin Noise . Просто поищите, если не знаете, что это такое. Он также предлагает почти полный контроль над вашим конечным продуктом.

введите описание изображения здесь

Здравствуйте и добро пожаловать в WorldBuilding. Было бы неплохо, если бы вы могли предоставить ссылку на хороший источник для читателей, интересующихся этой темой. Объяснив основную концепцию, вы также можете немного расширить свой ответ. Сейчас немного коротко. Если у вас есть вопросы о сайте, пожалуйста, ознакомьтесь с обзором и посетите справочный центр. Веселиться!

Хорошо, я не разбираюсь в коде, но я работал над несколькими проектами дорог и велосипедных дорожек, которые включали координацию с гидравлическим анализом. Однако они были на локальном уровне, поэтому я попытаюсь расширить их для вашего мира.

Из контурной карты, поскольку мы не знаем состояние вашей почвы (не нужно, если мы просто делаем снимок).

Информация, которую вы хотите знать ("исходные данные"? Я ничего не знаю о компьютерном моделировании). Это переменные, которые наши водники будут использовать в своих моделях, и если вы знаете о вычислениях больше, чем я - я уже знаю, что вы делаете HDE - тогда, возможно это соображения, которые вы тоже хотите использовать.

  • Распределение потока - по-видимому, существуют алгоритмы для моделирования этого, но как бы я сделал это вручную или с помощью менее сложной практики, используя вашу глубину (ниже) и ширину, которые вы можете разложить.

введите описание изображения здесь

  • Распределение скоростей - см. выше. На это также влияет объем и картография. Если вы знаете, как объединить два типа распределения, вы начнете видеть двухмерную карту реки.

  • Высота поверхности воды! - самое главное, так как вода стекает вниз. Это повлияет на раздачу.

  • Величина скорости - должно быть понятно.

  • Направление скорости - должно быть понятно.

  • Глубина потока . Глубина важна при расчете объема, который вы можете получить за один раз. Вы можете использовать многочлен, чтобы получить поперечное сечение желаемой реки, а затем умножить его вдоль реки: каким-то образом компьютер может сделать это быстро для сложной реки.

введите описание изображения здесь

  • Напряжение сдвига — это было для мостов, поэтому я не думаю, что вам нужно моделировать это, чтобы сделать карту, если только вы не становитесь действительно интенсивными на особенностях земли, с которыми сталкиваются ваши реки; например, если у вас есть очень твердая магматическая порода, скорее всего, река отклоняется вокруг нее или над ней, как водопад; это встречается в районах с тектонической активностью.

Итак, у вас есть ваша контурная карта, теперь сделайте свою компьютерную магию с первым вводом, являющимся объемом. Дождевая вода в горах, артезианские колодцы из водоносных горизонтов и, не забывайте, человеческие сточные воды (это действительно важно) берут начало в верховьях, а затем приведенные выше переменные, смоделированные на основе вашей контурной карты, будут определять общий маршрут рек. . Это всего лишь снимок во времени, как отметил @shufflepants.

Ваши реки заканчиваются дельтой на плоских осадочных участках или ущельем прямо в океан в районах с крутыми и глубокими реками.

Типы рек подробно объясняются в принятом ответе на ваш вопрос « Реалистичная карта мира — водные пути» .

введите описание изображения здесь

Это оставляет меня в конце того небольшого опыта и знаний, которые у меня есть. Следующий шаг — сложная часть.

была статья, написанная около 40 или 45 лет назад в Scientific American о кривых, генерируемых грехом. это процесс, который используют реки, обломки поездов и кровеносные сосуды, чтобы разрушиться, равномерно распределяя энергию по всему процессу. вот почему меандр реки может выглядеть как кровеносные сосуды. Я только что обнаружил, что статья имеет в виду: ers. Научный американец, 214, 60-70. http://dx.doi.org/10.1038/scientificamerican0666-60

Я думаю, что это в точку для вас. есть и другие хорошие статьи на тему кривых, порожденных грехом.

Здравствуйте и добро пожаловать на WorldBuilding.SE! Интересное дополнение к существующим ответам. Можете ли вы найти и дать ссылку на источник, на который вы ссылаетесь?

Что я обычно делаю, практикуя свои навыки создания фэнтезийных карт, так это рисую слои высот, а затем использую фильтр, чтобы создать впечатление, что земля не плоская, прежде чем рисовать реку, используя путь наименьшего сопротивления от ее поверхности. происхождение к морю.

Фрагмент одной из моих карт: Фрагмент картыне уверен, что вы видите разницу в высоте, так как цвет затрудняет определение, но я надеюсь, что вы поняли суть.

Чтобы расширить то, что сказал Джон (кстати, я люблю речную карту), на самом деле очень мало плоской. Любая равнина, которая не превращается в озеро, имеет склон, и вода течет по этой равнине до самой низкой точки. На равнине обычно есть высокие и низкие места (от менее метра до 10 метров), и реки, как правило, следуют за ними. Итак, уклон, рельеф и «ухабистость» будут определять форму реки.

Если местность плоская, а склон низкий, вы, как правило, получаете более «извилистые» реки. На первом фото в посте Джона сила воды преодолевает рельеф местности. Поскольку вода на внешней стороне кривой течет быстрее, чем вода на внутренней стороне, река размывает внешний берег быстрее, чем внутренний. Это заставляет петли расширяться наружу с течением времени. Тогда они могут быть зажаты водой, находящей более прямой путь, и вы получите эти «дуговые озера» вокруг реки.

Если вы пишете алгоритм, я бы предположил, что броуновское движение зависит от наклона и неровностей местности. Если вода окажется где-то без выхода, сделайте озеро, поднимите уровень воды до самого нижнего выхода и начните новую реку. Используя этот метод, вода в конечном итоге достигнет уровня моря. Однако, если учесть испарение, вода может никогда не достичь моря в засушливых районах.

Подходящий ответ на День Пи. Когда река течет, она петляет по ландшафту, очерчивая извилистый путь. Если вы возьмете длину реки и разделите ее прямым путем от начала до конца реки, вы получите «извилистость» реки. Это мера того, насколько изогнута река. Любая данная река может иметь различный изгиб, однако вы можете продемонстрировать, что средняя извилистость всех рек в мире должна быть... Пи. Серьезно. Посмотрите это потрясающее видео от Numberphile, чтобы узнать больше . Любопытно, что это результат того, как реки образуют старицы, выпрямляясь при этом. На практике вы не найдете извилистость больше 3,5 и не ниже 2,7.

Помните, что пи — это ожидаемое среднее значение всех рек, и это при идеальных условиях. Топография реального мира заставит это измениться, но это служит хорошим приближением того, насколько прямой или изогнутой должна быть данная река.

ИМХО, ни один из ваших графиков не выглядит правдоподобным.

С одной (очевидной) стороны их длина ничтожна. Уровень моря — это произвольный артефакт глобальной температуры и доступной поверхностной воды. Континенты, с другой стороны, являются результатом (по крайней мере, на этой планете) создания, столкновения и субдукции тектонических плит. Речная система - это то, что истощает водоносный горизонт. Если бы область была создана плоской, то не было бы особых причин ожидать образования одной реки.

Речная система, скорее всего, будет формироваться сильно разветвленной на всех уровнях протяженности. Как байкер-любитель, я могу сказать вам, что на Земле есть несколько «плоских» участков (за исключением солончаков).

Проблема с вашим предположением о плоскостности заключается в том, что не будет никакого стока, а значит, нет причин для существования реки.

Итак, я бы создал мир следующим образом:

  • Начните с топографии.
  • Затем выберите уровень моря. У вас должно остаться несколько островов и несколько больших кусков.
  • Как только вы это сделаете, выясните количество осадков - ветер и горы, а также большие густые леса имеют большое влияние на это.
  • Как только у вас выпадут осадки, вам понадобится дренажная система (известная как река), которая отведет примерно одну единицу воды (температура, ветер, конечно, влияет на это) в море. Не стесняйтесь (случайно) изменять единицу измерения примерно в 2 раза.
  • Итак, теперь, когда у вас есть область для осушения, вы точно знаете, что дренаж должен начинаться в самой высокой точке (я бы исключил горные вершины, скажем, над линией леса) и заканчиваться в одной или нескольких самых низких точках. Вы либо попадете в озеро, либо перетечете в соседний район.

Разница между этим подходом и вашим довольно глубока, имхо. Вы хотите соединить две точки. Я говорю, осушайте всю страну, начиная с гор, продвигаясь к низменностям. Не от точки 1 к точке 2, от точки 3 к точке 4. А от областей A, B, C,... к точкам α, ß, Γ,... одновременно спускаясь по высоте.

Кстати, следует включать и меандры, и косы, и анастомозы (см. https://en.wikipedia.org/wiki/Channel_types ) — по крайней мере, в некоторых случаях.

Привет, Ли Чжи. Я заметил, что вы создали несколько разных учетных записей, чтобы публиковать разные ответы. В этом нет ничего плохого, если вы не используете их для обхода правил, но создание одной зарегистрированной учетной записи дает определенные преимущества . Намного проще отслеживать ваши сообщения и возвращаться к ним и редактировать их. Это всего лишь совет; Я надеюсь, что это полезно.

Прежде всего, зайдите на YouTube и найдите, почему реки изгибаются, и нажмите на первое. Я нашел это видео очень полезным. Большая часть того, что я могу вам рассказать, взято из этого видео, поэтому вот несколько ключевых моментов:

Длина одной буквы «s» в реке примерно в шесть раз больше ширины реки.

Если на пути возникнут какие-либо возмущения, река просто обойдет их.

Меандр может быть вызван почти чем угодно, поэтому они ели довольно часто. Иногда s будет тоньше, чем другие, потому что он образовал старицу.

Похоже, на вашей диаграмме есть хотя бы один пример захвата реки (река впадает в море по одному пути и в озеро по другому на той же реке), что не так часто встречается, и в точке захвата, где вода может стекать по обоим рукавам ситуация будет очень недолговечной («Н»-образная).

Большинство рек в конечном итоге впадают в море, хотя в некоторых случаях в жарких районах испарение может привести к образованию испарительных бассейнов. У вас есть несколько из них с озерами, что нормально, но помните о необычных обстоятельствах, связанных с этим.

Если вы хотите создать реалистичную реку, я предлагаю вам начать с верхнего истока или оттока и работать оттуда вниз по течению или вверх по течению. Если вы работаете вверх по течению, вам следует подумать о ряде вопросов, во-первых, сколько воды вытекает? При прочих равных это поможет определить площадь речного бассейна и длину реки.

Затем вы можете работать вверх по течению с ответвляющимися притоками по мере продвижения. Каждая миля реки и каждый приток должны уменьшать размер реки. Очевидно (рассчитывая путь реки по-своему), течение идет в гору, поэтому с течением времени вероятность появления холмов или гор должна увеличиваться. Таким образом, река будет определять, где находится возвышенность.

Другой способ сделать это - работать вниз по течению, если вы начинаете внутри страны. В этом случае должно быть предположение о более низкой земле впереди, а также возможность слияния притоков. В этом случае реки будут определять, где находится море. В очень крупных реках на низких высотах у моря также существует возможность образования рукавов и разветвления реки в дельту.

Я бы избегал Н-образных участков реки, за исключением, возможно, района дельты. Я бы также тщательно подумал о том, чтобы реки впадали в озера, не имеющие выхода к морю. Это возможно, и есть много примеров, но это гораздо реже, чем реки, впадающие в море на несколько порядков.

Возможно, вы захотите рассмотреть возможность использования другого алгоритма для разных стадий развития рек от быстрых горных ручьев до более медленных равнинных рек со все большим количеством петель и топологией поймы (озера с волчьей дугой), наконец и, возможно, дельту. Между прочим, река на равнине вполне может закружиться так, что отрезает часть себя. Вот что такое старицы. https://en.wikipedia.org/wiki/Оксбоу_лейк