论坛交流
首页办公自动化| 网页制作| 平面设计| 动画制作| 数据库开发| 程序设计| 全部视频教程
应用视频: Windows | Word2007 | Excel2007 | PowerPoint2007 | Dreamweaver 8 | Fireworks 8 | Flash 8 | Photoshop cs | CorelDraw 12
编程视频: C语言视频教程 | HTML | Div+Css布局 | Javascript | Access数据库 | Asp | Sql Server数据库Asp.net  | Flash AS
当前位置 > 文字教程 > Flash AS编程教程
Tag:2.0,3.0菜鸟,游戏,,cs,技巧,源码,,文本,文字,函数,音乐,随机,拖拽,asp,access,xml,mc,视频教程

3D Matrix Class

文章类别:Flash AS编程 | 发表日期:2008-10-6 18:06:48


// -------------------
// 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);
}
视频教程列表
文章教程搜索
 
Flash AS推荐教程
Flash AS热门教程
看全部视频教程
购买方式/价格
购买视频教程: 咨询客服
tel:15972130058