Я хочу знать, как получить угол строки A-B от горизонтальной оси X. Другие вопросы в ТАКЖЕ - что только между двумя строками. Я знаю, что могу всегда проводить вторую линию A-C и вычислять, но я задаюсь вопросом, существует ли более быстрый метод.
Править: Я очень уверен, что не делаю преждевременной оптимизации.
Для этого вы можете использовать atan
.
angle = atan((By-Ay)/(Bx-Ax))
Если
тогда есть быстрое решение: в этих условиях , вы можете предположить, что tan (a) = a = atan (a), и, следовательно, просто опустите вызов atan ().
Вы также можете использовать арккозин, если ваша строка имеет форму [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)
, чтобы сделать его единичным вектором.
Ось x фактически является линией с уравнением
y = 0
поэтому вы можете использовать уже имеющееся решение.