Создание реалистичной карты мира - Границы стран

Этот запрос является частью статьи о ресурсах по построению мира .


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

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

Есть ли альтернатива переписыванию всей истории от доисторических миграций до того времени, когда происходит действие истории?

Для данной страны я мог бы выполнить шаги, указанные в этом вопросе . Но если у меня есть целый континент?


Примечание:

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

Все эти вопросы предполагают земной сферический мир на орбите в обитаемом диапазоне.


См. другие вопросы из этой серии здесь: http://meta.worldbuilding.stackexchange.com/questions/2594/creating-a-realistic-world-series

Извините, я имел в виду вот этот: youtube.com/watch?v=gtLxZiiuaXs
Я действительно смотрел это видео некоторое время назад. Но это именно моя точка зрения. Проведение этих различий не является тривиальным. И недостаточно просто использовать реки и горы.
Но нужен ли вам такой уровень детализации? Конечно, последние примеры впечатляют, но затрагивают крошечный процент границ и населения мира; и не появляются ни в чем другом, кроме как на очень подробных картах. Я думаю, достаточно нескольких стран, не имеющих выхода к морю, анклавов и эксклавов.
Попробуйте это: daviddfriedman.com/Academic/Size_of_Nations/…Теория размера и формы наций . «Если территория переходит к нации, которая больше всего ценит ее как источник дохода, нации будут формироваться так, чтобы максимизировать совместный доход за вычетом затрат на сбор. ; и труд должен подразумевать, что нации будут иметь закрытые границы или быть культурно однородными (чтобы максимизировать издержки выхода). Я показываю, как это соответствует образцу европейского опыта от римских времен до наших дней».
Позвольте мне также указать, что иногда долгота и широта используются для формирования границ. Обратите внимание, например, на границу между северо-восточной Аляской и Канадой. Другие примеры включают западную границу Папуа-Новой Гвинеи, западную границу США/Мексики, западную границу США/Канады, Ливию, Египет, Судан, Намибию, Гватемалу и другие. Это ни в коем случае не исчерпывающий список и не особенно распространенное явление, но, возможно, стоит добавить несколько экземпляров на вашу карту.
Мы не всегда использовали широту и долготу для навигации, что предшествовало их использованию для определения границ. Может быть, в вашей культуре в определенных местах мира используются круги или точки с радиальными линиями, отходящими под разными углами? Возможности безграничны!
@ SJuan76 Нет, мне, конечно, не нужно включать слишком сложные случаи, но, тем не менее, ощущение или реализм были бы хороши.
@Lostinfrance, у меня нет времени читать все это прямо сейчас, но это звучит как очень хороший ресурс. Спасибо. Хотя насчет торговли я не уверен... Венеция и Нидерланды были не особенно велики. Но это зависит от того, что имеется в виду.
@ Дэн. Да, но, насколько мне известно, разделение между США и Канадой было первым в своем роде. Ну, можно добавить несколько штатов США. Но на самом деле это все 18-й и в основном 19-й век. Таким образом, для новых стран, с наукой и техникой, эквивалентными тому времени, прямые линии могут быть хорошими, а долгота / широта - хорошими отправными точками. Но для континента с непрерывной историей и без преодоления со стороны иноземцев, как Европа, это не очень реально. А средневековые сеттинги и того меньше.
Не забудьте включить некоторые другие бессмысленные границы, такие как эксклавы и анклавы (Земля недавно лишилась своего единственного анклава 3-го порядка ) или города, расположенные по обе стороны границы, которые прыгают туда-сюда от квартала к кварталу или проходят сквозь здания, кажущиеся без причины. Зайдите на YouTube, чтобы найти «самые сложные границы в мире», чтобы увидеть еще несколько примеров. Это произойдет после того, как вы установите свои более общие границы, и это должно быть редко (таким образом, интересно!).

Ответы (12)

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

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

