Как я должен сделать функцию, которая генерирует эту последовательность Vector3? - PullRequest
0 голосов
/ 06 июня 2018

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

Origin
(0, 0, 0);

https://i.imgur.com/8k6407q.png

Layer 1;
(0, -1, 0);
(-1, 0, 0);
(1, 0, 0);
(0, 0, -1);
(0, 0, 1);
(0, 1, 0);

https://i.imgur.com/PmqYM0o.png

Layer 2;
(0, -2, 0);
(-1, 0, 1);
(1, 0, 1);
(-1, 0, -1);
(1, 0, -1);
(-2, 0, 0);
(2, 0, 0);
(0, 0, -2);
(0, 0, 2);
(-1, -1, 0);
(1, -1, 0);
(0, -1, -1);
(0, -1, 1);
(-1, 1, 0);
(1, 1, 0);
(0, 1, -1);
(0, 1, 1);
(0, 2, 0);

https://i.imgur.com/EVc0ZOW.png Layer4: https://i.imgur.com/70HyB7E.png

Мне подойдет любой язык программирования.

Это для создания слоя трехмерной сетки из источника.

1 Ответ

0 голосов
/ 06 июня 2018

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

Создать разбиений расстояния D (1,2,3,4 ...) втри части (включая ноль частей).Для D = 2 разделов: (0,1,1) и (0,0,2)

Затем для каждого раздела генерируют 2 ^ k распределений +/- знаков между k ненулевыми элементами (0,1,1)=>(0,-1,-1),(0,1,-1),(0,-1,1),(0,1,1)

Затем дляпри каждом распределении генерируются все перестановки (0,1,1) => (0,1,1), (1,0,1), (1,1,0) и т. д.


В качестве более простого варианта - генерировать разделы с учетом порядка элементов ( составы ), а затем распространять знаки.

Примечание - stars and bars подход (с жестко закодированным разделением на 3 части) очень хорош там.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...