zoukankan      html  css  js  c++  java
  • 矩阵基础知识(五)

    [SWF(backgroundColor = 0x0,width = 550,height = 400)]
    var sp:Sprite =new Sprite();
    addChild(sp);
    sp.x 
    = stage.stageWidth / 2;
    sp.y 
    = stage.stageHeight / 2;
    var ball:Sprite=new Sprite();
    sp.addChild(ball);
    ball.z 
    = 650;
    var speed:Number=10;

    var a = 10; trace(a=a*a,a/2,a);
    function createRect(com:Sprite,c:uint=0xff0000,w:Number=50,h:Number=40):Sprite
    {
        
    var mc:Sprite=new Sprite();
        mc.z 
    = 0;
        com.addChild(mc);
        mc.graphics.beginFill(c);
        mc.graphics.drawRect(
    -w/2,-h/2,w,h);
        
    return mc;
    }
    var ballR:Number = 200;
    var pics:Array = [];
    var numPics:Array = [1,6,10,12,10,6,1];
    setBall();
    function setBall():void
    {
        
    var rStep:Number=Math.PI/(numPics.length-1);
        for (var i:int=0; i<7; i++)
        {
            
    var tStep:Number = 2 * Math.PI / numPics[i];
            
    for (var j:int =0; j<numPics[i]; j++)
            {
                
    var image:Sprite = createRect(ball,0xFFFFFF * Math.random());
                image.width 
    = 80;
                image.height 
    = 60;
                image.x
    =ballR*Math.sin(i*rStep)*Math.cos(j*tStep+Math.PI/2);
                image.y=ballR*Math.cos(i*rStep);
                image.z
    =ballR*Math.sin(i*rStep)*Math.sin(j*tStep+Math.PI/2);
                image.transform.matrix3D.pointAt(new Vector3D(1,0,0),Vector3D.Z_AXIS,Vector3D.Y_AXIS);
                pics.push(image);
            }
        }
        setDepth();
    }
    addEventListener(Event.ENTER_FRAME,rotate);
    function setDepth():void
    {
        
    var depthArray:Array = [];
        
    var tempMatrix:Matrix3D = ball.transform.matrix3D.clone();
        
    for (var n:int=0; n<pics.length; n++)
        {
            
    //var tempVector3D:Vector3D = tempMatrix.deltaTransformVector(new Vector3D(pics[n].x,pics[n].y,pics[n].z));
            var tempVector3D:Vector3D = tempMatrix.transformVector(new Vector3D(pics[n].x,pics[n].y,pics[n].z));
            depthArray.push({d:tempVector3D.z,n:n});
        }
        depthArray.sortOn(
    "d",Array.NUMERIC|Array.DESCENDING);
        
    for (var k:int=0; k<depthArray.length; k++)
        {
            ball.setChildIndex(pics[depthArray[k].n],k);
        }
    }
    function rotate(e:Event):void
    {
        
    //ball.z = 0;
        //ball.transform.matrix3D.appendRotation(-sp.mouseX/100,Vector3D.Y_AXIS);
        //ball.transform.matrix3D.appendRotation(sp.mouseY/100,Vector3D.X_AXIS);
        ball.transform.matrix3D.prependRotation(-sp.mouseX/100,Vector3D.Y_AXIS);
        ball.transform.matrix3D.prependRotation(sp.mouseY/100,Vector3D.X_AXIS);
        if(ball.transform.matrix3D.position.x>100||ball.transform.matrix3D.position.x<-100)speed*=-1;
        ball.transform.matrix3D.appendTranslation(speed,
    0,0)
        
    //ball.z = 650;
        setDepth();
    }
  • 相关阅读:
    EasyUI
    TortoiseSVN常用批处理命令 分类: C# 2014-08-09 11:31 647人阅读 评论(1) 收藏
    TortoiseSVN常用批处理命令 分类: C# 2014-08-09 11:31 648人阅读 评论(1) 收藏
    C# IIS应用程序池辅助类 分类: C# Helper 2014-07-19 09:50 248人阅读 评论(0) 收藏
    C# IIS应用程序池辅助类 分类: C# Helper 2014-07-19 09:50 249人阅读 评论(0) 收藏
    博客目录 分类: 其他 2014-07-16 22:58 370人阅读 评论(0) 收藏
    angular学习笔记(三十一)-$location(1)
    一些总是记不住又容易搞混淆的东西(不断更新)
    angular内置过滤器-filter
    angular-resource版本差异问题
  • 原文地址:https://www.cnblogs.com/ddw1997/p/2164327.html
Copyright © 2011-2022 走看看