频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

3D Matrix Class

来源: 作者: 出处:巧巧读书 2006-10-16 进入讨论组
  • 关 键 词:
  • html

  // -------------------
// 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
// ----------------
matrix3D.prototype.translate = function(x,y,z) {
this.base[1] = new Array(x,0,0);
this.base[2] = new Array(0,y,0);
this.base[3] = new Array(0,0,z);
}
查看 http://www.qqread.com/flash/2006/10/z221864.html进入讨论组讨论。
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
最新论坛文章
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章