Я читал это: http://www.gameprogrammer.com/fractal.html#diamond
И там сказано:
Это отправная точка для итеративной подпрограммы подразделения, которая состоит из двух этапов:
Ромбовидный шаг: взяв квадрат из четырех точек, сгенерируйте случайное значение в средней точке квадрата, где встречаются две диагонали. Среднее значение рассчитывается путем усреднения четырех угловых значений плюс случайная величина. Это дает вам алмазы, когда у вас есть несколько квадратов, расположенных в сетке.
Квадратный шаг: взяв каждый ромб с четырьмя точками, сгенерируйте случайное значение в центре ромба. Вычислите значение средней точки путем усреднения угловых значений плюс случайное значение, полученное в том же диапазоне, что и для алмазного шага. Это снова дает вам квадраты.
Я этого не понимаю. Каким образом, взяв середину каждого квадрата, получается ромб? Каким образом из середины каждого ромба получается квадрат?
Может ли кто-нибудь предоставить независимый от языка код, как это сделать?
Редактировать:
Шаг 1: у вас есть сетка и четыре угла сделайте одинаковой по высоте:
* ┬ ┬ ┬ *
├ ┼ ┼ ┼ ┤
├ ┼ ┼ ┼ ┤
├ ┼ ┼ ┼ ┤
* ┴ ┴ ┴ *
Шаг 2: вы берете среднюю точку квадрата и устанавливаете ее на среднее значение всех 4 углов плюс случайное значение:
* ┬ ┬ ┬ *
├ ┼ ┼ ┼ ┤
├ ┼ * ┼ ┤
├ ┼ ┼ ┼ ┤
* ┴ ┴ ┴ *
Что теперь? Я нигде не вижу алмаза