package hype.extended.layout { import flashx.textLayout.formats.Float; import hype.framework.layout.AbstractLayout; import hype.framework.layout.ILayout; import flash.geom.Point; public class LorenzAttractorLayout extends AbstractLayout implements ILayout { private var theX:Number = 1.0; private var theY:Number = 1.0; private var theZ:Number = 1.0; private var a:Number = 10; private var b:Number = 28; private var c:Number = 8/3; //our delta value private var d:Number = 0.01; private var useY:String; public function LorenzAttractorLayout(yUsage:String = 'y') { // constructor code useY = yUsage; } public function getNextPoint():Point { var x0:Number = theX + d * a*(theY-theX); var y0:Number = theY + d * (b*theX-theY-theX*theZ); var z0:Number = theZ + d * (theX*theY-c*theZ); theX = x0; theY = y0; theZ = z0; var pt:Point = new Point(); pt.x = theX * 8 + 250; if (useY == 'z') { pt.y = theZ * 5 + 50; } else { pt.y = theY * 8 + 150; } return pt; } } }