Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
LibCanvas.declare( 'LibCanvas.Engines.IsometricProjection', 'IsometricProjection', {
factor: [0.866, 0.5, 0.866],
size: 1,
start: [0, 0],
initialize: function (settings) {
this.bindMethods([ 'toIsometric', 'to3D' ]);
this.settings = new Settings(settings);
this.factor = Point3D( this.settings.get('factor') || this.factor );
this.size = Number ( this.settings.get('size') || this.size );
this.start = Point ( this.settings.get('start') || this.start );
},
toIsometric: function (point3d) {
point3d = Point3D( point3d );
return new Point(
(point3d.y + point3d.x) * this.factor.x,
(point3d.y - point3d.x) * this.factor.y - point3d.z * this.factor.z
)
.mul(this.size)
.move(this.start);
},
to3D: function (point, z) {
point = Point(point);
z = Number(z) || 0;
var
size = this.size,
start = this.start,
dXY = ((point.y - start.y) / size + z * this.factor.z) / this.factor.y,
pX = ((point.x - start.x) / size / this.factor.x - dXY) / 2;
return new Point3D( pX, pX + dXY, z );
}
});


Примеры не доступны
Работа с изометрическими матрицами. Часть 1