ЧИТАЙТЕ ПЕРВЫМ: Я переписал этот вопрос с помощью друга, чтобы, надеюсь, более конкретно определить, что требуется.Его можно найти здесь
Я не очень разбираюсь в n-кубах, но я считаю, что это то, что я называю квадратной семьей.
Формулировка нового вопроса:
Возможно, я не был достаточно ясен.Я спрашиваю, как установить одномерный массив для хранения данных для облака из нескольких равномерно распределенных точек, которые образуют наиболее полное представление пространства, занимаемого n-кубом из n измерений.
В 1D это просто заполнит массив серией 1D координат, создающих отрезок линии.1-куб.
В 2D, однако, это будет заполнять каждую первую координату до значения x и каждую секунду до y, создавая наиболее полный квадрат, возможный для этого расстояния и количества частиц.Наиболее полный возможный 2-куб.
В 3D это будет заполнять всегда сначала x, каждую секунду y и каждый третий z, генерируя максимально полный куб для этого расстояния и числа частиц.Самый полный возможный 3-куб.
Я хотел бы быть в состоянии сделать это для любой разумной комбинации числа частиц, расстояния и размеров.В идеале я мог бы сделать хотя бы до 4-х кубов, используя общий алгоритм заполнения для всех n-кубов, инициализированных double * parts_
Еще одно определение того, какой тип объекта я пытаюсь представить:
В 1D это линия.Проведите его через второе измерение, и оно станет квадратом.Протяните этот квадрат через третий, он станет кубом.Я предполагаю, что это поведение распространяется за пределы трех измерений, и хочу сохранить облако точек, представляющих пространство, занимаемое одним из этих объектов любого разумного измерения, расстояния и количества точек в одномерном массиве.
Оригинальная формулировка вопроса:
Я изо всех сил пытаюсь найти хороший способ поставить этот вопрос, но здесь идет.Я делаю систему, которая использует одномерный массив, реализованный как double * parts_ = new double[some_variable];
.Я хочу использовать это для хранения координат системы частиц, которая может работать в различных измерениях.
Что я хочу сделать, это написать общий алгоритм заполнения для заполнения этого в n-измерениях с помощьюобщее приращение во всех направлениях к переменному размеру.Я думаю, что примеры подойдут лучше всего.
Рассмотрим случай, когда число частиц, хранящихся в массиве, равно 4
. В 1D это дает 4 элемента в массиве, поскольку каждая частица имеет только одинордината.
1D:
{0, 25, 50, 75};
В 2D получается 8 элементов в массиве, поскольку каждая частица имеет две координаты ..
2D:
{0, 0, 0, 25, 25, 0, 25, 25}
ВВ 3D это дает 12 элементов в массиве, потому что каждая частица теперь имеет три координаты
{0, 0, 0, 0, 0, 25, 0, 0, 50, ... }
Эти примеры пока не совсем точны, но, надеюсь, их хватит.
Как я обычно делаю это для двух измерений:
int i = 0;
for(int x = 0; x < parts_size_ / dims_ / dims_ * 25; x += 25) {
for(int y = 0; y < parts_size_ / dims_ / dims_ * 25; y += 25) {
parts_[i] = x;
parts_[i+1] = y;
i+=2;
}
}
Как я могу реализовать это для n-измерений, где 25 может быть любым числом?
Прямолинейная часть, потому что она кажетсяМне логично, что линия - это несколько правильная форма в 1D, как квадрат в 2D и куб в 3D.Мне кажется, из этого следует, что в этом семействе были бы похожие фигуры, которые могли бы быть реализованы для 4D и более высоких размеров с помощью аналогичного шаблона заполнения.Это форма, которую я хочу установить для представления моего массива.
РЕДАКТИРОВАТЬ: Очевидно, я пытаюсь заполнить этот массив, чтобы представить n-куб с наименьшим количеством пропущенных элементов для данного n, интервал и числоэлементы.Если это сделает мою цель более ясной.