Ну, допустим, увеличивать я научился, вполне может быть что этот алгоритм и не ошибется
pm.points - 4 точки красного четырехугольника
Код AS3:
// границы красного спрайта (четырехугольника) внутри сцены
var rect:Rectangle=transformSprite.getRect(FlexGlobals.topLevelApplication.stage);
var minHeight:Number=10000;
var minWidth:Number=10000;
var widthStartIndex:int;
var heightStartIndex:int;
// min height
if(Math.abs(pm.points[0].y-pm.points[3].y)<minHeight)
{
minHeight=Math.abs(pm.points[0].y-pm.points[3].y);
heightStartIndex=0;
}
if(Math.abs(pm.points[1].y-pm.points[2].y)<minHeight)
{
minHeight=Math.abs(pm.points[1].y-pm.points[2].y);
heightStartIndex=1;
}
if(Math.abs(pm.points[0].y-pm.points[2].y)<minHeight)
{
minHeight=Math.abs(pm.points[0].y-pm.points[2].y);
heightStartIndex=0;
}
if(Math.abs(pm.points[1].y-pm.points[3].y)<minHeight)
{
minHeight=Math.abs(pm.points[1].y-pm.points[3].y);
heightStartIndex=1;
}
// min width
if(Math.abs(pm.points[0].x-pm.points[1].x)<minWidth)
{
minWidth=Math.abs(pm.points[0].x-pm.points[1].x);
widthStartIndex=0;
}
if(Math.abs(pm.points[0].x-pm.points[2].x)<minWidth)
{
minWidth=Math.abs(pm.points[0].x-pm.points[2].x);
widthStartIndex=2;
}
if(Math.abs(pm.points[3].x-pm.points[2].x)<minWidth)
{
minWidth=Math.abs(pm.points[3].x-pm.points[2].x);
widthStartIndex=3;
}
if(Math.abs(pm.points[3].x-pm.points[1].x)<minWidth)
{
minWidth=Math.abs(pm.points[3].x-pm.points[1].x);
widthStartIndex=1;
}
trace("minWidth",minWidth,"minHeight",minHeight);
trace("widthStartIndex",widthStartIndex,"heightStartIndex",heightStartIndex);
var coeffWidth:Number=980/minWidth;
var coeffHeight:Number=540/minHeight;
if(coeffWidth>coeffHeight)
{
coeff=coeffWidth;
}
else
{
coeff=coeffHeight;
}
// позиционирование в лев верх экрана
pm.points[1].x-=rect.x;
pm.points[1].y-=rect.y;
pm.points[2].x-=rect.x;
pm.points[2].y-=rect.y;
pm.points[3].x-=rect.x;
pm.points[3].y-=rect.y;
pm.points[0].x-=rect.x;
pm.points[0].y-=rect.y;
// scale
pm.points[0].x=pm.points[0].x*coeff;
pm.points[0].y=pm.points[0].y*coeff;
pm.points[1].x=pm.points[1].x*coeff;
pm.points[1].y=pm.points[1].y*coeff;
pm.points[2].x=pm.points[2].x*coeff;
pm.points[2].y=pm.points[2].y*coeff;
pm.points[3].x=pm.points[3].x*coeff;
pm.points[3].y=pm.points[3].y*coeff;
Но вот как спозиционировать внутри экрана уже увеличенный я не знаю