计算机图形学立方体旋转代码,Flash AS教程:旋转立方体

好,下面开始:

stop();

//这个stop是让FLASH播放在这一帧停下来,但对代码的运行没有影响~其实不用也没关系

angle=-0.03;

dot_x=Stage.width/2;

dot_y=Stage.height/2;

p=70;

d=300;

//先初始化一下变量~angle是立方体每次转过的角度,dot_x和dot_y定义了空间的原点,p是立方体边长的一半,d是眼

//睛距离屏幕的像素

sx=new Array(-p,p,p,-p,-p,p,p,-p);

sy=new Array(-p,-p,-p,-p,p,p,p,p);

sz=new Array(-p,-p,p,p,-p,-p,p,p);

//这三个数组储存了立方体八个点的实际坐标

tempx=new Array(8);

tempy=new Array(8);

//这两个数组用来存储立方体8个点在屏幕上的坐标

function r(){

for(i=0;i temp_x=sx*Math.cos(angle)-sz*Math.sin(angle);

temp_z=sx*Math.sin(angle) sz*Math.cos(angle);

//这个是用来计算立方体在转动时八个点的坐标

sx=temp_x;

sy=sy;

sz=temp_z;

//要这样赋值一下~否则立方体会越转越长

tempx=(sx/(sz d))*d dot_x;

tempy=(sy/(sz d))*d dot_y;

//这个是用来将立方体的实际坐标转化成屏幕的坐标,不懂的可以参考一下计算机图形学的书

}

_root.createEmptyMovieClip("lines", 1);

lines.lineStyle(1, 11111111, 100);

lines.moveTo(tempx[0],tempy[0]);

lines.lineTo(tempx[1],tempy[1]);

lines.lineTo(tempx[2],tempy[2]);

lines.lineTo(tempx[3],tempy[3]);

lines.lineTo(tempx[0],tempy[0]);

lines.lineTo(tempx[4],tempy[4]);

lines.lineTo(tempx[5],tempy[5]);

lines.lineTo(tempx[6],tempy[6]);

lines.lineTo(tempx[7],tempy[7]);

lines.lineTo(tempx[4],tempy[4]);

lines.moveTo(tempx[1],tempy[1]);

lines.lineTo(tempx[5],tempy[5]);

lines.moveTo(tempx[2],tempy[2]);

lines.lineTo(tempx[6],tempy[6]);

lines.moveTo(tempx[3],tempy[3]);

lines.lineTo(tempx[7],tempy[7]);

_root.removeMovieClip("lines");

//上面的这一堆东西是用来把算出来的立方体的点用线连起来~其实可以优化一下的

updateAfterEvent();

//更新一下

}

setInterval(r,5);

//每隔5毫秒运行一次函数r()

终于写完了哈

" /> 写的不好~请见谅`~再发一次效果,嘿嘿

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值