【发布时间】:2025-12-27 02:40:07
【问题描述】:
我正在尝试为动画饼图添加标签,但在将旋转对象与三角定位对象对齐时遇到了很多麻烦。因此,例如,如果我有一个中间是角度 theta 并且在补间中旋转 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;
标签通常不与饼图的中心对齐。由于我也在大量放大饼图,因此错误变得足够严重,以至于有时会导致标签完全错过饼图。该错误似乎相对不可预测,并且看起来很像舍入错误,但我没有看到任何明显的舍入(三角函数计算到十位左右的小数位,这在这里应该绰绰有余)。
如何让这些标签正确定位?
【问题讨论】:
-
请注意:仅使用旋转移动标签也不能很好地工作,因为当我尝试编写算法以防止标签重叠时再次遇到问题。啊!
-
theta + n 是饼图围绕饼图中心的旋转?
-
theta 是饼图的中间部分。 (所以如果第一块代表 25%,它的 theta 将是 45 度,如果第二块代表 50%,它的 theta 将是 180 度。)然后整个饼图通过动画旋转 n 度。
-
rx = xcos@ - ysin@ ry = xsin@ + ycos@ 如果您从 (0,1) 旋转,则: rx = -sin@ ry = cos@ 所以然后代替 cos for x 和 sin 代表 y,你应该使用 -sin 代表 x 和 cos 代表 y。如果可行,我会将其发布为解决方案 LOL
-
不幸的是,这不起作用。标签最终从它们应该去的地方旋转了大约 90 度。
标签: flash actionscript-3 animation