3D Matrix Class
作者 佚名技术
来源 服务器技术
浏览
发布时间 2012-07-12
// ------------------- // 3D Matrix Class // ------------------- // Matrix3D constructor // ------------------ function matrix3D () { this.element = new Array(); this.createBase(); this.vCount = 0; } // Base creation // ------------- matrix3D.prototype.createBase = function() { this.base = new Array(); this.base[1] = new Array(1,0,0); this.base[2] = new Array(0,1,0); this.base[3] = new Array(0,0,1); } // Adding a vector // --------------- matrix3D.prototype.addVector = function (x,y,z) { this.vCount++; this.element[this.vCount] = new Array(); this.element[this.vCount][1] = x; this.element[this.vCount][2] = y; this.element[this.vCount][3] = z; } // Deleting a vector // --------------- matrix3D.prototype.delVector = function (index,count) { if (!count) count = 1; this.element.splice(index, count); this.vCount -= count; } // Getting an element’s value // -------------------------- matrix3D.prototype.get = function(row, column) { return (this.element[row][column]); } // Setting an element’s value // -------------------------- matrix3D.prototype.set = function(row, column, arg) { this.element[row][column] = arg; } // Rotation around the X axis // -------------------------- // It multiplicates each vector (dot multiplication) by the transformation matrix: // // 1 0 0 // 0 cos ? -sin ? // 0 sin ? cos ? // // So, it will result the matrix transformed by: // // x’ = x // y’ = (cos ?) * y - (sin ?) * z // z’ = (sin ?) * y + (cos ?) * z // matrix3D.prototype.Xrotation = function(beta) { for (var iVector = 1; iVector <= this.vCount; iVector++) { this.element[iVector][2] = ((Math.cos(beta))*this.element[iVector][2])-((Math.sin(beta))*this.element[iVector][3]); this.element[iVector][3] = ((Math.sin(beta))*this.element[iVector][2])+((Math.cos(beta))*this.element[iVector][3]); } } // Rotation around the Y axis // -------------------------- // Transformation Matrix: // // cos ? 0 sin ? // 0 1 0 // -sin ? 0 cos ? // matrix3D.prototype.Yrotation = function(beta) { for (var iVector = 1; iVector <= this.vCount; iVector++) { this.element[iVector][1] = ((Math.cos(beta))*this.element[iVector][1])+((Math.sin(beta))*this.element[iVector][3]); this.element[iVector][3] = (-(Math.sin(beta))*this.element[iVector][1])+((Math.cos(beta))*this.element[iVector][3]); } } // Rotation around the Z axis // -------------------------- // Transformation Matrix: // // cos ? -sin ? 0 // sin ? cos ? 0 // 0 0 1 // matrix3D.prototype.Zrotation = function(beta) { for (var iVector = 1; iVector <= this.vCount; iVector++) { this.element[iVector][1] = ((Math.cos(beta))*this.element[iVector][1])-((Math.sin(beta))*this.element[iVector][2]); this.element[iVector][2] = ((Math.sin(beta))*this.element[iVector][1])+((Math.cos(beta))*this.element[iVector][2]); } } // Base Translation // --------------- |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇: 让Flash MX 2004中文版支持Captivate项目导入下一篇: 影片的倒带效果
关于3D Matrix Class的所有评论