#python
#python
Вопрос:
Я смотрю на окружность и n чисел точек на этой окружности. Я хочу проверить, находятся ли эти элементы на одном и том же полукруге, то есть в пределах 180 градусов друг от друга. Как я могу проверить, используя первый элемент в списке, находятся ли другие элементы в пределах того же полукруга? Я использую диапазон [-180,180).
Сначала я изначально проверял, были ли элементы положительными или отрицательными, но потом я понял, что я должен использовать первый элемент в качестве отправной точки вместо 0. Где я действительно теряюсь, так это при проверке с первого элемента, если я проверяю только плюс или минус 180, то это выходит за пределы моего исходного диапазона. Кроме того, я не знаю, как бы я использовал код python для проверки этого. Я могу попытаться объяснить это в псевдокоде: если точка [1] находится в пределах 180 или -180 от точки [0], тогда считайте
Комментарии:
1. Какая система координат используется для определения точек? Декартово? Полярный? Что-то еще?
2. Если точки не находятся на противоположных сторонах окружности, они всегда находятся в пределах 180 градусов друг от друга.
3. извините за отсутствие терминов, но он использует координаты степени. Я использую (-180,0) для демонстрации ниже оси x и (0,180) для демонстрации выше оси x. Вся идея состоит в том, чтобы проверить, находятся ли точки на одном и том же полукруге, поэтому я использовал (-180,180) для представления двух полукругов. Однако он не проверяет, находятся ли элементы на какой части оси, его тестирование с первого элемента, указанного в списке. Я надеюсь, что это поможет
Ответ №1:
Предполагая, что точки определены в полярных координатах (в данном случае r == константа только с изменениями углового положения), вы можете просто вычислить угловое расстояние между нужной точкой и всеми другими точками
import numpy as np
theta_values = np.array([45, 90, 120, 150, 170, -90, -60, -30])
# How many of these points are on the same semicircle as the point at 45 deg?
theta_distance = 90
num_points = np.count_nonzero(np.abs(theta_values - theta_values[0]) <= theta_distance) - 1
print(num_points)
# Should print 3 in this example
Вы могли бы настроить цикл for, который делает это для каждого значения в theta_values
, если вы хотите знать все эти суммы.
Предполагается, что все ваши значения находятся в диапазоне от -180 до 180 градусов, возможно, вам придется немного предварительно обработать данные, чтобы убедиться, что это правда;