package org.Geometria{ import flash.display.*; import flash.utils.*; import flash.geom.Point; import flash.events.*; public class Rhodonea extends MovieClip { private var R:Number; private var omega:Number; private var teta:Number=0; private var old,current:Point=null; private var n,d:Number; private var lineColor:uint=0; public function Rhodonea(R_:Number,n_:Number,d_:Number) { R=R_; n=n_; d=d_; omega=n_/d_; } public function disegna():void { addEventListener(Event.ENTER_FRAME,disegna_); } public function stoppa():void { removeEventListener(Event.ENTER_FRAME,disegna_); } public function setColor(col:uint){ lineColor=col; } private function disegna_(event:Event):void { current=new Point(); var effe:Number=f(teta); current.x=effe*Math.cos(teta); current.y=effe*Math.sin(teta); if (old!=null) { var linea:Shape=new Shape(); linea.graphics.lineStyle(0,lineColor); linea.graphics.moveTo(old.x,old.y); linea.graphics.lineTo(current.x,current.y); addChild(linea); } old=current; teta=(teta+0.1); if (teta>(Math.PI*d*n)+1) { removeEventListener(Event.ENTER_FRAME,disegna_); } current=null; } private function f(ics:Number):Number { return R * Math.cos(omega * teta); } } }