Так что подумайте о крупных нациях, разделенных буферными нациями, причем последние населяют буферные зоны с более сложной обитаемостью.

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

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

Чтобы увидеть отличный пример такой воображаемой истории миграции, вы могли бы сделать гораздо хуже, чем посмотреть работу Толкина о трех веках Средиземья — здесь ( http://tolkiengateway.net/wiki/Middle-earth ). Он охватывает создание эльфов, людей, хоббитов и гномов, и если вы просмотрите этот сайт выше, вы найдете описания различных моделей миграции и того, как они породили народы Средиземья во времена Властелина колец.

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

https://en.wikipedia.org/wiki/Низкие_франконские_языки

Затем, если у вас есть единая языковая зона, которая охватывает естественные препятствия, вы можете ввести отдельные диалекты/акценты этого языка.

Это было моей отправной точкой, но этого недостаточно. Посмотрите на Европу. Нидерланды на самом деле не граничат с большими реками, горами и так далее. Германия была разделена на множество мелких территорий, практически независимых друг от друга. А граница между Германией и Францией проходит по Рейну, но только до одного пункта, а не до Нидерландов. Так что да, эти параметры, безусловно, важно учитывать. Но что тогда?
Справедливое замечание - я обновил свой ответ...
+1 отличный ответ. Просто хочу добавить, что точная концепция границ «начертить точные линии на карте» очень современна как из-за возможности делать такие точные измерения, так и заботиться о них. Если бы не было четкой естественной границы или причины заботиться о том, где именно проходит граница, она могла бы быть нечеткой — на нее претендовали обе страны, но ни одна из них не обеспечивала соблюдение этого требования.
ура Линда - и я согласен. На картах Толкина вообще нет нарисованных границ.
Малые реки часто образуют национальные границы. Судоходные реки обычно составляют ядро ​​нации или провинции, если только этот регион недостаточно заселен.
@bilbo_pingouin в таких случаях границы размываются. Это очевидно на равнинах Центральной Европы, где различные державы (Пруссия, Россия, Польша, монголы, Австрия...) борются за господство и быстро свергают друг друга. OTOH Франция была относительно стабильной с некоторыми незначительными стычками, а Германия де-юре была единой страной (HRE).

Довольно часто границы проходят вдоль природных объектов, таких как реки или горы (также называемые «естественными границами»). По сути, это линия, которую, естественно, трудно пересечь. Следовательно, завоевать землю за этой границей также труднее, чем если бы изначально не было естественной границы. Кроме того, если граница согласована, эти ориентиры легко распознаются и, следовательно, могут предотвратить будущие разногласия по поводу положения границы.

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

Не могу поверить, что я пропустил этот вопрос.

Подготовительные шаги

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

  1. Вам нужна карта

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

    • Очевидно, что провести политические границы невозможно, не имея представления о том, что было до настоящего момента, когда бы это ни случилось в истории.
    • Как и карта, это не должно быть мельчайшим. Подумайте об уровне детализации, который вы получаете в начальном образовании. Египет, греческие города-государства, Римская империя, Византия, Средневековье, Ренессанс... и т.д. и т.д. и т.п. Это должен быть широкий круг истории. Наметьте, где на карте эти основные нации/империи покрываются и перекрываются.

Настройка сейчас

  1. Определить период времени. Выберите социотехнический момент времени (или создайте свой собственный, средневековый твиттер!... кхм, в любом случае), чтобы ваше настоящее существовало.

    • Технологический уровень помогает определить форму границ. Как упоминалось в других сообщениях, у вас, например, не будет продольных границ во времена Римской империи... и если бы они могли, вы бы знали, что римляне будут, все знают, что римляне любили математику.
    • Сколько «открытого» пространства в вашем мире. На протяжении большей части человеческой истории большая часть мира не была частью какого-либо политического образования, если вы работаете в прошлом, имейте это в виду.

добраться до него

Шаг 1: Таким образом, между вашим временным периодом и географической картой вы можете начать наносить очевидные места для начала цивилизации. Мы все знаем (или знаем сейчас), что самые ранние цивилизации на планете Земля зародились вдоль рек. Регулярный доступ к свежей, чистой воде значительно облегчает жизнь. Вам не нужно называть эти цивилизации или что-то в этом роде (хотя может быть интересно вернуться и сделать это позже).

Шаг 2: Примените грубые кисти истории, которые вы обрисовали в общих чертах в шагах подготовки (вы сделали шаги подготовки правильно?).

Шаг 3: Как только вы доберетесь до настоящего момента, остановитесь. Если в этот момент все выглядит слишком распланированным, это прекрасно. Именно там, где мы должны быть.

Шаг 4: Настройте свою карту.

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

Это поможет придать вашей карте больше глубины.

Всегда помните, что границы подвижны и в планетарном масштабе постоянно меняются.

+1 за «Вам нужна история». Так много границ на Земле находятся не в оптимальных местах из-за различных исторических событий.

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

  1. Нарисуйте карту своего континента/мира/галактики/вселенной. Заполните детали, такие как местность, биомы, топография, геология, вулканология, ресурсы и т. д. любые детали, которые вы хотите включить в свою историю.
  2. Составьте список людей, которых вы хотите видеть в своем мире. Возможно, доброжелательная Империя (хех, когда империи бывают доброжелательными?) или нация мародерствующих скитальцев. Выясните, какие группы сильнее других и почему они сильнее. Возможно, у одной группы есть преимущество в мобильности, а у другой — отличная экономия.
  3. Поместите свои самые слабые нации/племена/группы на первое место и дайте им максимально возможную территорию, которая кажется разумной для их размера. Не волнуйтесь, они не будут удерживать такую ​​большую территорию долго.
  4. Теперь бросьте свои более сильные нации. Они, естественно, будут оттеснять более слабые страны, уменьшая их территорию. Отталкивание будет продолжаться до тех пор, пока не будет достигнут естественный барьер, такой как реки, океаны или горные хребты. Вы можете потерять более слабую нацию или две. Вносите поправки в их силы, пока они не смогут удерживать хотя бы небольшую территорию.
  5. Вернитесь назад и сделайте какие-то странные границы, которые нельзя объяснить тем, что одна нация сильнее другой. Эти небольшие изменения границ дают вам, автору, возможность ввести некоторую политическую предысторию. Пойнт Робертс на границе между Канадой и США является примером такого рода установления политических границ. Европа славится такими сдвигами границ.
  6. Внесите несколько корректировок в границы, чтобы учесть распределение ресурсов на карте. У более сильных наций будет больше доступных ресурсов или очень сильные торговые пути для получения этих ресурсов.
  7. Назначьте столицы в соответствии с вашими потребностями. Часто столицы расположены в центре, но не всегда (например, Москва или Вашингтон, округ Колумбия).

Обсуждение

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

Каждый дополнительный «слой» информации, добавленный на карту, увеличит богатство вашего мира, но за счет сложности. Добавьте столько слоев, сколько сможете, затем остановитесь. Простого добавления местности, ресурсов и населения на карту будет достаточно для очень богатого мира.

Введение и предположения

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

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

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

Приближение 1: диаграммы Вороного

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

Пример диаграммы Вороного
Изображение предоставлено пользователем Википедии Balu.ertl под лицензией Creative Commons Attribution-Share Alike 4.0 International .

Диаграммы Вороного уже использовались для моделирования границ стран и государств; смотрите конкретно работы Джейсона Дэвиса (изображения, кстати, защищены авторским правом). Конечно, есть много отличий от реальных границ (хотя в некоторых частях, например в Северной Африке, вроде бы все работает), но опять же, это только первое приближение.

Для больших н , создание такой диаграммы становится немного сложным. Поиск методом грубой силы работает, но явно утомителен; становятся полезными более сложные методы, такие как алгоритм Фортуны . Для получения дополнительной информации см. Самый простой алгоритм диаграммы Вороного для реализации? и Как мне получить диаграмму Вороного, учитывая ее набор точек и ее триангуляцию Делоне? .

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

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

Некоторые предположения (ну пока только одно):

  • Три точки не лежат на одной прямой. Если они есть, то границы — это просто параллельные линии, а центральной вершины нет.

Математика

Давайте иметь набор С из трех городов, ( с 1 ( Икс 1 , у 1 ) , с 2 ( Икс 2 , у 2 ) , с 3 ( Икс 3 , у 3 ) ) . Мы решили найти отрезки, соединяющие с 1 а также с 2 ( с 12 ¯ ) а также с 2 а также с 3 ( с 13 ¯ ). Учитывая, что с я Дж ¯ множество точек, равноудаленных от обеих с я а также с Дж , мы можем установить

(1) ( Икс Икс я ) 2 + ( у у я ) 2 знак равно ( Икс Икс Дж ) 2 + ( у у Дж ) 2
Упрощение в конечном итоге дает уравнение
(2) у знак равно Икс Дж Икс я у я у Дж Икс + Икс я 2 + у я 2 Икс Дж 2 у Дж 2 2 ( у я у Дж )
Ясно, что это взрывается, если у я знак равно у Дж , но если это так, то граница просто имеет уравнение
Икс знак равно 1 2 ( Икс Дж Икс я )
что достаточно просто.

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

Код

Я написал для этого программу на Python 3. Чтобы немного упростить ситуацию, я предположил, что никакие два города не имеют одинаковых у -coordinate, так как это создает линию с бесконечным наклоном в (2) . Если по какой-то причине ваша установка включает в себя такой случай, просто немного поверните систему координат, чтобы все три точки имели разные значения. у -координаты.

Вот пример, с с 1 знак равно ( 2 , 1 ) , с 2 знак равно ( 9 , 5 ) а также с 3 знак равно ( 4 , 7 ) :

import numpy as np
import matplotlib.pyplot as plt

P1 = [2,1]
P2 = [9,5]
P3 = [4,7]

Set = [P1,P2,P3]

def dist(point1,point2):
    """Returns distance between two points."""
    x1 = point1[0]
    y1 = point1[1]
    x2 = point2[0]
    y2 = point2[1]
    return np.sqrt((x2 - x1)**2 + (y2 - y1)**2)

def perp(point1,point2):
    """Returns slope and y-intercept of the perpendicular
    bisector of the segment connecting two cities."""
    x1 = point1[0]
    y1 = point1[1]
    x2 = point2[0]
    y2 = point2[1]
    m = (x2 - x1)/(y1 - y2)
    b = (x1**2 + y1**2 - x2**2 - y2**2)/(2*(y1 - y2))
    return m,b

M1 = perp(P1,P2)[0]
B1 = perp(P1,P2)[1]
M2 = perp(P1,P3)[0]
B2 = perp(P1,P3)[1]
def vertex():
    """Finds central vertex"""
    x = (B1 - B2)/(M2 - M1)
    y = M1*x + B1
    return x,y
 
"""
This next bit divides each of the lines into a certain number of line
segments by adding a number of points onto the lines, and then removes
those points in the third city's Voronoi cell.
"""
for point1 in Set:
    for point2 in Set:
       if point2 != point1:
           N = []
           delta = 0.001
           for i in range(0,10000):
               N.append(i*delta)
           M = [perp(point1,point2)[0]*a + perp(point1,point2)[1] for a in N]
           Other_point = [a for a in Set if a not in [point1,point2]]
           i = 0
           while i < len(N):
               x = N[i]
               y = M[i]
               if dist([x,y],point1) > dist([x,y],Other_point[0]):
                   N.remove(x)
                   M.remove(y)
               else:
                   i += 1
           plt.plot(N,M,'k')

for point in Set:
    name = 'City at ('+str(point[0])+','+str(point[1])+')'
    plt.plot(point[0],point[1],'x',label=name)

plt.plot(vertex()[0],vertex()[1],'kx')
plt.legend(loc='upper left')
plt.title('Voronoi cells of three countries')
plt.xlim(0,10)
plt.ylim(0,10)
plt.show()

Вот результат:

Ячейки Вороного трех стран

Приближение 2: Рельеф.

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

Я предполагаю, что следующие объекты вызовут сдвиг границ:

  • Реки
  • Горы
  • Каньоны
  • Большие водоемы

Я думаю, что эти объекты были достаточно оправданы как ограничения (см . ответ celtschk ).

Математика

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

л знак равно Икс л ( т ) знак равно ( Икс л ( т ) , у л ( т ) ) , т 0 т т ф
Мы также можем представить участок границы Б как еще одна параметризованная кривая, заданная параметром с :
Б знак равно Икс Б ( с ) знак равно ( Икс Б ( с ) , у Б ( с ) ) , с 0 с с ф
Таким образом, задача состоит в том, чтобы придумать некоторый итеративный алгоритм, отображающий Б н к Б н + 1 . Там, наверное, много вариантов. Я выбрал одну из следующих форм:

Разделять Б н в Н точки { п 1 , н , п 2 , н , , п Н , н } . Для каждого п я , н ( Икс п , у п ) , вычислить расстояние до всех точек на л и выберите точку на л что ближе всего, л я , н ( Икс л , у л ) . Шаг п я , н соответственно. Я поиграл с вещами и определился с определенной формулой:

г Икс знак равно Икс л Икс п 1 + а расстояние ( п я , н , л я , н ) , г у знак равно у л у п 1 + а расстояние ( п я , н , л я , н )
Икс п , н + 1 знак равно Икс п , н + г Икс , у п , н + 1 знак равно у п , н + г у
куда а - некоторый масштабный коэффициент и расстояние ( а , б ) это расстояние между двумя точками а а также б .

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

Код

Вот моя реализация вышеизложенного, снова написанная на Python 3. Я выбрал а знак равно 0,3 :

import numpy as np
import matplotlib.pyplot as plt

scale = 0.3

RiverPath = np.linspace(0,49,1000)
def River(t):
    x = np.sqrt(t)
    y = t*np.exp(-t)
    return x,y

BorderPath = np.linspace(0,7,1000)
def Border(t):
    x = t
    y = t/4
    return x,y

def dist(y,x):
    """
    Returns closest point on the target curve to a given
    point on the border.
    """
    Set = []
    for loc in RiverPath:
       dx = x - River(loc)[0]
       dy = y - River(loc)[1]
       distance = np.sqrt(dx**2 + dy**2)
       Set.append([distance,loc])
    Set = sorted(Set, key=lambda S: S[0])
    dR = Set[0][0]
    p = Set[0][1]
    target = River(p)
    return target

def move(Q):
    """Moves each point on the border curve parameterized by Q."""
    X = []
    Y = []
    for q in Q:
       x = Border(q)[0]
       y = Border(q)[1]
       point = dist(y,x)
       point_x = point[0]
       point_y = point[1]
       mag = np.sqrt((point_x - x)**2 + (point_y - y)**2)
       dx = (point_x - x)/(1 + scale*mag)
       dy = (point_y - y)/(1 + scale*mag)
       X.append(x + dx)
       Y.append(y + dy)
    return X,Y

plt.plot(River(RiverPath)[0],River(RiverPath)[1],'b',label='River')
plt.plot(Border(BorderPath)[0],Border(BorderPath)[1],'k',label='Border')
plt.plot(move(BorderPath)[0],move(BorderPath)[1],'r')
plt.legend(loc='upper left')
plt.show()

Он использует следующие параметризации:

л знак равно ( т , т е т ) , 0 т 49 , Б н знак равно ( с , с / 4 ) , 0 с 7
Вот результат:

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

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

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

Куда мы отправимся отсюда?

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

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

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

Не зацикливайтесь на реках

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

Вот карта средневековой Европы:

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

Глядя на это, нужно помнить о нескольких вещах:

1) Самые могущественные нации основаны вокруг реки, не разделенной ни одной. Через Лондон, Париж и Рим протекают крупные реки. Это обеспечивает главную торговую артерию, а также плодородные пахотные земли, чтобы прокормить большое население. Со временем племена и города, которые расширяются, образуя королевства, как правило, имеют большое население. Таким образом, большинство ваших королевств будут иметь плодородную сердцевину, в которой проживает большая часть населения и, как правило, столица. Затем эта основная территория, вероятно, будет господствовать над более труднопроходимой внутренней территорией с гораздо меньшим населением.

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

