我试图使用forumla将度数转换为X和Y坐标,这样我就可以通过" top"来围绕圆周围放置点。和"左"偏移。
这些帖子描述了三角函数来帮助解决这个问题:
数十次搜索不断提出这个公式:
X = r * cosine(angle)
Y = r * sine(angle)
但我不能让它在我的代码环境中工作。这段代码:
// angle is amount in degrees that the point should be at
// pieHeight is distance between bottom of semicircle and top of semicircle (i.e. radius)
var angle = ((amount / range) * 180);
offLeft = pieHeight + ((pieHeight) * Math.cos(angle));
offTop = (pieHeight / 3) + ((pieHeight) * Math.sin(angle));
console.log(amount, angle, Math.round(offLeft), Math.round(offTop));
// Update display
$(val).css('left', offLeft);
$(val).css('top', offTop);
产生这个结果:
控制台输出为:
0 0 268 45
20 36 117 -88
40 72 4 79
60 108 184 169
80 144 251 -21
100 180 54 -63
数字应该是圆弧形,但它们不是有序的,我不能让它们符合只在半圆内。 有人能告诉我我做错了吗?
答案 0 :(得分:2)
问题是Math.sin()和Math.cos()以弧度为单位。我猜你是乘以180得到一个角度。
尝试更改
var angle = ((amount / range) * 180);
带
var angle = ((amount / range) * Math.PI);