Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.07.2012, 15:14   #1
Mr_freeman
Форумчанин
 
Аватар для Mr_freeman
 
Регистрация: 17.01.2010
Сообщений: 277
По умолчанию Расстояние между двумя географическими координатами.

Написал функцию расчета расстояния между двумя точками c координатами вида (57.622506,48.46073 - как на Яндекс картах):

Код:
function dlina(x1,y1,x2,y2){
	return Math.sqrt(
		(Math.abs(x1-x2)*Math.cos(y2)*111.1111)*
		(Math.abs(x1-x2)*Math.cos(y2)*111.1111) +
		(Math.abs(y1-y2)*111.1111)*
		(Math.abs(y1-y2)*111.1111))*
		1000;
}
В пределах одного города считает замечательно, а например между Москвой и Хабаровском очень сильно отклоняется.

ПОдскажите пожалуйста, может кто работал с координатами?
Mr_freeman вне форума Ответить с цитированием
Старый 20.07.2012, 15:59   #2
rlib
Форумчанин
 
Аватар для rlib
 
Регистрация: 22.05.2012
Сообщений: 352
По умолчанию

Не работал, но может еще надо высоту учитывать?
Пока расстояния "дифференциальные" погрешнпсть маленькая, однако на больших расстояниях...
rlib вне форума Ответить с цитированием
Старый 20.07.2012, 17:02   #3
Mr_freeman
Форумчанин
 
Аватар для Mr_freeman
 
Регистрация: 17.01.2010
Сообщений: 277
По умолчанию

Я нашел много разных формул. Или они неправильно работают, или я возможно что то неправильно делал, но не уверен.
Вообще в моем проекте не столь важны такие большие расстояния, но в некоторых случаях они необходимы, нужно учесть все варианты.
Mr_freeman вне форума Ответить с цитированием
Старый 20.07.2012, 17:50   #4
Kostia
Участник клуба
 
Аватар для Kostia
 
Регистрация: 21.11.2007
Сообщений: 1,691
По умолчанию

Не делал, но если упростить что земля есть сфера.

a = atan2(x2*y1 - x1*y2, x1*x2 + y1*y2);
L = r*a;

Где a - угол между векторами(стоит меня перепроверить, мог ошибиться при выводе)
L - длина дуги
r - радиус
Kostia вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль. вычисления расстояния между двумя точками, заданными на плоскости их координатами Saka Помощь студентам 10 05.11.2016 18:49
Поиск маршрутов между двумя городами между n городов DorianMark Паскаль, Turbo Pascal, PascalABC.NET 11 09.11.2011 00:46
Рассчитать налог, принадлежность Х к промежутку,расстояние между двумя точками на плоскости,свой возраст на сегодняшний Levon123 Microsoft Office Excel 2 14.06.2011 15:14
Расстояние между раммкой Syltan Microsoft Office Word 1 14.11.2009 20:31
Паскаль*Найти расстояние между двумя заданными множе-ствами точек tipson Помощь студентам 2 11.07.2009 12:19