Лучшим примером этого является средневековая Шотландия. Подавляющее большинство населения Шотландии проживает в плодородной местности вокруг Эдинбурга, в то время как Хайленд и острова малонаселены. На приведенной ниже карте населения обратите внимание, что теперь основная сельскохозяйственная и торговая зона заполнена людьми и сформировала ядро ​​​​королевства, которое затем расширялось. Обратите внимание, что это современная карта, и средневековые числа, вероятно, были немного более сбалансированными, хотя и с той же общей закономерностью.

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

2) Карта заполнена зависимыми королевствами.Так было и во времена Древнего Рима. Глядя на карту Римской империи, она кажется одним большим государством, но на самом деле внутри нее было множество зависимых королевств, которые контролировали внутренние дела, но во всем остальном подчинялись Риму. На приведенной выше карте Средневековой Европы Богемия, Хорватия и Моравия попадают в эту категорию наряду со многими другими. Вы можете включать или не включать это в свой сеттинг, но это было обычным историческим явлением. Эти зависимые государства часто существовали на границах своих родительских империй, содержали отдельную этническую группу и использовались в качестве буферных зон против враждебных империй. Позднесредневековая Хорватия попала в эту категорию. Они находились под властью Австро-Венгерской империи, но обладали значительной автономией и использовались в основном в качестве буфера против Османской империи.

