Альтернатива определению местоположения GPS по радиусу вокруг точки

gps

Надеюсь, название темы не сбивает с толку — я пытаюсь выяснить, как можно сделать другой способ предупреждения о приближении с помощью GPS.

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

Таким образом, вместо того, чтобы критерием близости был радиус вокруг путевой точки, образующий, так сказать, круговую геозону, можно было бы создать подобный полукруг под определенным углом.

, 👍1

Обсуждение

Что вы пытаетесь достичь? Я имею в виду, я понимаю ваш вопрос, но мне любопытно, *почему*, просто потому, что GPS на самом деле не так уж точен (однако я не знаю, насколько велик ваш полукруг)., @Steve

Кроме того, это не совсем вопрос Arduino, это вопрос геометрии., @Steve


1 ответ


2

Пусть

  • (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