Я работаю с координатами широты/долготы на карте Google.
У меня есть две строки:
Затем я использую следующую формулу, чтобы найти точку, где они пересекаются.
var XAsum = A.LngStart - A.LngEnd;
var XBsum = B.LngStart - B.LngEnd;
var YAsum = A.LatStart - A.LatEnd;
var YBsum = B.LatStart - B.LatEnd;
var LineDenominator = XAsum * YBsum - YAsum * XBsum;
if(LineDenominator == 0.0)
return false;
var a = A.LngStart * A.LatEnd - A.LatStart * A.LngEnd;
var b = B.LngStart * B.LatEnd - B.LatStart * B.LngEnd;
var x = (a * XBsum - b * XAsum) / LineDenominator;
var y = (a * YBsum - b * YAsum) / LineDenominator;
Это говорит мне, что линии действительно пересекаются, и возвращает значения x и y.
Однако, когда я рисую возвращенную точку, она смещается (ненамного )от реального пересечения.
Есть ли лучший и такой же быстрый алгоритм, который я мог бы использовать, чтобы вернуть мне правильную точку пересечения?
Это должно быть быстро, так как я перебираю большое количество строк (~1000 ).
РЕДАКТИРОВАТЬ :Обратите внимание, что это дает мне смещение ошибки около 7,5 метров