| 首页 | 新闻 | 网页 | 设计 | 色彩 | 原创 | 视觉 | 素材 | 动漫 | 酷站 | 策划 | 文案 | 访谈 | 运营 | 编程 | 数据库 | 服务器 | 下载 | 图库 | 
您的位置: 幽幽天空 > 网页 > 网页制作 > Flash教程 > ActionScript教程 > 文章正文 用户登录
用Google的Gmail收
1MajorHost免费ph
无限网络提供50M 
苏能科技100M/FTP
Symantec提供免费
谁杀死了站长(We
三步设计:浅谈B2
谈Google广告的单
fscommand调用exe
关于fscommand调用

3D Matrix Class           

3D Matrix Class

作者:佚名 来源:闪吧 作者: Super-Tomato 更新:2007-1-13 20:46:25 错误报告 我要投稿

// -------------------
// 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);
}
文章录入:skyuu    责任编辑:skyuu 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    发表评论:
    姓名:  评 分: 1分 2分 3分 4分 5分
     
  • 严禁发表危害国家安全、政治、黄色淫秽等内容的评论。
  • 用户需对自己在使用幽幽天空服务过程中的行为承担法律责任。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表机友个人观点,与本网站立场无关。