Я пытаюсь реализовать представленные уравнения here относительно нахождения точки на заданном перпендикулярном расстоянии от линии. К сожалению, строки, которые я получаю, не являются прямыми. Это связано с тем, что я смешиваю Lat/long с регулярными координатами x/y или я сделал что-то еще неправильно?Перпендикулярная линия в lat/long
double distPoint = 0.02;
double latDiff = temp2.Latitude - temp.Latitude;
double longDiff = temp2.Longitude - temp.Longitude;
double length = Math.Sqrt(latDiff * latDiff + longDiff * longDiff);
double uLat = latDiff/length;
double uLong = longDiff/length;
double newLat1 = temp2.Latitude + (distPoint/2) * uLat;
double newLong1 = temp2.Longitude - (distPoint/2) * uLong;
double newLat2 = temp2.Latitude - (distPoint/2) * uLat;
double newLong2 = temp2.Longitude + (distPoint/2) * uLong;
Изменили код сейчас и имена переменных. Тем не менее получать ошибку :-(
double dist = 0.02;
double latDiff = secondTestPoint.Latitude - firstTestPoint.Latitude;
double longDiff = secondTestPoint.Longitude - firstTestPoint.Longitude;
double length = Math.Sqrt(latDiff * latDiff + longDiff * longDiff);
double uLat = latDiff/length;
double uLong = longDiff/length;
double newLat1 = secondTestPoint.Latitude + (dist/2) * uLong;
double newLong1 = secondTestPoint.Longitude - (dist/2) * uLat;
double newLat2 = secondTestPoint.Latitude - (dist/2) * uLong;
double newLong2 = secondTestPoint.Longitude + (dist/2) * uLat;
Вот значение переменного:
latDiff = -0.0046187639236450195
longDiff = -0.0058203935623168945
length = 0.0074303405980227239
uLat = -0.62160864131505777
uLong = -0.78332796263279647
newLat1 = 58.39273776863341
newLong1 = 15.558675147558933
newLat2 = 58.408404327886061
newLong2 = 15.546242974732632
UPDATE:. Я пришел к выводу, что неисправность связана с Ширами/вопросов представляется разумным, что он генерирует бы разломы думать, что широта/долгота эквивалентны квадраты, когда они на самом деле не являются. Особенно при работе с северной Европой.
Изображение здесь: http://img266.imageshack.us/img266/9550/mapu.gif Более длинная строка - это перпендикулярная. – svanerik
Для тех из нас, кто является визуальными типами - спасибо за изображение! –
В этой заметке я думаю, что изображение может быть еще более полезно, аннотируя его, с помощью которого точки (или их значения x-y) исходят со значениями в вашем псевдокоде, поскольку я не уверен в этом из ваших имен переменных. –