Форум 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)

PlutDem 16.02.2012 00:56

Wolsh
Спасибо, добрый человек! А можно ли задавать точку вращения по локальной системе координат объекта, а то сейчас при при перемещении объекта точка, то на месте остается? Уже попробовал center = object.localToGlobal(center); и разумеется получил пресловутое смещение.:mad:

Wolsh 16.02.2012 01:03

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

PlutDem 16.02.2012 01:18

Wolsh
Нет, нет:) Перемещалась вместе с ним. Т.е. сейчас если поставить точку вращения в центр объекта, то он будет вращаться вокруг своего центра, а если его после этого переместить, то точка вращения будет уже не в центре объекта и , соответственно, вращаться он будет уже по другому.

Wolsh 16.02.2012 01:35

Вам надо поспать.
Поворот объекта вокруг точки это любое изменение положения объекта, при котором данная точка объекта не меняет своего положения.

PlutDem 16.02.2012 01:42

Wolsh
Так я же говорю не про вращение, а про перемещение объекта! Если объект переместить на новые координаты, а точка останется на прежнем месте, то ее положение относительно объекта измениться и вращение будет происходить уже по другому.

fish_r 16.02.2012 02:14

Если я правильно понял вам нужно положить вращающийся объект в контейнер, а потом уже перемещайте контейнер с объектом как душе угодно будет.

Wolsh 16.02.2012 07:11

PlutDem, так что Вам мешает-то прибавить одно и то же число к Х объекта и Х точки, Y объекта и Y точки?
fish_r, для этого обязательно нужен контейнер?))

fish_r 16.02.2012 14:17

Цитата:

Сообщение от Wolsh (Сообщение 1063278)
PlutDem, так что Вам мешает-то прибавить одно и то же число к Х объекта и Х точки, Y объекта и Y точки?
fish_r, для этого обязательно нужен контейнер?))

Да, а решение то простое ), не подумал.

PlutDem 04.03.2012 02:25

Wolsh
А зачем здесь использовать Math.round? У себя отключил, так как из за округления были проблемы, но черт его знает, может оно необходимо?
Код AS3:

object.x = Math.round(center.x + dX0 * c0 - dY0 * s0);
object.y = Math.round(center.y + dX0 * s0 + dY0 * c0);


Wolsh 04.03.2012 09:55

Разница безусловно есть, было бы терпение подождать. Но если у вас не критично, возникает ли люфт со временем (количеством) поворотов, то можете убрать – из-за необходимости обращения к Math здесь тратятся драгоценные миллисекунды.
MikroAcse Координаты на сцене округляются не до целых, и вкупе с погрешностями тригонометрии возникает накапливаемый люфт.
В данном месте делается попытка восстановить начальные координаты объекта, при его свойстве rotation, равном нулю. Предполагается, что его координаты были целыми.
Все это важно для множественных поворотов. Для одного-двух несущественно.


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

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