получите угол строки от горизонта

Я хочу знать, как получить угол строки A-B от горизонтальной оси X. Другие вопросы в ТАКЖЕ - что только между двумя строками. Я знаю, что могу всегда проводить вторую линию A-C и вычислять, но я задаюсь вопросом, существует ли более быстрый метод.

Править: Я очень уверен, что не делаю преждевременной оптимизации.

7
задан VOX 30 June 2010 в 23:04
поделиться

4 ответа

Для этого вы можете использовать atan .

angle = atan((By-Ay)/(Bx-Ax))
10
ответ дан 6 December 2019 в 09:18
поделиться

Если

  1. угол мал,
  2. вы можете жить с небольшими неточностями, и
  3. вы можете использовать угол в радианах, а не в градусах,

тогда есть быстрое решение: в этих условиях , вы можете предположить, что tan (a) = a = atan (a), и, следовательно, просто опустите вызов atan ().

1
ответ дан 6 December 2019 в 09:18
поделиться

Вы также можете использовать арккозин, если ваша строка имеет форму [r_x, r_y] , где r_x - это изменение x и r_y - изменение y.

angle = arccos( r_x/( r_x*r_x + r_y*r_y ) )

Это немного более непрозрачно, но в основном это закон скалярного произведения:

angle = arccos (r . v)

Где r и v оба являются единичными векторами (векторами длины 1). В нашем случае v - это вектор [1,0] , а r -

[r_x,r_y] / (r_x^2+r_y^2)

, чтобы сделать его единичным вектором.

1
ответ дан 6 December 2019 в 09:18
поделиться

Ось x фактически является линией с уравнением

y = 0

поэтому вы можете использовать уже имеющееся решение.

0
ответ дан 6 December 2019 в 09:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: