Forked from: bigfish's pv3D cube diff:42 Lorenz Attractor rotation, forked from: pv3D cube advancedhand.. forked:1favorite:0lines:66license : All rights reserved modified : 2009-05-07 00:20:19 Embed Tweet // forked from bigfish's pv3D cube // forked from bigfish's pv3D basic materials // forked from bigfish's pv3Dapp package { import flash.display.Sprite; import flash.events.Event; import org.papervision3d.view.Viewport3D; import org.papervision3d.scenes.Scene3D; import org.papervision3d.cameras.Camera3D; import org.papervision3d.materials.WireframeMaterial; import org.papervision3d.materials.utils.*; import org.papervision3d.objects.primitives.Cube; import org.papervision3d.render.BasicRenderEngine; public class AssetMaterial extends Sprite { private var viewport:Viewport3D; private var scene:Scene3D; private var camera:Camera3D; private var material:WireframeMaterial; private var primitive:Cube; private var renderer:BasicRenderEngine; private var a:int; private var b:int; private var c:int; public function AssetMaterial() { init(); } private function init():void { this.stage.frameRate=10; viewport = new Viewport3D(550, 400, false, true); addChild(viewport); scene = new Scene3D; camera = new Camera3D; renderer = new BasicRenderEngine; material = new WireframeMaterial(0X00AAFF, 100, 4); material.doubleSided = true; material.smooth = true; primitive = new Cube(new MaterialsList({all: material}), 500, 500, 500, 10, 10, 10); scene.addChild(primitive); addEventListener(Event.ENTER_FRAME, onEnterFrame); a = Math.random()*100+1; b = Math.random()*100+1; c = Math.random()*100+1; primitive.rotationX = Math.random()*100+1; primitive.rotationY = Math.random()*100+1; primitive.rotationZ = Math.random()*100+1; primitive.x = Math.random()*100+1; primitive.y = Math.random()*100+1; primitive.z = Math.random()*100+1; } private function onEnterFrame(event:Event):void { var nX:int= a*(primitive.rotationY-primitive.rotationX); var nY:int = primitive.rotationX*(c-primitive.rotationZ)-primitive.rotationY; var nZ:int = primitive.rotationX*primitive.rotationY-b*primitive.rotationZ; primitive.rotationX += nX%360; primitive.rotationY += nY%360; primitive.rotationZ += nZ%360; nX = a*(primitive.y-primitive.x); nY = primitive.x*(c-primitive.z)-primitive.y; nZ = primitive.x*primitive.y-b*primitive.z; // some sort of fail limiter :( primitive.x+= nX; primitive.y+= nY; primitive.z+= nZ; primitive.x %= 600; primitive.y %= 600; primitive.z %= 600; renderer.renderScene(scene, camera, viewport); } } } Code Fullscreen Preview Fullscreen attractor cube lorenz pv3d spin rotationX rotationY rotationZ material viewport scene smooth BasicRenderEngine Viewport3D doubleSided renderScene addEventListener addChild Math.random Event.ENTER_FRAME Event Sprite int sort new page view favorite forked pv788 Lorenz Attractor Cube advancedhandkeytarfingerwizard forked:0 favorite:0lines:94 (diff:43) tag: attractor cube lorenz pv3d rotate spin tween