Оформил в виде AS3-класса, более-менее удобного для применения.
Принцип такой: вы знаете параметры объекта в некоторых точках, и нужно
аппроксимировать параметры в промежуточных точках.
Например, дизайнер дал вам раскадровку, где объект в нескольких
положениях находится, вы просто нумеруете положения, выписываете на
бумажку x, y, alpha, xscale, yscale, ..., запихиваете известные
значения в объект LagrangeApproximator, и запрашиваете в произвольной
точке.
Пример использования тоже в архиве. Там видно, что в некоторых
ситуациях полином Лагранжа дает нежелательные значения. Приходится
увеличивать количество опорных точек, додумывая их значения за
пределами известных значений.
Чтобы удобнее было проверять, какие же значения будут выдаваться, есть
метод построения простого графика.
Ай молодчага, не поленился, причесал, выложил... боярин!
Рост
Здесь можно такой же подход применить.
"вспучивание" плитки задается несколькими точками. из координаты
курсора и текущего состояния ряда плиток определяется ее "координата"
в ряду плиток (нецелочисленная). По ней вычисляются новые значения
масштаба плиточек, они масштабируются, и выкладываются слева направо с
соблюдением равного интервала.
"вспучивание" плитки задается несколькими точками. из координаты
--
С уважением, Скорик Андрей. andrew...@gmail.com
:) ну я имел ввиду поглядеть на алгоритм и может что-то наведет на
мысль. если отбросить все лейауты, визуализации и тд..смотреть только
на то, что действительно отвечает за сам дисторшн. а именно класс
FisheyeDistortion там меньше 100 строк кода.
/** @inheritDoc */
protected override function xDistort(x:Number):Number
{
return fisheye(x, layoutAnchor.x, _dx, _b.left, _b.right);
}
private function fisheye(x:Number, a:Number, d:Number, min:Number,
max:Number) : Number
{
if (d == 0) return x;
var left:Boolean = x<a;
var v:Number, m:Number = (left ? a-min : max-a);
if ( m == 0 ) m = max-min;
v = Math.abs(x - a) / m;
v = (d+1)/(d+(1/v));
return (left?-1:1)*m*v + a;
Непонятно объяснил, я вечером лучше демку реализую, и запощу сюда.
--
http://ruslanshestopal.com | - freelance flash developer and a DJ