3) Города-государства распространены в районах с большой береговой линией и пересеченной местностью. Города-государства просто управляют одним большим городом и окружающей сельской местностью. Эти государства в основном сосредоточены на торговле и редко строят империи в непосредственной близости от них, вместо этого завоевывая заморские владения для расширения своей торговой сети. Греки использовали эту систему в классическую эпоху, а итальянцы — большую часть средневековья. Если в вашем мире есть труднопроходимая/прибрежная зона с богатыми торговыми связями, я подозреваю, что она будет полна небольших городов-государств с небольшими (и несколько неважными) границами.

4) Неопределенные границы распространены на обширных необитаемых территориях.Никого (кроме Муаммара Каддафи) не волнует, где проходит граница через необитаемую пустыню. Обратите внимание на карту Средневековой Европы, как восточноевропейские княжества Киев и т. д. имеют границы, которые как бы исчезают в степях. Это обычное дело в малонаселенных королевствах, граничащих с неопределенными племенными группами. Поскольку всадники-кочевники все равно будут пересекать границу, а у государства нет ни воли, ни возможности охранять ее, то существует не столько граница, сколько общее понимание того, что «то, что там, принадлежит им». Это также относится к границам пустыни. На многих картах Древнего Египта изображена их империя, простирающаяся до Сахары, но вы не столкнетесь там с древнеегипетским пограничным патрулем. Скорее было просто понимание того, что Египет правил долиной Нила, и любой, кто подойдет слишком близко, будет в беде. Вы можете провести определенную линию для этих типов границ, но просто знайте, что реальность на земле будет гораздо более подвижной.

