Допустим, у нас есть система координат 100x100, как показано ниже. 0,0 - его левый верхний угол, 50,50 - его центральная точка, 100,100 - его нижний правый угол и т. Д.
Теперь нам нужно провести линию от центра кнаружи. Мы знаем угол линии, но нам нужно вычислить координаты ее конечной точки. Как вы думаете, как это лучше всего сделать?
Например, если угол линии составляет 45 градусов, координаты конечной точки будут примерно 75,15.
Ответ 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).
Обратите внимание, что на выбранном вами языке, вероятно, есть встроенная функция преобразования градусов в радианы, я предоставил преобразование единиц для справки.
изменить: ой, сначала использовали градусы