Java Perlin Noise для создания 2D рельефа - PullRequest
2 голосов
/ 09 марта 2012

ОБНОВЛЕНИЕ: Формальный Список вопросов:

  1. Что представляют собой значения с плавающей запятой (как входные параметры, так и выходные данные) реализации 2D-шума? - Частично ответ, входные данные - это координаты. Как насчет выхода? Кроме того, я могу использовать мое целое число как число с плавающей точкой для координат? 1.0, 122.0 и т. Д.
  2. Какой хороший способ реализовать начальное число в 2D-генераторе шума? Должен ли я просто сделать его трехмерным генератором шума, использующим 3-й параметр в качестве начального числа? Будет ли это означать, что каждое семя может генерировать уникальный 2D-шум?
  3. При создании 2-й карты генерация растровых изображений, похоже, идет в том же духе. Как я могу сгенерировать растровое изображение из вывода? Предположительно плавает.

Мои вопросы: что представляют собой значения с плавающей запятой (как входные параметры, так и выходные данные) реализации 2D с вырезанным и вставленным перлин-шумом? Как я могу создать растровое изображение из них? Если я смогу получить 2d массив данных какого-либо типа, я уверен, что смогу выяснить, как использовать его для симуляции моей местности.

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

Хорошо, я понимаю, что этот вопрос задавался много раз, поэтому позвольте мне объяснить, что я исследовал и нашел.

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

Затем я попытался испачкать руки и написать код на Java, который я выбрал. Я нашел this , который заставил меня опробовать хеш-функцию, заданную в качестве ответа в качестве моей шумовой функции, потому что я мог использовать начальное число там. Затем я столкнулся с проблемой не возврата поплавка, чтобы следовать остальным процессам в учебнике. Вернуться к доске для рисования. По пути я нашел еще много сайтов с вопросами о перлин-шуме.

Я нашел здесь вопрос без ответа, о котором я даже не подумал, потому что я не получил свою реализацию. Я больше не могу найти ссылку, но она говорит что-то вроде того, даже если у вас есть копия и вставленная реализация, какие входные данные с плавающей запятой вы помещаете в функцию? Мне сказали, что мне нужно передать INTEGERS, которые являются моими x и y на карте. Я получаю плавающие выводы из реализаций вырезания и вставки. Что это значит? Как эти 2D? Если бы я мог хранить вещи как целые числа, это имело бы смысл в моем мозгу, но в некотором смысле я вижу, что сохранение их как целых чисел не было бы правдоподобно для интерполяции и сглаживания значений для непрерывной кривой.

Ответы [ 2 ]

1 голос
/ 05 марта 2014

1 / значения представляют собой линейную или кубическую интерполяцию между выборочными случайными точками, образующими двумерную сетку, поэтому каждая точка представляет собой расчетный баланс между 4 заранее определенными не вычисленными ближайшими точками, сгенерированными случайной функцией.

2 / это здорово:

function rndng ( n: float ): float
{//random linear graph -1, 1
    var e = ( n *122.459)%1;
    return  (e*e*143.754)%2-1;
}

function rnd2d ( n: float, m: float ): float
{//random 2d gooed enough for mountains -1, 1
    var e = ( n*m *31.178694)%1;
    return  (e*e*137.21321)%1;
}

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

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

1 голос
/ 12 марта 2012

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

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

...