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

#terrain #fractals

#рельеф #фракталы

Вопрос:

Я создаю карты высот, используя фрактальное броуновское движение. Затем я раскрашиваю его на основе высот и сопоставляю со сферой. Моя проблема в том, что карта высот не оборачивается плавно. Я использовал алгоритм Diamond Square, и с его помощью довольно легко сделать вещи бесшовными, но, похоже, я не могу понять, как это сделать с помощью fBm, и, похоже, у меня возникли проблемы с поиском объяснения этому в Интернете.

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

Ответ №1:

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

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

Ответ №2:

Или вы можете использовать одну из традиционных картографических проекций. Цилиндрическая проекция (x, y) -> (x, sin y) даст вам шов всего в один меридиан, который вы можете повернуть назад. Или вы можете «сгладить» край тем или иным способом.

При стереографической проекции (x, y, z) ->(x / (z 1),y / (z 1)) существует только одна исходная точка (сама точка проекции).