2013-09-03 1 views
2

Я играю с анимацией тела в AS3. Я сделал тело со всеми частями (исключая пальцы) и сделал XML с «скелетом». XML получил экземпляры каждой части и место сочленения следующей части. Я работаю с кардинальными координатами (x, y), и тело перемещается, когда я поворачиваю часть и снова пересчитываю все ссылки (каждая часть в каждой артикуляции).AS3 Полярная координата из декартовой координаты

Однако это потребует некоторого расчета каждой маленькой модификации тела, поэтому теперь я оптимизирую его. Что касается конструкции x, y проще, поэтому, когда экземпляр body создается, класс перестраивает XML-преобразование координат в полярную систему (r, t), как это («Quadro» - это узел с координатами):

dx = [email protected]; 
dy = [email protected]; 
[email protected] = Math.sqrt(Math.pow(dx,2) + Math.pow(dy,2)); 
[email protected] = (dy>0)? Math.asin(dx/[email protected]) : Math.acos(dy/[email protected]); 

Я сделал некоторые изменения, чтобы заставить его работать, но в списке один квадрант всегда ошибается! В этом случае верхний левый неправильный. Шея и голова должны находиться в этом месте, и они находятся в правом верхнем углу (зеркально).

Любые советы по правильному преобразованию в AS3?

ответ

2

Попытка использовать это:

[email protected]=Math.atan2(dy,dx); 

От Wikipedia:

Декартовы координаты х и у могут быть преобразованы в полярных координатах г и φ с г ≥ 0 и φ в интервале (-π, π] по:

enter image description here
enter image description here

+0

Да! Я только что сделал коррекцию x, y позиционирования (она была инвертирована), чтобы отметить как правильный ответ. – Gustavo

+0

@GustavoPinent, я в замешательстве! первым аргументом должна быть координата y точки: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/Math.html#atan2() –

+0

Ну, я не лучший, чтобы объяснить, но он работает с обратным порядком или координатами. Я думаю, это потому, что класс работает с вращением в градусах вместе с преобразованием, а градусы - по часовой стрелке. Таким образом, возникает две ошибки, приводящие к правильному результату. Я буду исследовать, поэтому формула может быть использована правильно. – Gustavo

Смежные вопросы