/**
* Copyright mutantleg ( http://wonderfl.net/user/mutantleg )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/AVYG
*/
package {
import flash.text.TextField;
import flash.events.Event;
import flash.display.Sprite;
public class FlashTest extends Sprite {
public function FlashTest() {
deb = new TextField();
deb.width=320;deb.height=240;
deb.mouseEnabled=false;
addChild(deb);
stage.addEventListener(Event.ENTER_FRAME, onEnter);
}//ctor
public var deb:TextField;
public function onEnter(e:Event):void
{
var mx:Number; var my:Number;
mx = stage.mouseX; my = stage.mouseY;
graphics.clear();
// graphics.lineStyle(2, 0);
// graphics.lineStyle(2, 0x808080);
var ax:Number; var ay:Number;
var bx:Number;
ax = 100;
bx = 300;
ay = 200;
graphics.drawCircle(ax,ay,4);
graphics.drawCircle(bx,ay,4);
graphics.moveTo(ax,ay);
graphics.lineTo(bx,ay);
var ix:Number;
if (mx <ax) {ix = ax;}
else if (mx >bx) { ix=bx;}
else {ix=mx;}
// graphics.drawCircle(ix,ay,8);
graphics.drawCircle(ix,ay-8,8);
var w:Number;
w = ax - mx;
w = ax -mx + (bx-ax)*0.5;
w = (ax -ix) + (bx-ax)*0.5;
w = ( (ax -ix) + (bx-ax)*0.5) / (bx-ax);
w = 0.5 - (Math.abs(w));
w*=2;
if (w<0.3) {w=0.3;}
deb.text = ""+w;
// graphics.moveTo(ix, ay+16); graphics.lineTo(ax,ay);
// graphics.moveTo(ix, ay+16); graphics.lineTo(bx,ay);
graphics.lineStyle(2, 0);
var kx:Number; var ky:Number;
var t:Number;
for(t=0;t<1;t+=0.1)
{
kx = getBez(ax,ix,bx, t);
// ky = getBez(ay,ay+32,ay,t );
ky = getBez(ay,ay+64*w,ay,t );
// kx = getBez2(ax,ix,ix,bx, t);
// ky = getBez2(ay,ay+32*w,ay+40*w,ay,t );
if (t==0){graphics.moveTo(kx,ky);}
graphics.lineTo(kx,ky);
}//nextt
var u:Number;
for(t=0;t<1;t+=0.1)
{
// kx = getBez2(ax,ix,ix,bx, t);
kx = ax+(bx-ax)*t;
// u = (bx-kx) / (bx-ax);
// ky = getBez2(ay,ay+16*w,ay+32*w,ay,t );
// ky = getBez2(ay,ay+16*w,ay+75*w,ay, u );
ky = getBez(ay,ay+64*w,ay,t );
// ky = getBez(ay,ay+64*w,ay,u );
graphics.drawCircle(kx,ky,12);
}//nextt
// t = (bx-ax) / (bx-ix);
t = (bx-ix) / (bx-ax);
deb.text=""+t;
// ky = getBez2(ay,ay+16*w,ay+75*w,ay,t );
ky = getBez(ay,ay+64*w,ay,t );
graphics.drawCircle(ix,ky-16,8);
}//onenter
public function getBez(x0:Number, x1:Number, x2:Number, t:Number):Number
{
var k0:Number; var k1:Number;
k0 = x0 + (x1 - x0) * t; k1 = x1 + (x2 - x1) * t;
return k0 + (k1 - k0) * t;
}//getbez
public function getBez2(x0:Number, x1:Number, x2:Number, x3:Number, t:Number):Number
{
var k0:Number; var k1:Number; var k2:Number;
k0 = x0 + (x1 - x0) * t; k1 = x1 + (x2 - x1) * t; k2 = x2 + (x3 - x2) * t;
k0 = k0 + (k1 - k0) * t; k1 = k1 + (k2 - k1) * t;
return k0 + (k1 - k0) * t;
}//getbez2
}//classend
}