Я играю с анимацией тела в 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?
Да! Я только что сделал коррекцию x, y позиционирования (она была инвертирована), чтобы отметить как правильный ответ. – Gustavo
@GustavoPinent, я в замешательстве! первым аргументом должна быть координата y точки: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/Math.html#atan2() –
Ну, я не лучший, чтобы объяснить, но он работает с обратным порядком или координатами. Я думаю, это потому, что класс работает с вращением в градусах вместе с преобразованием, а градусы - по часовой стрелке. Таким образом, возникает две ошибки, приводящие к правильному результату. Я буду исследовать, поэтому формула может быть использована правильно. – Gustavo