Hola que tal, tengo el siguiente codigo que lo que hace es una linea ondulada usando seno.
Ahora estoy limitado en cuanto la linea solo la pude hacer horizontal, a lo que quiero llegar, es pasar 2 puntos de coordenadas Xinicial, Xfinal, Yinicial, Yfinal y se dibuje la misma linea pero entre esos puntos y la verdad que no se me ocurre como hacer para la linea siga con la ondulacion.

Lo estoy trabajando con flex 3 y ActionScript 3

Código :

package
{
   import flash.display.*;
   import flash.events.TimerEvent;
   import flash.filters.BlurFilter;
   import flash.geom.*;
   import flash.utils.Timer;
   
   import mx.containers.Canvas;
   import mx.graphics.*;
   
   public class Linea extends Canvas
   {
      private var _clip:Canvas;
      private var iterador:Number;
      private var itera:Number;
      private var intervalo:Timer;
      private var incrementa:Boolean;
      private var filtro:Array;
      private var blurFiltro:BlurFilter;
      
      public function Linea()
      {
         super();
         _clip = new Canvas;
         _clip.width = 100;
         _clip.height = 100;         
         iterador = new Number(0);
         itera = new Number(40);
         intervalo = new Timer(10,0);
         incrementa = true;
         blurFiltro = new BlurFilter(3,3,2);
         filtro = new Array();
         filtro.push(blurFiltro);
         _clip.filters = filtro;
      }
      
      public function runOnda():void{
         intervalo.addEventListener(TimerEvent.TIMER,render);
         intervalo.start();
      }
      
      public function render(event:TimerEvent):void{
         var sinWavePosition:Number = 100;
         var sinWaveColor:uint = 0xFFFFFF;
         var waveMultiplier:Number = 10;
         var waveStretcher:Number = 10;
         var sinPosY:Number = 0;
         var cosPosY:Number = 0;
         
         var i:uint;
         if(iterador == 20){
            incrementa = false;
         }else if(iterador == 0){
            incrementa = true;
         }
         
         if(incrementa){
            iterador++;
         }else{
            iterador--;
         }
         
         if(itera<200)
            itera++;
         graphics.clear();
         //grafico la linea desde 100 hasta 200
         for(i = 100; i < 200; i++)
         {
            sinPosY = Math.sin((i+itera) / (waveStretcher+(iterador+4))) * waveMultiplier;
             
                 cosPosY = Math.cos((i+itera) / (waveStretcher+(iterador))) * waveMultiplier;
             
             
             
             graphics.beginFill(sinWaveColor);
             graphics.drawRect(i, sinWavePosition + sinPosY + cosPosY, 4, 2);
             graphics.endFill();
         }
      }
      
   }
}


Esa es mi clase Linea

Y a continuacion mi MXMLApplication

Código :

<?xml version="1.0" encoding="utf-8"?>
<mx:Application width="500" height="500" xmlns:mx="http://www.adobe.com/2006/mxml"  layout="absolute">
<mx:Button x="0" y="0" label="Button" buttonDown="main();" />

    <mx:Script>
      <![CDATA[
         import mx.containers.Panel;
         import mx.containers.Canvas;
         import flash.display.*;
         import mx.graphics.*;
         
         public var sp:Sprite;
         public var PanelCanvas:Canvas;
         public var onda:Linea;
         
         public function main():void{
            PanelCanvas = new Canvas();
            PanelCanvas.width = stage.stageWidth;
            PanelCanvas.height = stage.stageHeight;
            
            this.addChild(PanelCanvas);
            onda = new Linea();
            PanelCanvas.addChild(onda);
            onda.runOnda();
         }
      ]]>
   </mx:Script>
</mx:Application>


Uso un timer para darle un efecto de animación en la clase Linea. Alguien me puede dar una mano para hacer que haga lo mismo, pero con 2 pares de coordenas x,y?