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();
    }
  • 相关阅读:
    Docker——搭建SFTP
    PicGo——利用PicGo和GitHub搭建免费图床提供给Typecho使用
    GitHub——如何生成Personal access tokens
    leetcode——两数相加【二】
    每天一道面试题——请实现add(1,2)(3)【二】
    leetcode——两数之和【一】
    每天一道面试题——JavaScript的this指向【一】
    PHP——安装ThinkPHP框架报错
    项目代码 if/else 过多,引起程序猿口吐莲花
    JDK9-JDK14 相关新特性说明及使用
  • 原文地址:https://www.cnblogs.com/ddw1997/p/2164327.html
Copyright © 2011-2022 走看看