2010-05-26 5 views
16

In this SO question, someone asked for calculating an angle from three points. Мне нужно сделать что-то противоположное.Как вычислить точку с заданным центром, углом и радиусом?

Я хочу нарисовать часы, и у меня есть крошечные изображения. Художественный чувак сделал 60 из них, каждый с индивидуальной и точной тенью. Таким образом, существует 60 различных изображений размером 10x10 точек, которые уже правильно повернуты в центре этого квадрата.

Таким образом, каждый 6-ти тиковый образ должен быть размещен. Мне просто нужно вычислить координату x/y на основе центральной точки, радиуса и угла.

Так у меня есть:

  • центральная точка
  • радиусе
  • угол

Есть простой способ вычислить х/у координат с этим? Может быть, у какао-touch уже есть полезная функция или метод для этого?

ответ

18

пусть быть угол, (х, у) центральная точка и г радиус, то ваша точка будет на

(x + r*cos(a), y + r*sin(a)) 
+5

Здесь приведены переменные синус и косинус –

+0

Проверьте обновленную формулу расчета! – byJeevan

1

Ваше изображение (в центре) должен быть помещен в точке (X, Y), где (х, у) координаты точки центра, и г-радиус

X = x + (r/2)*cos(angle); 
Y = y + (r/2)*sin(angle); 
18

в математике, чтобы вычислить декартовы координаты из р Olar координаты:

x = r * cos(A) + x0; 
y = r * sin(A) + y0; 

где (х0, у0) является центром вашего круга, г-радиус и А есть угол.

Но, который принимает соглашение о координатах математики, т. Е. X увеличивается при движении вправо, y увеличивается по мере продвижения вверх. Это значение по умолчанию для просмотров в Mac OS X Cocoa, но я не знаю, одинаково ли оно на iPhone.

Также углы начинаются с 3 часов и идут против часовой стрелки, т. Е. 3 o часы - 0 градусов, 12 часов - 90 градусов, 9 часов - 180 градусов и 6 часов - 270 градусов.

Кроме того, функции синуса и косинуса C работают в радианах.

+0

Я только что понял, что ответ от unbeli уже применяет исправление, чтобы начать угол вверху и идти по часовой стрелке естественным образом, как вы ожидали бы на циферблате. – JeremyP

+0

+1. Я не мог сделать работу решения unbeli, но вы сделали (используя JavaScript, который есть). Вот фрагмент для рисования линии из центра холста HTML5 под заданным углом. Обратите внимание на взломы, чтобы обойтись с 3 часов: x0 = ctx.canvas.width/2; y0 = ctx.canvas.height/2; ctx.lineTo ( (x0 + r * Math.cos (toRad (угол-90))), (y0 + r * Math.sin (toRad (угол-90))) ); – GojiraDeMonstah

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