Есть куб нам известны координаты его центра и его размеры(x,y,z), необходимо иметь возможность делить его произвольное количество кубов кратное 8.
Никак не придумаю цикл для данной операции на данный момент есть простая функция для деления "первого уровня"(половина размера по каждой из координат + смещение):
function setCubePartPosition(shift,geometry,material){
var cubes = [];
for(var i=0; i < 8; i++){
var cube = new THREE.Mesh(geometry, material);
var x = y = z = 0;
switch(i){
case 0:
x = shift;
y = shift;
z = shift;
break;
case 1:
x = -shift;
y = shift;
z = shift;
break;
case 2:
x = shift;
y = -shift;
z = shift;
break;
case 3:
x = shift;
y = shift;
z = -shift;
break;
case 4:
x = -shift;
y = -shift;
z = shift;
break;
case 5:
x = -shift;
y = -shift;
z = -shift;
break;
case 6:
x = -shift;
y = shift;
z = -shift;
break;
case 7:
x = shift;
y = -shift;
z = -shift;
break;
}
cube.position.set(x,y,z);
cubes.push(cube);
}
return cubes;
}
В результате у нас получается куб состоящий из 8 кубов. Эту функцию, как я понимаю, необходимо будет как-то использовать в цикле, чтобы при делении на большее количество частей происходило не создания куба, а смещение центра где будут создавать другие 8 кубов и так далее.
Есть идеи? Сам искать пробовал, но видимо не удается правильно сформулировать запрос для подобной задачи. Так же не подойдет решение с одним кубом и множеством фэйсов, так как нужны отдельные мешы.
По возможно хотелось бы чтобы они строились упорядочено, например снизу вверх.