Проблема: существует координатная сетка точек данных, которые необходимо отфильтровать до определенной кривой области.
Решение:
Какопределена область?
В пределах сетки вам дается конкретная точка (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.