Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Разбить квадрат на равные части по условию (https://javascript.ru/forum/misc/39282-razbit-kvadrat-na-ravnye-chasti-po-usloviyu.html)

clgs 23.06.2013 22:56

Разбить квадрат на равные части по условию
 
Добрый вечер.
Вопрос скорее всего не по JS, но решить надо с помощью JS.
Есть квадрат, в который помещены 4 квадрата, всё просто:
$("[type=\"master\"]").each(function(i){
		var w=$(this).find('[space]').width(),
			s=Math.pow(w,2),
			c=$(this).attr('cnt'),//количество вложенных квадратов
			s2=s/c,
			w2=Math.sqrt(s2);
		$(this).find('[space]').height(w);
		if(1>c) return;
		$(this).find("[type=\"worker\"]").each(function(i){
			$(this).width(w2).height(w2);
		});
	});

А теперь если поместить 3 квадрата, скрипт не подходит, точнее требуется корректировка.
Вопрос: как определить оптимальное число ячеек, естественно в большую сторону?

Deff 24.06.2013 00:02

clgs,
А где начальные условия - т.е что имеем на входе ?
Ширину высоту - исходной фигуры и ширину высоту вложенных ячеек -? Или как ?

clgs 24.06.2013 00:15

Решил
$("[type=\"master\"]").each(function(){//цикл по основным квадратам
		var w=$(this).find('[space]').width(),//ширина квадрата
			s=Math.pow(w,2),//площадь квадрата
			c=$(this).attr('cnt'),//количество вложенных квадратов
			s2=s/c,//расчетная площадь вложенного квадрата
			n=Math.ceil(w/Math.sqrt(s2)),//правильное количество ячеек
			w2=w/n;//ширина вложенного квадрата
		$(this).find('[space]').height(w);//устанавливаем высоту равную ширине
		if(1>c) return;
		$(this).find("[type=\"worker\"]").each(function(){//цикл по вложенным квадратам
			$(this).width(w2).height(w2);//устанавливаем ширину и высоту
		});
	});

пока не задашь вопрос голова не варит)


Часовой пояс GMT +3, время: 11:26.