2015-05-13 3 views
2

Im пытается использовать forumla для преобразования градусов в координаты X и Y, так что я могу разместить точки вокруг окружности круга с помощью CSS с помощью «верхнего» и «левого», смещения.Построение точек вокруг полуокружности с координатами xy

Эти сообщения описывают trigonomic функции, чтобы помочь с этим:

Десятки обысков держать воспитывая эту формулу:

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); 

Урожайность этого результата:

Incorrect dials

вывод консоли:

0 0 268 45 
20 36 117 -88 
40 72 4 79 
60 108 184 169 
80 144 251 -21 
100 180 54 -63 

Число в круговой дуге, как должно быть, но они не являются в порядке, и я не могу заставить их соответствовать только полукруге. Может кто-нибудь сказать мне, что я делаю неправильно?

ответ

2

Проблема в том, что Math.sin() и Math.cos() поднять угол в радианах. Я думаю, вы умножаетесь на 180, чтобы получить угол в градусах.

Попробуйте изменить

var angle = ((amount/range) * 180); 

с

var angle = ((amount/range) * Math.PI); 
+0

Легенда! Это исправлено. Теперь это выглядит так: http://postimg.org/image/cnxuginfb/ Мне просто нужно настроить некоторые смещения и инвертировать некоторые цифры, и он будет функционировать, как ожидалось. – kohloth

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