Показать сообщение отдельно
Старый 23.05.2008, 09:58
Alex_beginner вне форума Посмотреть профиль Отправить личное сообщение для Alex_beginner Найти все сообщения от Alex_beginner
  № 17  
Ответить с цитированием
Alex_beginner
 
Аватар для Alex_beginner

Регистрация: May 2008
Сообщений: 476
iNils прав! Делается это с помощью класса Матрих и установки свойства клипа transform.matrix.

Как трансформить:

Matrix это Object со свойствами {a,b,c,d,tx,ty}

Расчет новых точек клипа по старым осуществляется по формулкам:

Xновый=а*Xстарый+с*Yстарый+tx
Yновый=b*Xстарый+d*Yстарый+ty

Т.е. задаешь сначала матрицу Matrix(полностью заполнив ее коэффициентами) и присваиваешь ссылку на нее свойству клипа transform.matrix и эге.

Но есть маленькая загвозтка. Ведь Вам нужно чтобы трансформации клипа происходили таким образом, чтоб средние по ширине координаты края клипа (конец палочки) совпадали с координатами движущейся мыши. Сие нудо реализовать расчетом системы вышепредставленных уравнений с нахождением коэффициентов a,b,c,d,tx,ty. Нетрудно догадаться что нужно подставлять вместо Xновый,Yновый. Т.е. имея три точки клипа Вы можете получить 2 системы уравнений. Одну для X из трех уравнений с 3-мя неизвестными. Одну для Y также с тремя уравнениями и тремя неизвестными. Решение этих уравнеий великолепно и просто получается методом Гаусса.

На этом все. Спасибо за внимание.