var halfPI = Math.PI / 2, x, y; function TextureUvs() { this.x0 = 0; this.y0 = 0; this.x1 = 0; this.y1 = 0; this.x2 = 0; this.y2 = 0; this.x3 = 0; this.y3 = 0; } module.exports = TextureUvs; TextureUvs.prototype.rotate = function (angle) { if (!angle) { return; } // if not a multiple of (PI/2) if (angle % halfPI) { // TODO: Not a multiple of (PI/2)... } // shift values for multiples of (PI/2) else { // rotate the uvs by (PI/2) however many times are needed if (angle > 0) { for (var i = angle / halfPI; i > 0; --i) { x = this.x3; y = this.y3; this.x3 = this.x2; this.y3 = this.y2; this.x2 = this.x1; this.y2 = this.y1; this.x1 = this.x0; this.y1 = this.y0; this.x0 = x; this.y0 = y; } } // rotate the uvs by -(PI/2) however many times are needed else { for (var i = angle / halfPI; i < 0; ++i) { x = this.x0; y = this.y0; this.x0 = this.x1; this.y0 = this.y1; this.x1 = this.x2; this.y1 = this.y2; this.x2 = this.x3; this.y2 = this.y3; this.x3 = x; this.y3 = y; } } } };