Учитывая ограниченный квадрат и общее количество меньших квадратов. Меньшие квадраты должны быть нарисованы внутри большего квадрата, равномерно распределенного круговым способом, только касаясь, но не перекрываясь. Как вы вычисляете ширину внутреннего квадрата?Круговая макет меньших квадратов в большом квадрате
(обновлено ссылка скрипки) http://jsfiddle.net/mdluffy/6bUVz/3/
///////// INPUTS ///////////////////////////////////////////
var BoundingBoxSide = 100;
var NofInnerBoxes = 14;
////////////////////////////////////////////////////////////
drawBoxes();
function drawBoxes()
{
var c=document.getElementById("myCanvas");
var ctx=c.getContext("2d");
ctx.rect(0,0,BoundingBoxSide,BoundingBoxSide);
ctx.stroke();
for(var i=0; i < NofInnerBoxes; i++)
{
// ************************************************************************************ //
// This needs to be computed so that the boxes touch each other, but not overlap
var innerBoxSide = 20;
// ************************************************************************************ //
var angle = degToRad(i * 360/NofInnerBoxes);
var innerX = ((BoundingBoxSide - innerBoxSide)/2) * Math.cos(angle);
var innerY = ((BoundingBoxSide - innerBoxSide)/2) * Math.sin(angle);
ctx.rect(BoundingBoxSide/2 + innerX - innerBoxSide/2, BoundingBoxSide/2 - innerY - innerBoxSide/2, innerBoxSide, innerBoxSide);
ctx.stroke();
}
}
function degToRad(d)
{
return d * Math.PI/180;
}
Update:
Я работаю на 3D визуализации с использованием three.js. Это древовидная структура с узлами, представленными в виде кубов. Кубы дочерних узлов выложены круговыми вершинами кубов родительского узла. Рекурсивно применяется.
Внутренние квадраты не должны касаться внешних квадратов, но они должны касаться самого большого круга, который может быть помещен внутри внешнего квадрата.
Ваша ссылка на скрипку пуста. Это для оптимизации упаковки? – K3N
Вы показали, какой код вы пробовали; что он делает и как это отличается от того, что вы хотите? – LarsH
Уточняющий вопрос: должны ли внутренние квадраты касаться внешнего квадрата на всех четырех сторонах? Я так не думаю ... потому что такой плотный прямоугольник часто не был бы квадратным. – LarsH