Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Найти точку на круге по градусам?

Автор вопроса: RogerОтветов: 3

Допустим, у нас есть система координат 100x100, как показано ниже. 0,0 - его левый верхний угол, 50,50 - его центральная точка, 100,100 - его нижний правый угол и т. Д.

Теперь нам нужно провести линию от центра кнаружи. Мы знаем угол линии, но нам нужно вычислить координаты ее конечной точки. Как вы думаете, как это лучше всего сделать?

Например, если угол линии составляет 45 градусов, координаты конечной точки будут примерно 75,15.

  • Появляется дикая тригонометрия! В тригонометрии использовались синус и косинус! Это суперэффективно! Matt Ball 08.06.2011
  • Хотя ваш вопрос довольно простой, вы можете задавать вопросы по математике на сайте www.mathoverflow.com. Pedery 08.06.2011
  • В этом случае получение реализации кода для выполнения математических расчетов может потребовать запроса здесь? Wouter Simons 08.06.2011

mathgeometry

Ответы

Ответ 1 · рейтинг 11 · aioobe

Вам необходимо использовать тригонометрические функции sin и cos.

Что-то вроде этого:

theta = 45
// theta = pi * theta / 180      // convert to radians.
radius = 50
centerX = 50
centerY = 50
p.x = centerX + radius * cos(theta)
p.y = centerY - radius * sin(theta)

Имейте в виду, что большинство реализаций предполагают, что вы работаете с радианами и положительный y указывает вверх.

Ответ 2 · рейтинг 3 · Wouter Simons

Используйте единичный круг для вычисления X и Y, но, поскольку ваш радиус равен 50, умножьте его на 50.

http://en.wikipedia.org/wiki/Unit_circle

Добавьте смещение (50,50) и ваш дядя Боб

X = 50 + (cos(45) * 50) ~ 85,36
Y = 50 - (sin(45) * 50) ~ 14,65

Выше было 45 градусов.

РЕДАКТИРОВАТЬ: только что увидел, что ось Y перевернута

Ответ 3 · рейтинг 2 · Ben Siver

Сначала вам нужно вычислить координаты X и Y, как если бы круг был единичным кругом (радиус 1). Координата X данного угла задается как cos(angle), а координата Y задается как sin(angle). Большинство реализаций sin и cos принимают свои входные данные в радианах, поэтому преобразование необходимо (1 градус = 0,0174532925 радиан). Теперь, поскольку ваша система координат на самом деле не является единичным кругом, вам нужно умножить полученные значения на радиус вашего круга. В данном случае вы должны умножить на 50, поскольку ваш круг простирается на 50 единиц в каждом направлении. Наконец, при использовании системы координат единичного круга предполагается, что ваш круг центрирован в начале координат (0,0). Чтобы учесть это, добавьте (или вычтите) смещение вашего центра из рассчитанных вами координат X и Y. В вашем сценарии смещение от (0,0) составляет 50 в положительном направлении X и 50 в отрицательном направлении Y.

Например:

cos(45) = x ~= .707
sin(45) = y ~= .707

.707*50 = 35.35

35.35+50 = 85.35
abs(35.35-50) = 14.65

Таким образом, координаты конечного сегмента будут (85,35, 14,65).

Обратите внимание, что на выбранном вами языке, вероятно, есть встроенная функция преобразования градусов в радианы, я предоставил преобразование единиц для справки.

изменить: ой, сначала использовали градусы

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы