Разбиение пространственной модели с помощью php
Для примера, представьте задачу где необходимо разбить куб или параллелепипед на n частиц и присвоить каждой частице координаты (x, y, z). Из исходных данных мы знаем длину, ширину и высоту тела. Данная задача очень просто решается с помощью алгебры многомерных матриц.
Любую многомерную матрицу можно представить в виде связной иерархической структуры ее сечений. Для произвольной многомерной матрицы, количество уровней разбиения на сечения, а также количество самих сечений будут определяться из размерности матрицы. Уровней разбиения будет столько же, сколько индексов в многомерной матрице. Общее количество сечений всех уровней будет равно n1+n1*n2+...+n1*n2*...*np. Количество сечений для каждого уровня будет равно n1*n2*...*nl.
Исходя из этого, куб или параллелепипед можно представить в виде трехмерной матрицы, для которой уровней разбиения будет три.
Сечений первого уровня будет
n1: {(1, i2, i3)}, {(2, i2, i3)}, ..., {(n1, i2, i3)}.
Сечений второго уровня будет
n1*n2: {(1, 1, i3)}, {(1, 2, i3)}, ..., {(n1, n2, i3)}.
Сечений третьего уровня будет
n1*n2*n3: {(1, 1, 1)}, {(1, 1, 2)}, ..., {(n1, n2, n3)}.
Осознав выше написанное, теперь решение данной задачи можно с легкостью интерпретировать на php. Вычислим координаты каждой точки:
На выходе получим многомерный массив с количеством всех точек и координат для них:
Просмотров: 3493
Дата создания: 10:28 - 01.08.2015.
Последнее изменение: 20:31 - 03.08.2015.