| 网站首页 | 模板 | 资料 | 源码 | 工具 | 开发 | 设计 | 安全 | 项目 | 网络 | 图片 | 系统 | 数据库 | 博客 | 会员中心 | 小说 | 
MYFTP 精品资料下载
网络学院
学习资料
源码模版
您现在的位置: 精品资料 >> 设计 >> 网页设计 >> flash >> 正文 用户登录 新用户注册
3D Matrix Class          【字体:
3D Matrix Class
作者:佚名    平面来源:不详    点击数:    更新时间:2008-6-23

  // -------------------
// 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);
}

(出处:网侠)

平面录入:chqnet    责任编辑:chqnet 
  • 上一个平面:

  • 下一个平面:
  • 最新热点 最新推荐 相关平面
    轻松做出精美3D效果 浅析Fla…
    Flash MX与3D MAX“亲密接触…
    Flash制作四种3D隧道视觉动画…
    使用“LoadMovie()”制作纯F…
    用flash 5 action 制作3d效果
    flash 8 BitmapData 类的应用
    Flash dynamic mask 动态遮罩
    FSCommand用法详解
    loadMovie作为跨域交换数据的…
    FSCommand功能详解
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)