Получить наклон из одной точки и угол в градусах

В javascript я пытаюсь нарисовать линию под углом, который определяется пользователем.

По сути, у меня есть точка (x, y) и угол для создания следующей точки. Длина линии должна быть 10px.

Предположим, что точка, с которой нужно начать, - это (180, 200)... если я задаю ей угол "А" и (я полагаю) гипотенуза равна 10, какими будут мои уравнения, чтобы получить X и Y для склон?

Спасибо за вашу помощь!


person Phobis    schedule 30.11.2009    source источник
comment
sohcahtoa sohcahtoa sohcahtoa   -  person Nosredna    schedule 30.11.2009
comment
Какой-то старый хиппи поймал другого хиппи, спотыкающегося о кислоту   -  person Hamish Grubijan    schedule 30.12.2009


Ответы (4)


Предполагая, что H = гипотенуза (10 в вашем примере), это формула для вашего наклона:

Y2 = H(Sin(A)) + Y1
   = 10(Sin(A)) + 200

X2 = Sqrt((H^2)-(Y2^2)) + X1
   = Sqrt(100 - (Y2^2)) + 180

Итак, теперь у вас есть

(180, 200) -> (X2, Y2)

Где X2, Y2 будут варьироваться в зависимости от значений A и H

Чтобы проверить наш расчет - A (введенный пользователем) можно рассчитать, используя уравнение наклона, заменяя значения X1, X2, Y1 и Y2 исходными входными и результирующими выходными данными.

A = InvTan((Y2 - Y1) / (X2 - X1))
  = InvTan((Y2 - 200) / (X2 - 180))
person BenAlabaster    schedule 30.11.2009

ну, из основ тригонометрии...

sin A° = Y/10

cos A° = X/10

10^2 = Y^2 + X^2

person flesh    schedule 30.11.2009
comment
В качестве альтернативы, cosA = X / 10 для решения для X. Проголосовал за единственного человека, который на данный момент действительно дал ответ. - person Ron Warholic; 30.11.2009
comment
Конечно; иногда люди забывают, что это сайт вопросов и ответов, а не форум. - person Ron Warholic; 30.11.2009

Как язвительно заметил мистер Дойл, математика не так уж сложна, но:

1) Убедитесь, что вы четко понимаете, на что ссылается угол и в каком направлении идут ваши координаты; самый простой триггерный материал предполагает, что вы имеете дело с традиционными декартовыми координатами, где x увеличивается вправо, а y увеличивается вверх по странице, тогда как в большинстве API рисования y увеличивается вниз по странице, а x увеличивается вправо.

2) убедитесь, что вы понимаете, нужны ли математическим функциям градусы или радианы, и снабдите их соответствующими аргументами.

person Mikeb    schedule 30.11.2009
comment
да. Данной информации недостаточно. В системе координат необходима информация о том, где находится нулевой угол и в каком направлении он идет. - person Nosredna; 30.11.2009

Возможно, лучший способ взглянуть на проблему — использовать векторы:

alt text
(источник: таблица уравнений .com)

Вы также можете написать вектор следующим образом:

alt text
(источник: таблица уравнений .com)

куда

alt text
(источник: таблица уравнений .com)

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

alt text
(источник: таблица уравнений .com)

alt text
(источник: таблица уравнений .com)

person duffymo    schedule 01.12.2009