Куб Маврикия

Название изначально задумывалось как «Кубик Маврика», на подобие с Кубиком Рубика, но Google перевел его как «cube mauritius», что означает «Куб Маврикия», так и оставил.

После записи о вращении квадрата я немного полистал учебники по геометрии, и даже «основы учебного академического рисунка», и поднабрался знаний по поводу того что и как должно быть. И вот пришло время поделится этим с вами.

Я решил что до того как рисовать красивые полупрозрачные грани неплохо было бы научится вращать вершины. Чем собственно и занялся. Четыре точки вращаются в трех плоскостях. Но там немного хитро по оси OX вращение происходит при передвижении мышки вперед назад, а по оси OY и/или OZ происходит при передвижении мышки из стороны в сторону и зависит от того на какой грани лежит куб.

Развлекаемся:

Весь код показывать не буду, если захотите посмотрите, но главную функцию, которая рассчитывает позиции вершин обязательно надо показать.


function(){
	var data = [],
	dim = this.dimension,
	o = this.theta;
	for (var x = -dim; x <= dim; x += 2 * dim)
		for (var y = -dim; y <= dim; y += 2 * dim)
			for (var z = -dim; z <= dim; z += 2 * dim){
				var 
				a = x * Math.cos(o.x) - y * Math.sin(o.x),
				b = x * Math.sin(o.x) + y * Math.cos(o.x),
				c = b * Math.cos(o.y) - z * Math.sin(o.y),
				d = b * Math.sin(o.y) + z * Math.cos(o.y);
				data.push({
					left : 250 + a * (d + 2) * 50,
					top  : 250 + c * (d + 2) * 50,
				});
			}
	return data;
}

Единственным недостатком такого способа расчета координат есть то, что если поставить куб так чтобы взгляд шел сразу по двум граням, то дальняя вершина, которая должна сливаться с передней (то есть взгляд должен идти по ребру) сильно выходит за рамки куба. Но я так понял что я не первый кто пользуется этим способом, так что думаю что ничего страшного.

В планах на ближайшее будущее новый куб у которого ничего никуда не вылазит.

12 Комментарии “Куб Маврикия

  1. Привет) прикольно, прикольно получается. Сейчас тоже сел за учебники школьной математики)))

  2. Надо еще сделать чтоб квадраты двигались только тогда, когда курсор будет в нужной области :) Сделаешь?

  3. а в чем проблема то? сейчас «нужная область» это весь экран, ограничь его канвой например. будут проблемы подскажу.

  4. Долго соображал с математикой этой?))) Я вот например в школе плохо учился, просто не охота было да и сейчас не фонтан учусь ) Но не сказать что тупой, если надо то понимаю математику и физику. Загвозка в том если «надо» :D

  5. неа, позже сделаю. Кстати при медленной прокрутки поялвяется ощущение 3д) Мозг сам достраивает 3д )

Комментарии закрыты