Куб Маврикия
Название изначально задумывалось как "Кубик Маврика", на подобие с Кубиком Рубика, но 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;
}
Единственным недостатком такого способа расчета координат есть то, что если поставить куб так чтобы взгляд шел сразу по двум граням, то дальняя вершина, которая должна сливаться с передней (то есть взгляд должен идти по ребру) сильно выходит за рамки куба. Но я так понял что я не первый кто пользуется этим способом, так что думаю что ничего страшного.
В планах на ближайшее будущее новый куб у которого ничего никуда не вылазит.
Свежие комментарии