Просмотр полной версии : Наложение Movie Clip на три точки при помощи матриц... как?
Eric Gurt
02.09.2007, 01:40
Здравствуйте, есть такой вопрос: как можно наложить Movie Clip (форма - прямоугольный треугольник с рисунком, 100 х 100 рх) на 3 точки при помощи матриц? Сам разобраться не смог, в поиске ответ не нашел.
Вообще ответ есть на http://flash-ripper.com/archives/000620.php , но исходник пропал с сервера :confused: .
http://silin.fatal.ru/#2,9
undefined
03.09.2007, 17:15
Может кому будет полезно. Сам столкнулся недавно с задачей деформирования мувика по 3 точкам, общие формулы такие:
если заданы 3 точки мувиКлипа (скажем 3 угловых точки) и надо найти преобразование переводящее 3 точки мувиКлипа (p1,p2,p3) в другие произвольные 3 точки (p1',p2',p3') то матрица преобразования будет
вот такой
http://img-fotki.yandex.ru/get/3/rcsphoto.0/0_30b6_2aedf02_L.jpg
остается только прикрутить полученную матрицу к мувику
var m:Matrix=new Matrix(a,b,c,d,tx,ty);
mc.transform.matrix=m;
не надо пугать людей такими формулами..:)
import flash.geom.*;
//растягиваем TL,TR,BL углы мувика
function transf(mc:MovieClip,tl:Point,tr:Point,bl:Point){
//размеры неискаженного мувика
mc.transform.matrix=new Matrix();
var w=mc._width;
var h=mc._height;
//параметры трансформации
var sx=(tr.x - tl.x)/w;
var skx=(bl.x - tl.x)/h;
var sy=(bl.y - tl.y)/h;
var sky=(tr.y - tl.y)/w;
var tx=tl.x;
var ty=tl.y;
mc.transform.matrix=new Matrix(sx,sky,skx,sy,tx,ty);
}
//пример:
transf(mc,new Point(0,10),new Point(300,20),new Point(20,200));
undefined
03.09.2007, 18:42
не надо пугать людей такими формулами.
хех, твой вариант частный случай моего, при условии что 3 точки мувика совпадают с его углами, а такое не всегда возможно, например при наложении текстур, текстурные координаты далеко не всегда образуют прямоугольный треугольник.
Насчет страха перед формулами - ну хз,вроде не такие они и страшные, их же запоминать не надо.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.