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

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

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

Регистрация: Feb 2012
Сообщений: 36
По умолчанию Поворот объекта вокруг точки с помощью тригонометрических функций

Господа, есть ли способ повернуть объект с помощью свойства rotation, а затем вычислить его х и у координаты как будто бы он был повернут вокруг какой то точки?


Последний раз редактировалось Den_root; 13.02.2012 в 01:53.
Старый 13.02.2012, 01:23
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 2  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
http://flasher.ru/forum/blog.php?b=378
__________________
Reality.getBounds(this);

Старый 13.02.2012, 01:58
Den_root вне форума Посмотреть профиль Отправить личное сообщение для Den_root Найти все сообщения от Den_root
  № 3  
Ответить с цитированием
Den_root

Регистрация: Feb 2012
Сообщений: 36
Цитата:
Сообщение от Wolsh Посмотреть сообщение
Не, там предлагаются матрицы и какой то совершенно костыльный способ, а без них можно обойтись?


Последний раз редактировалось Den_root; 13.02.2012 в 02:19.
Старый 13.02.2012, 02:46
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 4  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
А так?
http://flasher.ru/forum/showthread.php?t=152684

Добавлено через 8 минут
http://flasher.ru/forum/showthread.php?t=146622
__________________
Reality.getBounds(this);

Старый 14.02.2012, 22:30
Den_root вне форума Посмотреть профиль Отправить личное сообщение для Den_root Найти все сообщения от Den_root
  № 5  
Ответить с цитированием
Den_root

Регистрация: Feb 2012
Сообщений: 36
Использовал вашу функцию из второй темы- увы но при множественном вращении объект постепенно смещается к точке вращения. С матрицами - погрешности, без них - тоже. Это заговор какой то!
Код AS3:
public static function pointRotate (object:DisplayObject, center:Point, angle:Number) : void
		{
		var r:Number = angle * Math.PI / 180;
		var s:Number = Math.sin(r);
		var c:Number = Math.cos(r);
		var dX:Number = object.x - center.x;
		var dY:Number = object.y - center.y;
 
 
 
		object.rotation += angle;
		object.x = center.x + dX * c - dY * s;
		object.y = center.y + dX * s + dY * c;
		}

Старый 14.02.2012, 23:03
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 6  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Нет, почему заговор)) Там такой алгоритм, она не для множественного вращения, а для одного поворота. Перед другим поворотом надо возвращать (в первой теме, про "центр", та же история была - просто я писал эти функции для проекта, где нужно было вот так)) Для динамического поворота надо возвращать объект обратно и задавать новый угол. Возврат в дефолт как раз добавлен в теме про центральное вращение. Ну объедините как-нибудь)))

Добавлено через 6 минут
Вы происходящее представьте? Когда объект уже смещен и повернут, а Вы пытаетесь его снова повернуть вокруг той же точки – для него эта точка уже в другом месте, его система координат повернута и смещена относительно той точки.
__________________
Reality.getBounds(this);

Старый 15.02.2012, 00:12
Den_root вне форума Посмотреть профиль Отправить личное сообщение для Den_root Найти все сообщения от Den_root
  № 7  
Ответить с цитированием
Den_root

Регистрация: Feb 2012
Сообщений: 36
То есть если:
1. Создали объект
2. Повернули его
3.Переместили его в точку Х
Для корректного вращения нужно:
1.Обнулить вращение
2.Переместить объект в кординаты на момент создания
3.Повернуть на новый, желаемый угол
4. Вернуть его в точку Х

Я вас правильно понял?

Старый 15.02.2012, 00:26
TanaTiX вне форума Посмотреть профиль Отправить личное сообщение для TanaTiX Найти все сообщения от TanaTiX
  № 8  
Ответить с цитированием
TanaTiX
 
Аватар для TanaTiX

блогер
Регистрация: Feb 2008
Сообщений: 1,453
Записей в блоге: 4
Цитата:
Честно говорю - выйдет что-то ужасное
Есть более достойная альтернатива помимо уже озвученных? С удовольствием взглянул бы на реализацию.
__________________
Ну все, теперь Забава м-о-я.
Гы-гы, а корабль мой!

Старый 15.02.2012, 00:28
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 9  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Цитата:
4. Вернуть его в точку Х
Нет. Переместить в новую точку, естественно.
__________________
Reality.getBounds(this);

Старый 15.02.2012, 01:04
PlutDem вне форума Посмотреть профиль Отправить личное сообщение для PlutDem Найти все сообщения от PlutDem
  № 10  
Ответить с цитированием
PlutDem
 
Аватар для PlutDem

Регистрация: Feb 2012
Сообщений: 212
В таком случае, новой точкой будет (координаты начального положения с новым вращением)+(разница координат текущего положения объекта с нулевым вращением между координатами начального положения)?

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

Теги
rotation
Опции темы
Опции просмотра

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

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


 


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


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