READ FIRST: Я переписал этот вопрос с помощью друга, чтобы быть более конкретным в том, что требуется. Здесь можно найти hereC++ Заполнение массива 1D для представления n-мерного объекта на основе линейного отрезка
Я не очень разбираюсь в n-кубах, но я считаю, что это то, что я имею в виду как квадратное семейство.
Нового Вопрос Формулировка:
Возможно, я был недостаточно ясен. Я спрашиваю, как установить 1D-массив для хранения данных для облака из числа равномерно расположенных точек, которые образуют наиболее полное представление пространства, занимаемого n-кубом n измерений.
В 1D это просто заполнит массив серией 1D-координат, создавая сегмент линии. 1-куб.
В 2D, однако, это заполнило бы каждую первую координату значение x и каждую секунду для y, создавая максимально возможный квадрат для этого интервала и количества частиц. Самый полный возможный 2-куб.
В 3D это заполняло бы все сначала х, каждую секунду с y и каждую треть с z, генерируя наиболее полный возможный куб для этого интервала и количества частиц. Самый полный возможный 3-куб.
Я хочу быть в состоянии сделать это для любой разумной комбинации количества частиц, расстояния и размеров. В идеале я мог бы сделать, по крайней мере до 4-куба с использованием общего алгоритма заполнения для всех п-кубов инициализируется double * parts_
еще одно определение, какой тип объекта я пытаюсь представить:
В 1D его в линия. Проведите его по второму размеру, превращаясь в квадрат. Проведите квадрат через третий, он станет кубом. Я предполагаю, что это поведение распространяется на три измерения и хочет сохранить облако точек, представляющих пространство, занимаемое одним из этих объектов любого разумного размера, расстояния и количества точек в 1D-массиве.
Первоначальная формулировка вопроса:
Я изо всех сил, чтобы найти хороший способ, чтобы поставить этот вопрос, но здесь идет. Я делаю систему, которая использует 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;
}
}
Как я могу осуществить это за п-размеров, где 25 может быть любое число?
Прямая часть состоит в том, что мне кажется логичным, что линия является несколько правильной формой в 1D, как и квадрат в 2D, и куб в 3D. Мне кажется, что из этого следует, что в этом семействе будут аналогичные формы, которые могут быть реализованы для 4D и более высоких измерений с помощью аналогичного шаблона заполнения. Это форма, которую я хочу настроить для представления массива.
EDIT: По-видимому, я пытаюсь заполнить этот массив, чтобы представить n-куб с наименьшим количеством отсутствующих элементов для заданного n, расстояния и количества элементов. Если это делает мою цель более ясной.
Отформатируйте свой код, используя кнопку '101010' на странице редактирования. – sbi
Cheers. Это намного проще, чем то, что я пытался сделать с кавычками/экранами блоков. – Ben
Почему вы хотите сохранить многомерный массив в одном массиве измерений и не использовать массив с соответствующим количеством измерений? – Rudi