numpy arctan funtion зеркальный угол - PullRequest
1 голос
/ 08 апреля 2019

Проблема: существует координатная сетка точек данных, которые необходимо отфильтровать до определенной кривой области.

Решение:

  • Какопределена область?

    • В пределах сетки вам дается конкретная точка (A) на этой сетке и угол от этой точки (определяется по отношению к сетке)

    • Вам также дана целевая точка (B) в сетке

    • Нарисуйте 2 окружности с разными радиусами от точки (A)

    • Отметьте область, ограниченную 45 градусами с каждой стороны от заданного угла

    • Оцените каждую точку на сетке, чтобы увидеть, попадает ли она в область, ограниченную2 круга и 90-градусное сечение

Проблема с моим решением: вместо фильтрации 1 области, 2 зеркальные области фильтруются, что позволяет получить неверные данные.

каждая точка на сетке оценивается функцией ниже, если она вписывается в отфильтрованную область.Я посмотрел в функцию arctan2, чтобы увидеть, поможет ли это, но не понимаю.Полное резюме проблемы можно найти здесь

Вот несколько поясняющих изображений:

Как это должно выглядеть , чтоэтот код выглядит на практике , а также некоторые проверяемые данные

def pertenece(x,y,x_pala,y_pala,alpha):
    #parametros R int y R ext
    R_int = 17
    R_ext = 25
    #def thetas
    Theta_min = (alpha - 45)*(180/m.pi)**-1
    Theta_max = (alpha + 45)*(180/m.pi)**-1

    #calc R punto y Theta punto
    R_punto = ((x-x_pala)**2 + (y-y_pala)**2)**0.5
    Theta_punto = np.arctan((y-y_pala)/(x-x_pala))

    if (R_punto >= R_int and R_punto<=R_ext) and (Theta_punto >= Theta_min and Theta_punto<=Theta_max):
        return True
    else:
        return False

, как видно из документа, должен быть отфильтрован только один квадрант, на практике2.

1 Ответ

0 голосов
/ 09 апреля 2019

Вы действительно должны использовать np.arctan2, потому что в противном случае он не сможет различить входные данные с разными знаками.Например, np.arctan(1 / 2) совпадает с np.arctan(-1 / -2), поскольку аргумент совпадает.По этой причине вы сохраните как (-,-), так и (+,+) квадрант.Для np.arctan2 вы просто передаете обе координаты как отдельные аргументы, чтобы алгоритм мог определить квадрант по знаку двух аргументов.Следовательно, вы должны вычислить следующее:

Theta_punto = np.arctan2((y-y_pala), (x-x_pala))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...