我正在尝试标记动画饼图,并且我在旋转对象与三角定位对象对齐方面遇到了很多麻烦。因此,例如,如果我有一个饼图,其中间是角度θ并且已在补间中旋转了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>
如何才能正确定位这些标签?
答案 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;