5) На границе правят неорганизованные племенные группы.На карте средневековой Европы обратите внимание на половцев, узов и влахов на юго-востоке, а также на пруссаков, селонов и т. д. на северо-востоке. В малонаселенных районах, особенно в тех, где живут кочевники, Королевств на самом деле не существует. Вместо этого территория разделена между племенами, кланами и другими небольшими образованиями. На картах они обычно отмечаются вместе как единая этническая группа (например, половцы), но не имеют цвета или границ. Вместо этого другие границы заканчиваются, и в белой области есть названия указанных этнических групп, причем местоположение примерно указывает, где они были, а размер слова часто указывает размер каждой из них. Таким образом, до Чингисхана область к северу от Китая была бы пустой областью со словом «монголы», написанным там, наряду с несколькими другими кочевыми группами. Исторически, эти группы часто объединялись и завоевывали своих оседлых соседей, образуя новые королевства, которые, в свою очередь, были завоеваны через несколько сотен лет. Хорошим примером этого является Парфянская империя, как кочевой конный народ, осевший и позднее завоеванный Сасанидами, еще одним кочевым конным народом (который затем был завоеван арабами, затем завоеван монголами, затем завоеван афганцы и др.).

Вот что я делаю при разработке кампании DnD, когда у меня есть карта:

  1. Ищите каждое место, в котором есть что-то, что заставило бы людей поселиться там. Минимум будет еда и вода. Любые полезные функции и ресурсы добавляют бонусы. Если земля недавно заселена, начните с одного края. В противном случае считайте, что люди побывали на большей части земли (за исключением областей, которые вам не нужны).
  2. Нарисуйте круги (используйте светлый карандаш). Как только у вас появятся поселения, оцените, сколько у них еды и ресурсов, насколько велико будет их влияние (подойдет компас или карандаш на веревочке).
  3. Так как круги нереалистичны, подгоните их под рельеф. Если путешествие тяжелое, потяните его немного, а если оно легкое, немного отпустите. Кроме того, если рядом с краем есть естественные объекты (река, обрыв, опушка леса, опушка пустыни и т. д.), край обычно соответствует природному объекту.
  4. Перекрытия – это зоны конфликта. Граница, как правило, проходит в пределах этой зоны конфликта (часто по природному объекту).
  5. Ассимиляция. Если одно поселение полностью или большей частью находится в зоне влияния, решите, было ли оно уже ассимилировано более крупной державой или нет. Если она была ассимилирована, расширьте влияние сил в этом направлении силой ассимилированной силы. Если он не ассимилировался, оттяните границу в этом районе. При первом проходе большинство будет ассимилировано.
  6. Решите, какие границы могут быть мирными, а какие будут конфликтными. Соседи с разными ресурсами могут быть более мирными по отношению друг к другу и иметь торговые отношения. Соседи с аналогичными ресурсами с большей вероятностью вступят в конфликт, поскольку они меньше выигрывают от торговли.
  7. Приспособьтесь к торговле или конфликту. Расширьте границы держав, имеющих торговые соглашения, и сузьте границы держав, находящихся в конфликте. Повторяйте с 4 по 7 по мере необходимости. Некоторые силы могут быть ассимилированы, и могут возникнуть новые конфликтные зоны. Если граница сжимается, чтобы «освободить» меньшее поселение, решите, разрывается ли оно (если нет, оставьте связь с большей единицей).
  8. Точная настройка по мере необходимости или желания.
  9. Предыстория. Создайте столько истории, описывающей, как все дошло до настоящего времени, сколько пожелаете. Вероятно, в развивающейся карте есть много отличных сюжетных зацепок.

