![]() |
|
||||||||||
|
|||||
|
Вот бьюсь с простой геометрической задачей уже пару дней
И не могу найти решение Может с вычислениями ошибка Подскажите плиз... Смотрим на рисунки: qwest1. jpg 1. сам клип состоит из вложеных в него 3-х клипов Рамка,Четырехугольник и кнопка трансформации 2. при трансформации по горизотали клип увеличивается пропорционально относительно центра 3. находим смещение dX и смещаем клип, что бы казалось что четырехугольник тянется относительно стороны dX - найти не сложно, вопрос не в этом. При повороте клипа на угол alpha (рисунок qwest2.jpg) _parent._x +=dX работать не будет. В этом случае еще нужно смещать клип относительно координаты Y. Я провел напраляющую из т.А паралельно оси Х и опустил на нее перпендикуляр из т.С, в результате получил прямоугольный треугольник. В полученном треугольнике мне известны: 1. координаты т.А (х,у) 2 угол alpha - это угол поворота муви-клипа. Мне нужно найти т.С координаты(х,у) Из предыдущего рисунка (qwest1.jpg пункт 3.) видно что длина стороны треугольника a=dX; По теореме синусов вычисляем катеты треугольника (они и есть смещение стартовой точки по оси Х и оси У ): c/sin(alpha) = b/sin(gamma)=a/sin(beta) beta =90 sin(90)=1; c/sin(alpha)=a (где a=dX) c = dx*sin(alpha) - смещение по Y alpha = Math.PI*_parent._rotation/180 - в радианах gamma = 180 - (90+alpha)=90-alpha и в радианах = (Math.PI/2 - _parent._rotation)*Math.PI/180; b = dx*sin(gamma) - смещение по Х так вот если я подставляю то смещение неверное ума не приложу в чем ошибка математически вроде все верно . На рисунках: синяя точка (т.А) - точка до растяжения клипа, зеленая (т.С) - после) т.А - центр клипа локальные координаты (0,0) вот код кнопки: on (press) {
this._pW = _parent._x-_parent._width/2;
tW = _parent._x-this._x;
this.onMouseMove = function() {
if(_parent.Picture._width>30){
this._x=_parent._xmouse;
dtx = _parent.Ramka._width-_parent.Picture._width;
_parent.Picture._width = 2*this._x-dtx;
_parent.CreateRamka(0,0);
_parent.ScaleButtons();
tW = _parent._x - _parent._width/2;
dX = this._pW-tW;
Alpha = (Math.PI * _parent._rotation) / 180;
Gamma = (Math.PI/2 - _parent._rotation)*Math.PI/180;
trace (Math.sin(Alpha)+"<<<");
_parent._x += dX*Math.sin(Gamma);
_parent._y += dX*Math.sin(Alpha);
}
};
}
on (release, releaseOutside) {
this.onMouseMove = null;
}
1. почему смещение путем использования данного кода не правильное, ведь геометрическое решение проблеммы вроде верное 2. почему при не повернутом клипе альфа = 0, когда я тяну мышкой кнопку сторона неподвижна (относительно которой идет трансформация), а клип при трансформации прыгает туда-сюда. Последний раз редактировалось DarkChris; 05.10.2006 в 17:04. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
А где, собственно, вопрос, что требуется?
|
|
|||||
|
вот код кнопки:
on (press) {
this._pW = _parent._x-_parent._width/2;
tW = _parent._x-this._x;
this.onMouseMove = function() {
if(_parent.Picture._width>30){
this._x=_parent._xmouse;
dtx = _parent.Ramka._width-_parent.Picture._width;
_parent.Picture._width = 2*this._x-dtx;
_parent.CreateRamka(0,0);
_parent.ScaleButtons();
tW = _parent._x - _parent._width/2;
dX = this._pW-tW;
Alpha = (Math.PI * _parent._rotation) / 180;
Gamma = (Math.PI/2 - _parent._rotation)*Math.PI/180;
trace (Math.sin(Alpha)+"<<<");
_parent._x += dX*Math.sin(Gamma);
_parent._y += dX*Math.sin(Alpha);
}
};
}
on (release, releaseOutside) {
this.onMouseMove = null;
}
|
|
|||||
|
не понимаю чем мне поможет localToGlobal если я к глобальным координатам плюсую смещение на Н пикселей а не локальные координаты точки
![]() |
|
|||||
|
Я дал код и математическое описание алгоритма (помоемому вполне понятное для тех кто изучал геометрию в школе). И прошу помочь мне найти ошибку. Если это невозможно подскажите пожалуйста другой способ реализации этой задачи (если таковой имеется). Пунктуацию подправил, вопросы находятся в конце описания проблеммы.
Последний раз редактировалось DarkChris; 05.10.2006 в 17:12. |
|
|||||
|
Да вы совершенно правильно поняли идею...Мне нужны именно координаты точки после трансформации - на рисунке qwest2.jpg точка "С" . Она является центром мувиклипа после трансформации и смещения.
Последний раз редактировалось DarkChris; 05.10.2006 в 18:08. |
|
|||||
|
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
|
/*
Координаты точки одного мувиклипа, относительно другого.
mcA - клип, точку которого вычисляют
mcB - клип, относительно которого производится вычисление
point - точка в клипе mcA
*/
function positionPoint (mcA:MovieClip, mcB:MovieClip, point:Object):Object {
mcA.localToGlobal (point);
mcB.globalToLocal (point);
return point;
}
|
![]() |
![]() |
Часовой пояс GMT +4, время: 16:20. |
|
|
« Предыдущая тема | Следующая тема » |
|
|