Альтернатива определению местоположения GPS по радиусу вокруг точки
Надеюсь, название темы не сбивает с толку — я пытаюсь выяснить, как можно сделать другой способ предупреждения о приближении с помощью GPS.
Самый простой способ по умолчанию – сформировать радиус вокруг целевой путевой точки, чтобы критерии близости срабатывали, когда вы находитесь "внутри" цели. круг. Я знаю о геозонах, но это кажется очень требовательным и сложным, поэтому я хотел бы спросить, можно ли реализовать что-то вроде показанного на этом рисунке.
Таким образом, вместо того, чтобы критерием близости был радиус вокруг путевой точки, образующий, так сказать, круговую геозону, можно было бы создать подобный полукруг под определенным углом.
@Varonne, 👍1
Обсуждение1 ответ
Пусть
(
x
,y
) — декартовы координаты вектора, идущего от путь к вашей позицииradius
— радиус окружностиtheta
– ориентация прямой линии в радианах.
Затем вы можете построить единичный вектор по нормали к прямой линии:
n = (cos(θ+π/2), sin(θ+π/2)) = (−sin θ, cos θ)
Вы находитесь на цветной стороне линии, если скалярное произведение n
с (x
, y
) является положительным.
В коде:
bool is_inside(float x, float y)
{
float product = - x * sin(theta) + y * cos(theta);
float r2 = x * x + y * y;
return r2 <= radius * radius && product >= 0;
}
Большое спасибо, что показали дорогу! Но одна вещь пришла мне в голову, когда я двигаюсь, "полукруглая геозона" должна оставаться в пределах одного и того же угла, не относительно меня, а с некоторой константой, я думаю "на север"... что означает, что это становится более сложным и ближе к реальной навигации автомобиля? Потому что одна вещь, чтобы это работало правильно, - это иметь целевую точку назначения с привязкой «север», чтобы геозона всегда была обращена в правильном направлении. Что заставляет меня задуматься, возможно ли назначить такую константу и сделать эту половину геозоны лицом в заданном направлении, полученном по компасу?, @Varonne
@Varonne: Если вы хотите, чтобы «тета» была постоянной, просто держите ее постоянной. Нет причин, по которым это должно быть сложнее, чем это., @Edgar Bonet
- GPS-модуль uBlox Neo 6M не отвечает
- Модуль SIM808 GSM работает нормально, GPS не работает (нет сообщения о готовности GPS при включении питания)
- Как отправить данные из Arduino Uno с SIM900 GPRS в Firebase
- Нет данных от U-Blox Neo-6M
- Модуль SIM808: команда определения местоположения GSM (AT+CIPGSMLOC=1,1) дает неверное значение после выполнения команды отправки сообщения (AT+CMGS=+91xxxxxxxx)
- Какие компоненты мне нужны маленького GPS-трекера
- Расчет GPS на очень короткие расстояния
- Ошибка инициализации GPS DFRobot [Arduino Uno, SIM808]
Что вы пытаетесь достичь? Я имею в виду, я понимаю ваш вопрос, но мне любопытно, *почему*, просто потому, что GPS на самом деле не так уж точен (однако я не знаю, насколько велик ваш полукруг)., @Steve
Кроме того, это не совсем вопрос Arduino, это вопрос геометрии., @Steve