Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 05.10.2006, 16:07
DarkChris вне форума Посмотреть профиль Отправить личное сообщение для DarkChris Найти все сообщения от DarkChris
  № 1  
Ответить с цитированием
DarkChris

Регистрация: Jun 2004
Адрес: Одесса
Сообщений: 93
Отправить сообщение для DarkChris с помощью ICQ
По умолчанию Как вычислить координаты точки ????

Вот бьюсь с простой геометрической задачей уже пару дней И не могу найти решение Может с вычислениями ошибка Подскажите плиз...
Смотрим на рисунки:
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) - смещение по Х


так вот если я подставляю
Код:
_parent._x+=b;
_parent._y+=c;
то смещение неверное ума не приложу в чем ошибка математически вроде все верно .

На рисунках:
синяя точка (т.А) - точка до растяжения клипа, зеленая (т.С) - после)
т.А - центр клипа локальные координаты (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, когда я тяну мышкой кнопку сторона неподвижна (относительно которой идет трансформация), а клип при трансформации прыгает туда-сюда.
Изображения
Тип файла: jpg qwest1.jpg (27.7 Кб, 25 просмотров)
Тип файла: jpg qwest2.jpg (31.9 Кб, 19 просмотров)


Последний раз редактировалось DarkChris; 05.10.2006 в 17:04.
Старый 05.10.2006, 16:13
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 2  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
А где, собственно, вопрос, что требуется?

Старый 05.10.2006, 16:28
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 3  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Есть метод localToGlobal, который вам поможет.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 05.10.2006, 16:35
DarkChris вне форума Посмотреть профиль Отправить личное сообщение для DarkChris Найти все сообщения от DarkChris
  № 4  
Ответить с цитированием
DarkChris

Регистрация: Jun 2004
Адрес: Одесса
Сообщений: 93
Отправить сообщение для DarkChris с помощью ICQ
вот код кнопки:
Код:
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;
}

Старый 05.10.2006, 16:41
DarkChris вне форума Посмотреть профиль Отправить личное сообщение для DarkChris Найти все сообщения от DarkChris
  № 5  
Ответить с цитированием
DarkChris

Регистрация: Jun 2004
Адрес: Одесса
Сообщений: 93
Отправить сообщение для DarkChris с помощью ICQ
не понимаю чем мне поможет localToGlobal если я к глобальным координатам плюсую смещение на Н пикселей а не локальные координаты точки

Старый 05.10.2006, 16:47
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 6  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
1. Надо задавать вопрос нормально. А не в середине текста.
2. Использовать знаки препинания, иначе читать вобще не возможно.
Перефразируйте свой вопрос без математических выкладок.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 05.10.2006, 17:02
DarkChris вне форума Посмотреть профиль Отправить личное сообщение для DarkChris Найти все сообщения от DarkChris
  № 7  
Ответить с цитированием
DarkChris

Регистрация: Jun 2004
Адрес: Одесса
Сообщений: 93
Отправить сообщение для DarkChris с помощью ICQ
Я дал код и математическое описание алгоритма (помоемому вполне понятное для тех кто изучал геометрию в школе). И прошу помочь мне найти ошибку. Если это невозможно подскажите пожалуйста другой способ реализации этой задачи (если таковой имеется). Пунктуацию подправил, вопросы находятся в конце описания проблеммы.


Последний раз редактировалось DarkChris; 05.10.2006 в 17:12.
Старый 05.10.2006, 17:07
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 8  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Эх... вы можете объяснить, что вы хотите получить?
Узнать координаты точки после трансформации?
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 05.10.2006, 17:33
DarkChris вне форума Посмотреть профиль Отправить личное сообщение для DarkChris Найти все сообщения от DarkChris
  № 9  
Ответить с цитированием
DarkChris

Регистрация: Jun 2004
Адрес: Одесса
Сообщений: 93
Отправить сообщение для DarkChris с помощью ICQ
Да вы совершенно правильно поняли идею...Мне нужны именно координаты точки после трансформации - на рисунке qwest2.jpg точка "С" . Она является центром мувиклипа после трансформации и смещения.


Последний раз редактировалось DarkChris; 05.10.2006 в 18:08.
Старый 05.10.2006, 17:48
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 10  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: 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;
}
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Создать новую тему Ответ Часовой пояс GMT +4, время: 14:05.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 14:05.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.