Papervision Math

Olá pessoal, decidi que para este novo tutorial eu iria fazer alguma coisa simples mesclando matemática e papervision.

Papervision Math

Clique aqui na imagem para visualizar a aplicação

Para demonstrar o movimento de translação nada melhor que usar um exemplo já conhecido, o movimento da lua sobre a terra.

Criaremos 1 arquivo (.fla) e um arquivo (.as) rotulado como ppv_math, definimos no flash como document class nosso ppv_math. Nosso código não possui nenhum mistério para quem já vem acompanhando nossos tutoriais de papervision com exceção das seguintes linhas de código.

lua.z = Math.cos(teta) * 150;
lua.x = Math.sin(teta) * 150;
lua.y = Math.sin(teta) * 50;

Para fazer a translação padrão utilizamos como eixos base nosso “x” e “z” para interargimos lateralmente e com profundidade, para dar um efeito mais interessante na aplicação decidi colocar uma interação no eixo “y” para a lua percorrer em um sentido diagonal. Experimente comentar um dos eixos para ver o que acontece. Agora segue o código na integra.

ppv_math.as

package {
    //flash
    import flash.display.Sprite;
    import flash.events.Event;
    //papervision
    import org.papervision3d.scenes.Scene3D;
    import org.papervision3d.view.Viewport3D;
    import org.papervision3d.cameras.Camera3D;
    import org.papervision3d.render.BasicRenderEngine;
    //Material
    import org.papervision3d.materials.BitmapAssetMaterial;
    // objeto
    import org.papervision3d.objects.primitives.Sphere;

    public class ppv_math extends Sprite {

        public var cena:Scene3D;
        public var viewport:Viewport3D;
        public var camera:Camera3D;
        public var renderer:BasicRenderEngine;
        //objetos Primitivos
        public var terra:Sphere;
        public var lua:Sphere;
        //Matemática
        public var alfa:Number = Math.PI / 180;
        public var teta:Number = 0;

        public function ppv_math () {
            Set ();
            Objetos ();
        }
        public function Set ():void {

            viewport = new Viewport3D(400,400);
            addChild (viewport);
            cena = new Scene3D ;
            renderer = new BasicRenderEngine ;
            camera = new Camera3D ;
            camera.zoom = 5;
            camera.focus = 200;

        }
        public function Objetos ():void {
            terra = new Sphere(new BitmapAssetMaterial("Earth"), 100, 15,15);
            lua = new Sphere(new BitmapAssetMaterial("moon"), 30, 15,15);

            cena.addChild(terra);
            cena.addChild(lua);

            addEventListener (Event.ENTER_FRAME,Loop,false, 0, true);

        }
        public function Loop (e:Event):void {
            teta += alfa;
            renderer.renderScene (cena, camera, viewport);
            terra.yaw(1);
            lua.yaw(1);

            lua.z = Math.cos(teta) * 150;
            lua.x = Math.sin(teta) * 150;
            lua.y = Math.sin(teta) * 50;

        }
    }
}

Com conceitos básicos é possível criar diversas coisas interessantes com o papervision, tentarei criar mais tutoriais cultos envolvendo a matemática. Até a próxima!

Anúncios

Tags: , , , , , , , ,

2 Respostas to “Papervision Math”

  1. Giulian Drimba Says:

    Muito bom, segue o meu exemplo: http://www.giuliandrimba.com/labs/projetos/earth/

    Abs,

    Obrigado por compartilhar.

  2. Setzer Wolf Says:

    Que bom que tenha gostado Giulian peço desculpas pela minha ausencia no meu proprio blog, estive num periodo muito ocupado mas agora ja deu uma aliviada no trabalho, e logo logo estarei migrando o blog para um dominio .com.br e voltarei com força total nos tutoriais^^ aguarde

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s


%d blogueiros gostam disto: