Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Поворот объекта вокруг точки с помощью тригонометрических функций (http://www.flasher.ru/forum/showthread.php?t=175235)

Den_root 13.02.2012 01:00

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

Wolsh 13.02.2012 01:23

http://flasher.ru/forum/blog.php?b=378

Den_root 13.02.2012 01:58

Цитата:

Сообщение от Wolsh (Сообщение 1062451)

Не, там предлагаются матрицы и какой то совершенно костыльный способ, а без них можно обойтись?

Wolsh 13.02.2012 02:46

А так?
http://flasher.ru/forum/showthread.php?t=152684

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

Den_root 14.02.2012 22:30

Использовал вашу функцию из второй темы- увы но при множественном вращении объект постепенно смещается к точке вращения. С матрицами - погрешности, без них - тоже. Это заговор какой то! :D
Код 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;
                }


Wolsh 14.02.2012 23:03

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

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

Den_root 15.02.2012 00:12

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

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

TanaTiX 15.02.2012 00:26

Цитата:

Честно говорю - выйдет что-то ужасное
Есть более достойная альтернатива помимо уже озвученных? С удовольствием взглянул бы на реализацию.

Wolsh 15.02.2012 00:28

Цитата:

4. Вернуть его в точку Х
Нет. Переместить в новую точку, естественно.

PlutDem 15.02.2012 01:04

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


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

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