Как проверить, перекрываются ли в любом месте два расстояния от А до В на основе GPS? - PullRequest
1 голос
/ 27 сентября 2019

Я использую следующую функцию для проверки расстояния между точкой A -> B:

function airDistance($lat1, $lon1, $lat2, $lon2, $unit) {

      $gps = $lon1 - $lon2;
      $dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) +  cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($gps));
      $dist = acos(min(max($dist,-1.0),1.0)); 
      $dist = rad2deg($dist);
      $miles = $dist * 60 * 1.1515;
      $unit = strtoupper($unit);

      if ($unit == "K") {
          return ($miles * 1.609344);
      } else if ($unit == "N") {
          return ($miles * 0.8684);
      } else {
          return $miles;
      }

}

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

enter image description here

Есть ли простой способ добиться этого?Я искал, но не могу найти ничего, даже близкого к тому, чего я пытаюсь достичь.

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

Ответы [ 2 ]

0 голосов
/ 27 сентября 2019

Проверьте это хорошо документированное решение Мартина Тома с кодом :

Как проверить, пересекаются ли два отрезка

0 голосов
/ 27 сентября 2019

Если это всегда прямые линии.Тогда мы должны использовать геометрию https://en.wikipedia.org/wiki/Line%E2%80%93line_intersection

или Векторы, чем вы должны использовать векторы scalar vector multiplication https://courses.lumenlearning.com/boundless-physics/chapter/vectors/

, если предпочтительнее.Они также дают вам угол перехвата, если вам это нужно

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