polytestの技術的な説明
//位置とUV値からMatrixを求める
public function GetMatrixFromPosUV(pos1:Point,pos2:Point,pos3:Point,uv1:Point,uv2:Point,uv3:Point) : Matrix {
var mt:Matrix=new Matrix();
//
var x1:Number=pos1.x-pos3.x;
var y1:Number=pos1.y-pos3.y;
var x2:Number=pos2.x-pos3.x;
var y2:Number=pos2.y-pos3.y;
var u1:Number=uv1.x-uv3.x;
var v1:Number=uv1.y-uv3.y;
var u2:Number=uv2.x-uv3.x;
var v2:Number=uv2.y-uv3.y;
var tx:Number=pos3.x;
var ty:Number=pos3.y;
var tu:Number=uv3.x;
var tv:Number=uv3.y;
//分母計算
var dd:Number=((u1*v2)-(u2*v1));
if(dd<0.0001 && dd>-0.0001){
//分母が小さすぎる場合
mt.a=10000.0;
mt.b=0;
mt.c=0;
mt.d=10000.0;
mt.tx=tu;
mt.ty=tv;
} else {
//計算可能
var inv_dd:Number=1.0/dd;
var A:Number =((x1*v2)-(x2*v1))*inv_dd;
var B:Number =((y1*v2)-(y2*v1))*inv_dd;
var C:Number =((x2*u1)-(x1*u2))*inv_dd;
var D:Number =((y2*u1)-(y1*u2))*inv_dd;
var E:Number =-((A*tu)+(C*tv)-tx);
var F:Number =-((B*tu)+(D*tv)-ty);
mt.a =A;
mt.b =B;
mt.c =C;
mt.d =D;
mt.tx=E;
mt.ty=F;
}
return mt;
}
----------------------------------------------