2010-03-19 1 views
1

Я пытаюсь обозначить анимированную круговую диаграмму, и у меня возникли проблемы с поворотными объектами, чтобы выстроить их с помощью тригонометрически расположенных объектов. Так, например, если у меня есть кусок пирога, что это середина угол тета и повернута п градусов в анимации, а затем я пытаюсь поместить ярлык с кодом, как это:DisplayObject.rotation не соответствует функции триггера

label.x = center.x + Math.cos((theta + n)/180 * Math.PI) * radius; 
label.y = center.y + Math.sin((theta + n)/180 * Math.PI) * radius; 

этикетка часто не выровнены с центром среза пирога. Поскольку я также увеличиваю масштаб круговой диаграммы, ошибка становится настолько значительной, что она иногда заставляет метку пропускать кусочек пирога в целом. Ошибка кажется относительно непредсказуемой, и она очень похожа на ошибку округления, но я не вижу никакого очевидного округления (триггерные функции оценивают десяти десятичных знаков, что должно быть здесь более чем достаточно).

Как я могу правильно установить эти ярлыки?

+0

В качестве примечания: просто смещение меток вокруг с использованием вращения также не очень хорошо работает, потому что я снова ударил проблему, когда попытаюсь написать алгоритм, чтобы предотвратить перекрытие меток. Argh! – futuraprime

+0

theta + n - вращение части пирога вокруг центра круговой диаграммы? – jestro

+0

theta - это срез части пирога. (Итак, если первая часть представляла 25%, то она была бы равна 45 градусам, а если бы вторая часть представляла 50%, ее тэта составляла бы 180 градусов.) Затем весь пирог поворачивается анимацией на n градусов. – futuraprime

ответ

0

ге = xcos @ + ysin @

гу = -xsin @ + ycos @

Если вы вращающиеся из (0,1), то:

гх = грех @

ry = cos @

Итак, вместо cos для x и sin для y выше вы должны использовать sin для x и cos для y.

label.x = center.x + Math.sin((theta + n) * Math.PI/180) * radius; 
label.y = center.y + Math.cos((theta + n) * Math.PI/180) * radius; 
+1

Все эти разговоры о «Math.PIE» заставляют меня голодать :) –

+0

Насколько я могу судить, моя математика правильная. Я, по крайней мере, использую правильные тригонометрические функции. – futuraprime

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