Насколько точным является расстояние от местоположения на iPhone по сравнению с его вычислением в декартовых кординатах? - PullRequest
1 голос
/ 08 марта 2011

В Iphone SDK distanceFromLocation: говорит, что вообще не использует высоту. Если я пишу приложение для отслеживания того, как далеко я хожу / езжу на велосипеде / т. Д. (Да, я знаю, что уже есть такой номер), мне интересно, насколько это важно. У кого-нибудь есть опыт с этим?

Когда я говорю, что декартовы шнуры, я имею в виду что-то вроде этого (в C #, не цель C):

        double lattitude, longitude, altitude, x, y, z, x1, y1, z1, S;
        double a = 6378137, C, f = 1 / 298.257224;

        lattitude = <insert degrees> * Math.PI / 180.0;
        longitude = <insert degrees> * Math.PI / 180.0;
        altitiude = <insert altitude>

        C= 1 / (Math.Sqrt(Math.Pow(Math.Cos(lattitude),2.0) + Math.Pow((1 - f),2.0) *Math.Pow(Math.Sin(lattitude),2.0)));
        S = Math.Pow(1 - f, 2.0) * C;
        x = (a*C+altitude) * Math.Cos(lattitude) * Math.Cos(longitude);
        y = (a*C+altitude) *Math.Cos(lattitude) * Math.Sin(longitude);
        z = (a*S+altitude) * Math.Sin(lattitude);

        lattitude = <insert degrees new> * Math.PI / 180.0;
        longitude = <insert degrees new> * Math.PI / 180.0;
        altitiude = <insert altitude new>;


        x1 = (a * C + altitude) * Math.Cos(lattitude) * Math.Cos(longitude);
        y1 = (a * C + altitude) * Math.Cos(lattitude) * Math.Sin(longitude);
        z1 = (a * S + altitude) * Math.Sin(lattitude);

        double distance;
        distance = Math.Sqrt(Math.Pow(x1 - x, 2.0) + Math.Pow(y1 - y, 2.0) + Math.Pow(z1 - z, 2.0));

Кто-нибудь знает, какая разница на самом деле? Принципиально как он рассчитан точно на iphone? Большое расстояние круга? Кажется, я нигде не могу найти ответ

1 Ответ

1 голос
/ 09 марта 2011

Документы говорят:

"Этот метод измеряет расстояние между двумя точками, проследив линия между ними, которая следует за кривизна Земли. Результирующий дуга является гладкой кривой и не учитывать удельную высоту изменения между двумя местоположениями. "

Для меня это означает расстояние по Большому кругу (фактически, это почти определение этого значения).

Насколько я понимаю (хотя я, конечно, не эксперт), расчеты большого круга (такие как Haversine ) очень типичны и обычно считаются "достаточно хорошими" для большинства приложений.

Возможно, по теме здесь больше информации, чем вы хотите . Этот вопрос также частично связан.

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

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