Теперь вы находитесь в начале истории или кампании.

Сколько деталей вам нужно, чтобы ваша история имела смысл?

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

Конечно, вы могли бы написать историю мира до этого момента, чтобы объяснить, как возникли ваши границы. Но так ли это необходимо? Если в рассказе писатель говорит: «Боб был высоким и имел рыжие волосы», он обычно не считает необходимым проследить генетическую историю Боба до Ноя, чтобы объяснить, как именно он приобрел эти черты.

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

Если я читаю историю, действие которой происходит в выдуманном мире или в какой-то части мира, где я не знаком с географией, я не помню, чтобы когда-нибудь задавался вопросом: «Эй, подождите минутку! Foobar и Plughland проходят через долину Fwacbar? Разве автор не говорил, что поблизости есть река? Почему река не является границей? Что за история стоит за этим?" Если история не о географии и политике, я сомневаюсь, что такой вопрос вообще придет в голову 99,9% читателей.

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

Однако вам не нужно писать доисторические истории. Создайте одно королевство и получайте удовольствие. Подумайте, кто их враги. Что они производят? Может быть, они торгуют с соседним городом. Прежде чем вы это узнаете, перед вами появится процветающее королевство. Удачи!

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

Большинство граждан США не осознают, что в наших штатах шли перестрелки с гибелью людей за права на источники воды и водные пути для перевозки грузов, для орошения и питьевой воды. То же самое касается естественных портов на берегу океана (или на больших озерах). Войны за воду (буквально войны) являются основной причиной того, что на нашей карте есть странные выступы и расширения, доступ к воде, как для потребления, так и для путешествий, имеет решающее значение. Баржи, несомненно, являются самым дешевым видом транспорта для товаров; намного, намного дешевле, чем железная дорога, грузовики или конные повозки.

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

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

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

