![]() |
Алгоритм поворота объекта маркером относительно точки
Здравствуйте уважаемые as программисты. Такой вопрос: какой обычно применяют алгоритм поворота объекта угловым маркером вокруг заданной точки, как например это реализовано в инструменте Free Transform Tool .fla файла?
|
если я правильно понял.
mtx и mty точка относительно которой вращать angle угол в радианнах Код AS3:
|
Вот такое надо реализовать
http://xmages.net/storage/10/1/0/5/0...d/1df0b51c.jpg если бы точка трансформации стояла в центре - то квадрат вращался бы вокруг своей оси |
Может поможет такой вариант. Тут создаётся прямоугольник, который постоянно крутиться, а клик по сцене - задаёт новую точку вокруг которой он будет крутится.
Код AS3:
|
Алгоритм прост.
Код AS3:
|
Wolsh, то же, что и в 2, только хуже. Например из-за Math.asin(dX / dg)
|
Согласен. Тогда так
Код AS3:
|
А можете пожалуйста прокомментировать? Я практик, мне надо, очень надо :umnik2:
|
Ваш ВУЗ гуманитарный? Матрицы поворота должны на 2-м курсе проходить.
А так - гуглить преобразование поворота, матрицы поворота, аффинные преобразования. Тут только аккуратное их применение. Начала аналита ж. |
Цитата:
Добавлено через 2 часа 8 минут Мне как бы надо что бы для поворота надо было градус курсора относительно Point, т.е. градус объекта равен градус курсора. А в ваших примерах используется значение на которое изменяется градус объекта, это не подходит для реализации такого поворота. |
Позвольте оффтопик: FieryWall, ради всего святого, полужирное начертание шрифта не предназначено для набора абзацев.
|
Извинтиляюсь :D
|
Скажите, а с текстом такое можно делать и если нужно сделать анимацию перемещения при нажатии на кнопку, причем две разные кнопки и перемещение в две разные точки то как? или даже при нажатии на одну кнопку делать допустим размытие, а при нажатии на другую уменьшение и перемещение
|
Если текст не динамичен то его можно зарекомендовать как Мувик и проделать с ним подобное :confused:
Добавлено через 5 минут Цитата:
|
А почему вам не подошел этот способ?
obj-объект который нужно повернуть point-относительно какой точки angle-на сколько градусов, относительно текущего поворота. Код AS3:
|
Может оффтопик:
Почему бы не использовать класс TransformTool от senocular. Это если важен только результат, а не сам принцип... просто сам недавно сталкивался с подобной проблемой, используя этот можно в Runtime изменять объект как в стандартом Flash редакторе. А для поворота при нажатии кнопки идеально подходит TweenLite. Еще раз извините, если это офф-топ, и тут главное - реализовать своими руками))) |
Цитата:
|
Цитата:
А если динамический, если текст строки формируется программно? |
чтобы динамическое текстовое поле можно было вращать, надо заэмбедить в него шрифт.
Цитата:
Надо передавать в эту функцию изменение угла, а не сам угол. Можно сделать проще. При размещении объекта на сцене ставить его в спрайте-оболочке. При необходимости повернуть фигуру относительно некоторой точки сдвигаем туда этот спрайт и параллельно фигуру внутри спрайта (чтобы фигура осталась на месте). После этого привязываем rotation этого спрайта к поступающему углу и все прекрасно крутится. |
Как раз поступающий угол и тяжело выяснить :wacko:
|
а откуда он поступает?
рукоятку крутите? |
Именно, и градус объекта относительно точки должен быть равен градусу курсора относительно той же точки
|
что-то мне подсказывает, что все идет к Math.atan2()
|
а саму рукоятку сделать-то удалось?
потому что если удалось, то снимать угол можно с нее а если не удалось, то решите сначала эту задачу - когда сможете показать рукоятку, угол получите автоматически |
Собственно такой код (демо) с некоторыми результатами (отдельное спасибо другим as-программистам:drinks:). Все что осталось - корректный поворот вокруг точки на заданном радиусе и указать точку поворота самого object в его центре:
Код AS3:
Цитата:
|
"/ (modul01 * modul02)" - не надо, если длины катетов вырастут в одинаковое число раз, то углы в тр-ке не изменятся.
И я таки считаю, что нефик студенту помогать, если что из математики и пригодится после армии, то это вот эта геометрия. И почему тупо от прошлого угла новый угол не отнимать? Вродь попроще. Код AS3:
|
Всем опять привет!!
Решил я єту задачу, вот такая значит там основная система: Объект является чилдом спрайта который в свою очередь является чилдом еще одного спрайта, точка поворота - центр основного спрайта, и вложенный спрайт с объектом вращается только относительно ее. Объект в дополнительном спрайте, на случай если с ним нужно что нибудь сделать, типа Трансформации. Может возникнуть проблема относительно переноса точки поворота, в этом случаи нужно на момент перетаскивания точки сохранить размещение вложенного спрайта в глобальном контейнере (относительно основной оси координат) с помощью localToGlobal, и возвращать его значение уже в главном контейнере с помощью globalToLocal соответственно. Простите что нету кода, с классами я еще работать не научился и весь код у меня в одном классе, а там очень много не по теме. Всем спасибо за помощ :drinks: |
Возможно оффтоп, но тема наиболее подходящая, не хочу создавать отдельную для одного вопроса.
Использую TransformTool для поворота объектов в редакторе на любой угол. Также мне нужно вращать отдельной кнопкой по 90 градусов (относительно центра). Пробую задавать напрямую объекту rotation но тогда сетка TransformTool "съезжает". Код AS3:
Как лучше сделать? Может вызывать TransformTool.toolMatrix.rotate()? |
| Часовой пояс GMT +4, время: 01:05. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.