Как реализовать алгоритм алмазного квадрата? - PullRequest
1 голос
/ 28 ноября 2011

Я читал это: http://www.gameprogrammer.com/fractal.html#diamond

И там написано:

Это отправная точка для процедуры итеративного подразделения, который состоит из двух шагов:

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

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

Я не понимаю этого. Как взятие средней точки каждого квадрата делает бриллиант? Как взятие средней точки каждого алмаза дает квадрат?

Может ли кто-нибудь предоставить независимый от языка код, как это сделать?

Edit:

Шаг 1: у вас есть сетка и выровняйте четыре угла по высоте:

* ┬ ┬ ┬ *
├ ┼ ┼ ┼ ┤
├ ┼ ┼ ┼ ┤
├ ┼ ┼ ┼ ┤
* ┴ ┴ ┴ *

Шаг 2: вы берете среднюю точку квадрата и устанавливаете ее как среднее значение для всех 4 углов плюс случайное значение:

* ┬ ┬ ┬ *
├ ┼ ┼ ┼ ┤
├ ┼ * ┼ ┤
├ ┼ ┼ ┼ ┤
* ┴ ┴ ┴ *

И что теперь? Я нигде не вижу бриллиант

1 Ответ

2 голосов
/ 28 ноября 2011

Соедините два квадрата вместе: «это дает вам алмазы, когда у вас есть несколько квадратов в сетке». То же самое для выше / ниже квадрата.

Шаг возведения в квадрат создает новый набор квадратов со смещением от первого с вершинами, определенными средними точками алмаза.

...