Одной из альтернатив генерации всей истории является создание материала с использованием цепей Маркова на основе карты высот текущего года / данных о границе земли.

Сначала вы получаете карту высоты земли с границами стран.

Если пиксель карты высот — океан/граница, вы меняете его цвет на A, если это океан/международная земля, вы меняете его цвет B, если его океан/земля страны, вы меняете его тип на C, если это не океан/ границы вы меняете его цвет на цвет D, и если это не океан/международная земля, вы меняете на E, а если это не океан/страна, вы меняете на F.

Затем некоторая программа получит эту модифицированную карту высот и проанализирует ее, создав таблицу вероятностей: вероятность того, что некоторая плитка X является границей, «международной землей» или «землей страны», в зависимости от того, какой конкретный тип плитки имеет их 8 соседей, а также на основе плитки. сам по себе, который вы создаете, является океаном или не океаном.

Имея эту информацию в ваших руках, программа генератора карты мира получит случайную плитку и определит, является ли она «сельской землей», «международной землей» или границей, основываясь на их 8 соседних плитках и его собственном типе. После того, как вы найдете этот тип тайла, он перейдет к следующему и сгенерирует его, а затем перейдет к следующему и следующему... пока не сгенерирует всю карту.

Несколько важных вещей, чтобы убедиться, что это работает:

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

2-Данные цепи Маркова должны быть основаны на ВСЕХ 8 соседях и также должны зависеть от направления соседней плитки.

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

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

3-Точки 1 и 2 основаны на открытиях, которые я обнаружил, пытаясь составить карту цепи Макова. В Интернете вы найдете некоторые идеи генератора карт цепи Маркова, которые предполагают, что цепь Маркова не будет работать при создании карт (шаблон x или что-то еще), потому что они не обнаружили, что вызвало их проблемы, поскольку предполагали, что использование самой цепи Маркова было проблемой.

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

Привет ЭЛМО. Добро пожаловать в Worldbuilding SE. Звучит интересно, но не могли бы вы немного подробнее рассказать, как работают эти инструменты? Обычно нам больше нравится иметь ответы, чем ссылку. Чтобы люди могли оценить, не переходя по ссылке. Ссылки могут быть изменены или исчезнут, а содержание вашего ответа потеряет свою ценность.