Рубрики
Без рубрики

Как рассчитать угол по часовой стрелке между двумя точками

Эй, финансы! Сегодня вы узнаете важную функцию, которую вам может потребоваться написать в будущем: как написать программу Python для расчета угла между 2 точками по часовой стрелке. Мы будем использовать принципы на языке Python, чтобы написать рабочую программу для написания углов и рассчитать … Как рассчитать угол по часовой стрелке между двумя точками Подробнее »

Автор оригинала: Amber Mercado.

Эй, финансы! Сегодня вы узнаете важную функцию, что вам может потребоваться написать в будущем: как написать программу Python в Рассчитайте угол между 2 точками по часовой стрелке.

Мы будем использовать принципы на языке Python для написания рабочей программы для записи углов и рассчитать угол или радианы в данной плоскости! Мы собираемся взять наше время и объяснить все, поэтому не беспокоими, когда мы идем через это вместе!

Проблема: расчет угла между двумя точками

В этой конкретной проблеме мы хотим найти угол по часовой стрелке между вектором от происхождения, чтобы указать A, и вектор от происхождения до пункта B. У нас будет три точки и два вектора, чтобы наш угол четко определен. Это может быть использовано как в алгебраических, так и в геометрических определениях. Для нашего примера мы будем использовать геометрическое определение.

Что мы хотим достичь: Написание программы Python, которая рассчитает угол по часовой стрелке.

Наша программа должна иметь возможность рассчитать углы между двумя точками от данного происхождения (0,0) , пункт A (0,1) и точка b (1, -1) Отказ Эти 3 балла дадут угол 45 * от всего 360 *, начиная с центра (х, у) график

Я хочу показать вам 2 разных способа сделать это. Один из способов у меня будет программа, написанная вам шаг за шагом. Во втором пути я покажу вам больше пифитонного способа написания той же программы, предоставляя вам преимущество при написании программы для интервью кода.

Метод 1: написание этого – трудный путь

В этом примере мы хотим начать с помощью Importing Математический модуль Затем создайте класс, определяющий Вектор Расположенный х и y Отказ Мы создаем следующие переменные, v1 и V2 С параметрами по умолчанию.

import math

class Vector:
    def __init__(self, x, y):
        self.x = x
        self.y = y

v1 = Vector(0, 1)
v2 = Vector(0, -1)

После этого из математики мы используем метод Atan2 Вернуть tan (y/x) в радианах. Результат между -Пи и PI Отказ Вектор в самолете из происхождения до точки (х, у) делает этот угол с положительным Х ось. Точка atan2 () Это то, что признаки обоих входов известны ему, поэтому он может вычислить правильный квадрант для угла.

Например, Atan (1) и ATAN2 (1, 1) оба PI/4 , но ATAN2 (-1, -1) это -3 * PI/4 Отказ Мы сохраняем эти новые векторы к новым переменным: v1_theta и v2_theta Отказ

v1_theta = math.atan2(v1.y, v1.x)
v2_theta = math.atan2(v2.y, v2.x)

r = (v2_theta - v1_theta) * (180.0 / math.pi)

if r < 0:
    r % 360

print r

Принимая эти две точки и вычитая первое со второго, умножая его по продукту 180, разделенного PI и сохранение его в переменной (« r »). Мы модуль -R К 360. R меньше 0, потому что он будет отрицательным числом. После этого мы Печать R вне. Это всего лишь один способ написать эту проблему. Это немного грязно, и если мы не будем осторожны, мы можем легко получить неверный вывод ответа.

Способ 2: написание этого – питон путь с numpy

В этом следующем примере я буду использовать Numpy, чтобы получить угол между двумя точками и вернулся мне. При записи в Python всегда лучше всего следить за Pep8 и написать вам программу как можно просто, чтобы занять меньше памяти в вашем коде и, следовательно, меньше времени выполнения при тестировании вашей программы.

Первое, что мы сделаем, это Импорт Numpy как NP Затем определите угол, используя точку 1 ( P1 ) и точка 2 ( p2 ) в качестве аргументов. Мы снова будем использовать Arctan2 умножено на P1 найти угол 1 и Arctan2 умножено на P2 найти второй угол. Мы вернем степень, используя np.red2Deg Функция сначала вычитая первый угол от второго, то мы умножаем 2 и np.pi Затем мы модуль продукт двух ответов. Когда мы вводим наш вектор, мы правильно получаем наш ответ при печати.

import numpy as np

def angle_between(p1, p2):
    ang1 = np.arctan2(*p1[::-1])
    ang2 = np.arctan2(*p2[::-1])
    return np.rad2deg((ang1 - ang2) % (2 * np.pi))

A = (1, 0)
B = (1, -1)

print(angle_between(A, B))

# 45.

print(angle_between(B, A))

# 315.

Как вы можете увидеть печать Engle_between (A, B) и Engle_between (b, a) Дает нам две совокупности разных ответов! Причина этого является потому, что первая точка движется по часовой стрелке ко второй точке, давая нам меньшее число. Собираюсь против часовой стрелки, мы получаем гораздо большее число, чем фактический угол, который мы ищем!

Резюме

Как видите, написание этой программы в Python была проста, потому что Python построил модули Math и Numpy, чтобы сделать код красивым и чистым. Это может показаться произвольным, но эта программа может использоваться в нескольких приложениях от архитектуры для принятия виртуальных туров в отелях, апартаментах или даже ресторанах.

Как показано в это фото Вы можете найти одну точку в пространстве с этими тремя точками. Он также может быть использован в создании виртуальной комнаты или в преступности, когда пытаетесь использовать судебно-медицинскую науку, чтобы поймать плохой парень! Python – удивительный язык программирования, который никогда не перестает удивлять меня. Я надеюсь, что после прочтения этой статьи вы будете вдохновлены, чтобы написать вам собственные программы Python, используя то, что вы узнали здесь, чтобы добавить в свои портфолио.