DisplayObject.rotation与trig函数不匹配

时间:2010-03-19 20:08:54

标签: flash actionscript-3 animation

我正在尝试标记动画饼图,并且我在旋转对象与三角定位对象对齐方面遇到了很多麻烦。因此,例如,如果我有一个饼图,其中间是角度θ并且已在补间中旋转了n度,然后我尝试使用如下代码定位标签:

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

标签通常不与饼图切片的中心对齐。由于我也大量放大饼图,因此错误变得非常重要,以至于它偶尔会导致标签完全错过饼图。错误似乎相对不可预测,它看起来很像舍入错误,但我没有看到任何明显的舍入(trig函数计算到十个左右的小数位,这应该绰绰有余)。 / p>

如何才能正确定位这些标签?

1 个答案:

答案 0 :(得分:0)

rx = xcos @ + ysin @

ry = -xsin @ + ycos @

如果你从(0,1)转动,那么:

rx = sin @

ry = cos @

那么你应该使用sin作为x和cos作为y,而不是cos的x和sin作为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;