Расстояние от точки до точки: формулы, примеры, решения. Расстояние между двумя точками на плоскости

При помощи линейки. Предпочтительно, чтобы она была изготовлена из как можно более тонкого листового материала. В случае, если поверхность, на которой расстелена , не является плоской, поможет портновский метр. А при отсутствии тонкой линейки, и если карту не жалко прокалывать, удобно использовать для измерения циркуль, желательно с двумя иголками. Потом его можно перенести на миллиметровую бумагу и измерить длину отрезка по ней.

Дороги между двумя точками на редко прямыми. Измерить длину линии поможет удобный прибор - курвиметр. Чтобы им воспользоваться, вначале вращением ролика совместите стрелку с нулем. Если курвиметр электронный, устанавливать его на нуль вручную необязательно - достаточно нажать кнопку сброса. Придерживая ролик, прижмите его к начальной точке отрезка так, чтобы риска на корпусе (она расположена над роликом) указывала прямо на эту точку. Затем ведите ролик по линии, пока риска не окажется совмещена с конечной точкой. Прочитайте показания. Учтите, что у некоторых курвиметров имеются две шкалы, одна из которых имеет градуировку в сантиметрах, а другая - в дюймах.

Найдите на карте указатель масштаба - обычно он расположен в правом нижнем углу. Иногда этот указатель представляет собой отрезок калиброванной длины, рядом с которым указано, какому расстоянию он соответствует. Измерьте длину этого отрезка линейкой. Если окажется, например, что он имеет длину в 4 сантиметра, а рядом с ним указано, что соответствует 200 метрам, поделите второе число на первое, и вы узнаете, что каждому на карте соответствует 50 метров на местности. На некоторых вместо отрезка присутствует готовая фраза, которая может выглядеть, например, следующим образом: «В одном сантиметре 150 метров». Также масштаб может быть указан в виде соотношения следующего вида: 1:100000. В этом случае можно подсчитать, что сантиметру на карте соответствует 1000 метров на местности, поскольку 100000/100(сантиметров в метре)=1000 м.

Измеренное линейкой или курвиметром расстояние, выраженное в сантиметрах, умножьте на указанное на карте или рассчитанное количество метров или в одном сантиметре. В результате получится реальное расстояние, выраженное, соответственно, или километрах.

Любая карта представляет собой уменьшенное изображение какой-то территории. Коэффициент, показывающий, насколько изображение уменьшено по отношению к реальному объекту, называется масштабом. Зная его, можно определить расстояние по . Для реально существующих карт на бумажной основе масштаб – величина фиксированная. Для виртуальных, электронных карт эта величина меняется вместе с изменением увеличения изображения карты на экране монитора.

Инструкция

Расстояние по карте можно измерить с помощью инструмента «Линейка» геоинформационных пакетах Google Earth и Yandex Maps, подосновой для карт в которых являются космические спутниковые . Просто включите этот инструмент и кликните мышкой по точке, отмечающей начало вашего маршрута и той, где его планируете завершить. Значение расстояния можно будет узнать в любых заданных единицах измерения.

Расчет расстояний между точками по их координатам на плоскости элементарен, на поверхности Земли — немного посложнее: мы рассмотрим измерение расстояния и начального азимута между точками без проекционных преобразований. Для начала разберемся в терминологии.

Введение

Длина дуги большого круга – кратчайшее расстояние между любыми двумя точками находящимися на поверхности сферы, измеренное вдоль линии соединяющей эти две точки (такая линия носит название ортодромии) и проходящей по поверхности сферы или другой поверхности вращения. Сферическая геометрия отличается от обычной Эвклидовой и уравнения расстояния также принимают другую форму. В Эвклидовой геометрии, кратчайшее расстояние между двумя точками – прямая линия. На сфере, прямых линий не бывает. Эти линии на сфере являются частью больших кругов – окружностей, центры которых совпадают с центром сферы. Начальный азимут — азимут, взяв который при начале движения из точки А, следуя по большому кругу на кратчайшее расстояние до точки B, конечной точкой будет точка B. При движении из точки A в точку B по линии большого круга азимут из текущего положения на конечную точку B постоянно меняется. Начальный азимут отличен от постоянного, следуя которому, азимут из текущей точки на конечную не меняется, но маршрут следования не является кратчайшим расстоянием между двумя точками.

Через любые две точки на поверхности сферы, если они не прямо противоположны друг другу (то есть не являются антиподами), можно провести уникальный большой круг. Две точки, разделяют большой круг на две дуги. Длина короткой дуги – кратчайшее расстояние между двумя точками. Между двумя точками-антиподами можно провести бесконечное количество больших кругов, но расстояние между ними будет одинаково на любом круге и равно половине окружности круга, или π*R, где R – радиус сферы.

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

Форма Земли может быть описана как сфера, поэтому уравнения для вычисления расстояний на большом круге важны для вычисления кратчайшего расстояния между точками на поверхности Земли и часто используются в навигации. Вычисление расстояния этим методом более эффективно и во многих случаях более точно, чем вычисление его для спроектированных координат (в прямоугольных системах координат), поскольку, во-первых, для этого не надо переводить географические координаты в прямоугольную систему координат (осуществлять проекционные преобразования) и, во-вторых, многие проекции, если неправильно выбраны, могу привести к значительным искажениям длин в силу особенностей проекционных искажений. Известно, что более точно описывает форму Земли не сфера, а эллипсоид, однако в данной статье рассматривается вычисление расстояний именно на сфере, для вычислений используется сфера радиусом 6372795 метров, что может привести к ошибке вычисления расстояний порядка 0.5%.

Формулы

Существует три способа расчета сферического расстояния большого круга. 1. Сферическая теорема косинусов В случае маленьких расстояний и небольшой разрядности вычисления (количество знаков после запятой), использование формулы может приводить к значительным ошибкам связанным с округлением. φ1, λ1; φ2, λ2 — широта и долгота двух точек в радианах Δλ — разница координат по долготе Δδ — угловая разница Δδ = arccos {sin φ1 sin φ2 + cos φ1 cos φ2 cos Δλ} Для перевода углового расстояния в метрическое, нужно угловую разницу умножить на радиус Земли (6372795 метров), единицы конечного расстояния будут равны единицам, в которых выражен радиус (в данном случае — метры). 2. Формула гаверсинусов Используется, чтобы избежать проблем с небольшими расстояниями. 3. Модификация для антиподов Предыдущая формула также подвержена проблеме точек-антиподов, чтобы ее решить используется следующая ее модификация.

Моя реализация на РНР

// Радиус земли define("EARTH_RADIUS", 6372795); /* * Расстояние между двумя точками * $φA, $λA - широта, долгота 1-й точки, * $φB, $λB - широта, долгота 2-й точки * Написано по мотивам http://gis-lab.info/qa/great-circles.html * Михаил Кобзарев * */ function calculateTheDistance ($φA, $λA, $φB, $λB) { // перевести координаты в радианы $lat1 = $φA * M_PI / 180; $lat2 = $φB * M_PI / 180; $long1 = $λA * M_PI / 180; $long2 = $λB * M_PI / 180; // косинусы и синусы широт и разницы долгот $cl1 = cos($lat1); $cl2 = cos($lat2); $sl1 = sin($lat1); $sl2 = sin($lat2); $delta = $long2 - $long1; $cdelta = cos($delta); $sdelta = sin($delta); // вычисления длины большого круга $y = sqrt(pow($cl2 * $sdelta, 2) + pow($cl1 * $sl2 - $sl1 * $cl2 * $cdelta, 2)); $x = $sl1 * $sl2 + $cl1 * $cl2 * $cdelta; // $ad = atan2($y, $x); $dist = $ad * EARTH_RADIUS; return $dist; } Пример вызова функции: $lat1 = 77.1539; $long1 = -139.398; $lat2 = -77.1804; $long2 = -139.55; echo calculateTheDistance($lat1, $long1, $lat2, $long2) . " метров"; // Вернет "17166029 метров"

Пусть задана прямоугольная система координат.

Теорема 1.1. Для любых двух точек М 1 (х 1 ;у 1) и М 2 (х 2 ;у 2) плоскости расстояние d между ними выражается формулой

Доказательство. Опустим из точек М 1 и М 2 перпендикуляры М 1 В и М 2 А соответственно

на оси Оу и Ох и обозначим через К точку пересечения прямых М 1 В и М 2 А (рис. 1.4). Возможны следующие случаи:

1)Точки М 1 , М 2 и К различны. Очевидно, что точка К имеет координаты (х 2 ;у 1). Нетрудно заметить что М 1 К = ôх 2 – х 1 ô, М 2 К = ôу 2 – у 1 ô. Т.к. ∆М 1 КМ 2 прямоугольный, то по теореме Пифагора d = М 1 М 2 = = .

2) Точка К совпадает с точкой М 2 , но отлична от точки М 1 (рис. 1.5). В этом случае у 2 = у 1

и d = М 1 М 2 = М 1 К = ôх 2 – х 1 ô= =

3) Точка К совпадает с точкой М 1 , но отлична от точки М 2 . В этом случае х 2 = х 1 и d =

М 1 М 2 = КМ 2 = ôу 2 - у 1 ô= = .

4) Точка М 2 совпадает с точкой М 1 . Тогда х 1 = х 2 , у 1 = у 2 и

d = М 1 М 2 = О = .

Деление отрезка в данном отношении.

Пусть на плоскости дан произвольный отрезок М 1 М 2 и пусть М ─ любая точка этого

отрезка, отличная от точки М 2 (рис. 1.6). Число l, определяемое равенством l = , называется отношением, в котором точка М делит отрезок М 1 М 2 .

Теорема 1.2. Если точка М(х;у) делит отрезок М 1 М 2 в отношении l, то координаты этой определяются формулами

х = , у = , (4)

где (х 1 ;у 1) ─ координаты точки М 1 , (х 2 ;у 2) ─ координаты точки М 2 .

Доказательство. Докажем первую из формул (4). Вторая формула доказывается аналогично. Возможны два случая.

х = х 1 = = = .

2) Прямая М 1 М 2 не перпендикулярна оси Ох (рис. 1.6). Опустим перпендикуляры из точек М 1 , М, М 2 на ось Ох и обозначим точки их пересечения с осью Ох соответственно Р 1 , Р, Р 2 . По теореме о пропорциональных отрезках = l.

Т.к. Р 1 Р = ôх – х 1 ô, РР 2 = ôх 2 – хô и числа (х – х 1) и (х 2 – х) имеют один и тот же знак (при х 1 < х 2 они положительны, а при х 1 > х 2 отрицательны), то

l = = ,

х – х 1 = l(х 2 – х), х + lх = х 1 + lх 2 ,

х = .

Следствие 1.2.1. Если М 1 (х 1 ;у 1) и М 2 (х 2 ;у 2) ─ две произвольные точки и точка М(х;у) ─ середина отрезка М 1 М 2 , то

х = , у = (5)

Доказательство. Так как М 1 М = М 2 М, то l = 1 и по формулам (4) получаем формулы (5).

Площадь треугольника.

Теорема 1.3. Для любых точек А(х 1 ;у 1), В(х 2 ;у 2) и С(х 3 ;у 3), не лежащих на одной

прямой, площадь S треугольника АВС выражается формулой

S = ô(х 2 – х 1)(у 3 – у 1) – (х 3 – х 1)(у 2 – у 1)ô (6)

Доказательство. Площадь ∆ АВС, изображённого на рис. 1.7, вычисляем следующим

S ABC = S ADEC + S BCEF – S ABFD .

Вычисляем площади трапеций:

S ADEC =
,

S BCEF =

S ABFD =

Теперь имеем

S ABC = ((х 3 – х 1)(у 3 + у 1) + (х 3 – х 2)(у 3 + у 2) - (х 2 – -х 1)(у 1 + у 2)) = (х 3 у 3 – х 1 у 3 + х 3 у 1 – х 1 у 1 + + х 2 у 3 – -х 3 у 3 + х 2 у 2 – х 3 у 2 – х 2 у 1 + х 1 у 1 – х 2 у 2 + х 1 у 2) = (х 3 у 1 – х 3 у 2 + х 1 у 2 – х 2 у 1 + х 2 у 3 –

Х 1 у 3) = (х 3 (у 1 – у 2) + х 1 у 2 – х 1 у 1 + х 1 у 1 – х 2 у 1 + у 3 (х 2 – х 1)) = (х 1 (у 2 – у 1) – х 3 (у 2 – у 1) + +у 1 (х 1 – х 2) – у 3 (х 1 – х 2)) = ((х 1 – х 3)(у 2 – у 1) + (х 1 – х 2)(у 1 – у 3)) = ((х 2 – х 1)(у 3 – у 1) –

- (х 3 – х 1)(у 2 – у 1)).

Для другого расположения ∆ АВС формула (6) доказывается аналогично, но может получиться со знаком «-». Поэтому в формуле (6) ставят знак модуля.


Лекция 2.

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

2.1. Пусть на плоскости задана прямоугольная система координат и некоторая линия L.

Определение 2.1. Уравнение вида F(x;y) = 0, связывающее переменные величины x и y, называется уравнение линии L (в заданной системе координат), если этому уравнению удовлетворяют координаты любой точки, лежащей на линии L, и не удовлетворяют координаты никакой точки, не лежащей на этой прямой.

Примеры уравнений линий на плоскости.

1) Рассмотрим прямую, параллельную оси Oy прямоугольной системы координат (рис. 2.1). Обозначим буквой A точку пересечения этой прямой с осью Ox, (a;o) ─ её ор-

динаты. Уравнение x = a является уравнением данной прямой. Действительно, этому уравнению удовлетворяют координаты любой точки M(a;y) этой прямой и не удовлетворяют координаты ни одной точки, не лежащей на прямой. Если a = 0, то прямая совпадает с осью Oy, которая имеет уравнение x = 0.

2) Уравнение x - y = 0 определяет множество точек плоскости, составляющих биссектрисы I и III координатных углов.

3) Уравнение x 2 - y 2 = 0 ─ это уравнение двух биссектрис координатных углов.

4) Уравнение x 2 + y 2 = 0 определяет на плоскости единственную точку O(0;0).

5) Уравнение x 2 + y 2 = 25 ─ уравнение окружности радиуса 5 с центром в начале координат.

Здравствуйте,

Используется PHP:

С уважением, Александр.

Здравствуйте,

Уже достаточное время мучаюсь с проблемой: пытаюсь рассчитать расстояние между двумя произвольными точками, которые находятся на удалении от 30 до 1500 метров друг от друга.

Используется PHP:

$cx=31.319738; //координата x первой точки
$cy=60.901638; //координата y первой точки

$x=31.333312; //координата x второй точки
$y=60.933981; //координата y второй точки

$mx=abs($cx-$x); //высчитываем разницу иксов (первый катет прямоугольного треугольника), функция abs(x) - возвращает модуль числаx x
$my=abs($cy-$y); //высчитываем разницу игреков (второй катет прямоугольного треугольника)

$dist=sqrt(pow($mx,2)+pow($my,2)); //Получаем расстояние до метро (длину гипотенузы по правилу гипотенуза равна корню из суммы квадратов катетов)

Если непонятно, поясняю: я представляю, что расстояние между двумя точками - это гипотенуза прямоугольного треугольника. Тогда разница между иксами каждой из двух точек будет одним из катетов, а другим катетом будет разница игреков этих же двух точек. Тогда, посчитав разницы иксов и игреков, можно по формуле вычислить длину гипотенузы (т.е. расстояние между двумя точками).

Я знаю, что это правило хорошо работает для декартовой системы координат, однако, оно должно более-менее работать и через координаты longlat, т.к. измеряемое расстояние между двумя точками пренебрежимо мало (от 30 до 1500 метров).

Однако, расстояние по данному алгоритму вычисляется неверно (например, расстояние1, расчитанное по этому алгоритму, превышает расстояние2 всего на 13%, тогда как в реальности расстояние1 равно 1450 метров, я расстояние2 равно 970 метров, то есть на самом делие разница достигает почти 50%).

Если кто-то сможет помочь, буду очень признателен.

С уважением, Александр.

","contentType":"text/html"},"proposedBody":{"source":"

Здравствуйте,

Уже достаточное время мучаюсь с проблемой: пытаюсь рассчитать расстояние между двумя произвольными точками, которые находятся на удалении от 30 до 1500 метров друг от друга.

Используется PHP:

$cx=31.319738; //координата x первой точки
$cy=60.901638; //координата y первой точки

$x=31.333312; //координата x второй точки
$y=60.933981; //координата y второй точки

$mx=abs($cx-$x); //высчитываем разницу иксов (первый катет прямоугольного треугольника), функция abs(x) - возвращает модуль числаx x
$my=abs($cy-$y); //высчитываем разницу игреков (второй катет прямоугольного треугольника)

$dist=sqrt(pow($mx,2)+pow($my,2)); //Получаем расстояние до метро (длину гипотенузы по правилу гипотенуза равна корню из суммы квадратов катетов)

Если непонятно, поясняю: я представляю, что расстояние между двумя точками - это гипотенуза прямоугольного треугольника. Тогда разница между иксами каждой из двух точек будет одним из катетов, а другим катетом будет разница игреков этих же двух точек. Тогда, посчитав разницы иксов и игреков, можно по формуле вычислить длину гипотенузы (т.е. расстояние между двумя точками).

Я знаю, что это правило хорошо работает для декартовой системы координат, однако, оно должно более-менее работать и через координаты longlat, т.к. измеряемое расстояние между двумя точками пренебрежимо мало (от 30 до 1500 метров).

Однако, расстояние по данному алгоритму вычисляется неверно (например, расстояние1, расчитанное по этому алгоритму, превышает расстояние2 всего на 13%, тогда как в реальности расстояние1 равно 1450 метров, я расстояние2 равно 970 метров, то есть на самом делие разница достигает почти 50%).

Если кто-то сможет помочь, буду очень признателен.

С уважением, Александр.

Здравствуйте,

Уже достаточное время мучаюсь с проблемой: пытаюсь рассчитать расстояние между двумя произвольными точками, которые находятся на удалении от 30 до 1500 метров друг от друга.

Используется PHP:

$cx=31.319738; //координата x первой точки
$cy=60.901638; //координата y первой точки

$x=31.333312; //координата x второй точки
$y=60.933981; //координата y второй точки

$mx=abs($cx-$x); //высчитываем разницу иксов (первый катет прямоугольного треугольника), функция abs(x) - возвращает модуль числаx x
$my=abs($cy-$y); //высчитываем разницу игреков (второй катет прямоугольного треугольника)

$dist=sqrt(pow($mx,2)+pow($my,2)); //Получаем расстояние до метро (длину гипотенузы по правилу гипотенуза равна корню из суммы квадратов катетов)

Если непонятно, поясняю: я представляю, что расстояние между двумя точками - это гипотенуза прямоугольного треугольника. Тогда разница между иксами каждой из двух точек будет одним из катетов, а другим катетом будет разница игреков этих же двух точек. Тогда, посчитав разницы иксов и игреков, можно по формуле вычислить длину гипотенузы (т.е. расстояние между двумя точками).

Я знаю, что это правило хорошо работает для декартовой системы координат, однако, оно должно более-менее работать и через координаты longlat, т.к. измеряемое расстояние между двумя точками пренебрежимо мало (от 30 до 1500 метров).

Однако, расстояние по данному алгоритму вычисляется неверно (например, расстояние1, расчитанное по этому алгоритму, превышает расстояние2 всего на 13%, тогда как в реальности расстояние1 равно 1450 метров, я расстояние2 равно 970 метров, то есть на самом делие разница достигает почти 50%).

Если кто-то сможет помочь, буду очень признателен.

С уважением, Александр.

","contentType":"text/html"},"authorId":"108613929","slug":"15001","canEdit":false,"canComment":false,"isBanned":false,"canPublish":false,"viewType":"old","isDraft":false,"isOnModeration":false,"isSubscriber":false,"commentsCount":14,"modificationDate":"Wed Jun 27 2012 20:07:00 GMT+0000 (UTC)","showPreview":true,"approvedPreview":{"source":"

Здравствуйте,

Уже достаточное время мучаюсь с проблемой: пытаюсь рассчитать расстояние между двумя произвольными точками, которые находятся на удалении от 30 до 1500 метров друг от друга.

Используется PHP:

$cx=31.319738; //координата x первой точки
$cy=60.901638; //координата y первой точки

$x=31.333312; //координата x второй точки
$y=60.933981; //координата y второй точки

$mx=abs($cx-$x); //высчитываем разницу иксов (первый катет прямоугольного треугольника), функция abs(x) - возвращает модуль числаx x
$my=abs($cy-$y); //высчитываем разницу игреков (второй катет прямоугольного треугольника)

$dist=sqrt(pow($mx,2)+pow($my,2)); //Получаем расстояние до метро (длину гипотенузы по правилу гипотенуза равна корню из суммы квадратов катетов)

Если непонятно, поясняю: я представляю, что расстояние между двумя точками - это гипотенуза прямоугольного треугольника. Тогда разница между иксами каждой из двух точек будет одним из катетов, а другим катетом будет разница игреков этих же двух точек. Тогда, посчитав разницы иксов и игреков, можно по формуле вычислить длину гипотенузы (т.е. расстояние между двумя точками).

Я знаю, что это правило хорошо работает для декартовой системы координат, однако, оно должно более-менее работать и через координаты longlat, т.к. измеряемое расстояние между двумя точками пренебрежимо мало (от 30 до 1500 метров).

Однако, расстояние по данному алгоритму вычисляется неверно (например, расстояние1, расчитанное по этому алгоритму, превышает расстояние2 всего на 13%, тогда как в реальности расстояние1 равно 1450 метров, я расстояние2 равно 970 метров, то есть на самом делие разница достигает почти 50%).

Если кто-то сможет помочь, буду очень признателен.

С уважением, Александр.

","html":"Здравствуйте,","contentType":"text/html"},"proposedPreview":{"source":"

Здравствуйте,

Уже достаточное время мучаюсь с проблемой: пытаюсь рассчитать расстояние между двумя произвольными точками, которые находятся на удалении от 30 до 1500 метров друг от друга.

Используется PHP:

$cx=31.319738; //координата x первой точки
$cy=60.901638; //координата y первой точки

$x=31.333312; //координата x второй точки
$y=60.933981; //координата y второй точки

$mx=abs($cx-$x); //высчитываем разницу иксов (первый катет прямоугольного треугольника), функция abs(x) - возвращает модуль числаx x
$my=abs($cy-$y); //высчитываем разницу игреков (второй катет прямоугольного треугольника)

$dist=sqrt(pow($mx,2)+pow($my,2)); //Получаем расстояние до метро (длину гипотенузы по правилу гипотенуза равна корню из суммы квадратов катетов)

Если непонятно, поясняю: я представляю, что расстояние между двумя точками - это гипотенуза прямоугольного треугольника. Тогда разница между иксами каждой из двух точек будет одним из катетов, а другим катетом будет разница игреков этих же двух точек. Тогда, посчитав разницы иксов и игреков, можно по формуле вычислить длину гипотенузы (т.е. расстояние между двумя точками).

Я знаю, что это правило хорошо работает для декартовой системы координат, однако, оно должно более-менее работать и через координаты longlat, т.к. измеряемое расстояние между двумя точками пренебрежимо мало (от 30 до 1500 метров).

Однако, расстояние по данному алгоритму вычисляется неверно (например, расстояние1, расчитанное по этому алгоритму, превышает расстояние2 всего на 13%, тогда как в реальности расстояние1 равно 1450 метров, я расстояние2 равно 970 метров, то есть на самом делие разница достигает почти 50%).

Если кто-то сможет помочь, буду очень признателен.

С уважением, Александр.

","html":"Здравствуйте,","contentType":"text/html"},"titleImage":null,"tags":[{"displayName":"измерение расстояний","slug":"izmerenie-rasstoyaniy","categoryId":"10615601","url":"/blog/mapsapi??tag=izmerenie-rasstoyaniy"},{"displayName":"API 1.x","slug":"api-1-x","categoryId":"150000131","url":"/blog/mapsapi??tag=api-1-x"}],"isModerator":false,"commentsEnabled":true,"url":"/blog/mapsapi/15001","urlTemplate":"/blog/mapsapi/%slug%","fullBlogUrl":"https://yandex.ru/blog/mapsapi","addCommentUrl":"/blog/createComment/mapsapi/15001","updateCommentUrl":"/blog/updateComment/mapsapi/15001","addCommentWithCaptcha":"/blog/createWithCaptcha/mapsapi/15001","changeCaptchaUrl":"/blog/api/captcha/new","putImageUrl":"/blog/image/put","urlBlog":"/blog/mapsapi","urlEditPost":"/blog/56a98d48b15b79e31e0d54c8/edit","urlSlug":"/blog/post/generateSlug","urlPublishPost":"/blog/56a98d48b15b79e31e0d54c8/publish","urlUnpublishPost":"/blog/56a98d48b15b79e31e0d54c8/unpublish","urlRemovePost":"/blog/56a98d48b15b79e31e0d54c8/removePost","urlDraft":"/blog/mapsapi/15001/draft","urlDraftTemplate":"/blog/mapsapi/%slug%/draft","urlRemoveDraft":"/blog/56a98d48b15b79e31e0d54c8/removeDraft","urlTagSuggest":"/blog/api/suggest/mapsapi","urlAfterDelete":"/blog/mapsapi","isAuthor":false,"subscribeUrl":"/blog/api/subscribe/56a98d48b15b79e31e0d54c8","unsubscribeUrl":"/blog/api/unsubscribe/56a98d48b15b79e31e0d54c8","urlEditPostPage":"/blog/mapsapi/56a98d48b15b79e31e0d54c8/edit","urlForTranslate":"/blog/post/translate","urlRelateIssue":"/blog/post/updateIssue","urlUpdateTranslate":"/blog/post/updateTranslate","urlLoadTranslate":"/blog/post/loadTranslate","urlTranslationStatus":"/blog/mapsapi/15001/translationInfo","urlRelatedArticles":"/blog/api/relatedArticles/mapsapi/15001","author":{"id":"108613929","uid":{"value":"108613929","lite":false,"hosted":false},"aliases":{},"login":"mrdds","display_name":{"name":"mrdds","avatar":{"default":"0/0-0","empty":true}},"address":"[email protected]","defaultAvatar":"0/0-0","imageSrc":"https://avatars.mds.yandex.net/get-yapic/0/0-0/islands-middle","isYandexStaff":false},"originalModificationDate":"2012-06-27T16:07:49.000Z","socialImage":{"orig":{"fullPath":"https://avatars.mds.yandex.net/get-yablogs/47421/file_1456488726678/orig"}}}}}">

Определение расстояние между двумя точками ТОЛЬКО по координатам longlat.

$my=abs($cy-$y); //высчитываем разницу игреков (второй катет прямоугольного треугольника)

$dist=sqrt(pow($mx,2)+pow($my,2)); //Получаем расстояние до метро (длину гипотенузы по правилу гипотенуза равна корню из суммы квадратов катетов)

Если непонятно, поясняю: я представляю, что расстояние между двумя точками - это гипотенуза прямоугольного треугольника. Тогда разница между иксами каждой из двух точек будет одним из катетов, а другим катетом будет разница игреков этих же двух точек. Тогда, посчитав разницы иксов и игреков, можно по формуле вычислить длину гипотенузы (т.е. расстояние между двумя точками).

Я знаю, что это правило хорошо работает для декартовой системы координат, однако, оно должно более-менее работать и через координаты longlat, т.к. измеряемое расстояние между двумя точками пренебрежимо мало (от 30 до 1500 метров).

Однако, расстояние по данному алгоритму вычисляется неверно (например, расстояние1, расчитанное по этому алгоритму, превышает расстояние2 всего на 13%, тогда как в реальности расстояние1 равно 1450 метров, я расстояние2 равно 970 метров, то есть на самом делие разница достигает почти 50%).

Если кто-то сможет помочь, буду очень признателен.

С уважением, Александр.

ТЕОРЕТИЧЕСКИЕ ВОПРОСЫ

АНАЛИТИЧЕСКАЯ ГЕОМЕТРИЯ НА ПЛОСКОСТИ

1. Метод координат: числовая прямая, координаты на прямой; прямоугольная (декартовая) система координат на плоскости; полярные координаты.

Рассмотрим какую–нибудь прямую. Выберем на ней направление (тогда она станет осью) и некоторую точку 0 (начало координат). Прямая с выбранным направлением и началом координат называется координатной прямой (при этом считаем, что единица масштаба выбрана).

Пусть М – произвольная точка на координатной прямой. Поставим в соответствии точке М вещественное число x , равное величине ОМ отрезка : x=ОМ. Число x называется координатой точки М .

Таким образом, каждой точке координатной прямой соответствует определенное вещественное число – ее координата. Справедливо и обратное, каждому вещественному числу x соответствует некоторая точка на координатной прямой, а именно такая точка М , координата которой равна x. Такое соответствие называется взаимно однозначным.

Итак, вещественные числа можно изображать точками координатной прямой, т.е. координатная прямая служит изображением множества всех вещественных чисел. Поэтому множество всех вещественных чисел называют числовой прямой , а любое число – точкой этой прямой. Около точки на числовой прямой часто указывают число – ее координату.

Прямоугольная (или декартовая) система координат на плоскости.

Две взаимно перпендикулярные оси О x и О y , имеющие общее начало О и одинаковую единицу масштаба, образуют прямоугольную (или декартовую) систему координат на плоскости.

Ось ОХ называется осью абсцисс, ось ОY – осью ординат. Точка О пересечения осей называется началом координат. Плоскость, в которой расположены оси ОХ и ОY , называется координатной плоскостью и обозначается О xy .

Итак, прямоугольная система координат на плоскости устанавливает взаимно однозначное соответствие между множеством всех точек плоскости и множеством пар чисел, которое дает возможность при решении геометрических задач применить алгебраические методы. Оси координат разбивают плоскость на 4 части их называют четвертями , квадратными или координатными углами .

Полярные координаты.

Полярная система координат состоит из некоторой точки О , называемой полюсом , и исходящего из нее луча ОЕ , называемого полярной осью. Кроме того, задается единица масштаба для измерения длин отрезков. Пусть задана полярная система координат и пусть М – произвольная точка плоскости. Обозначим через Р – расстояние точки М от точки О , а через φ – угол, на который луч повернуть против часовой стрелки полярную ось для совмещения с лучом ОМ .

Полярными координатами точки М называют числа Р и φ . Число Р считают первой координатой и называют полярным радиусом , число φ – второй координатой и называют полярным углом .

Точка М с полярными координатами Р и φ обозначаются так: М( ;φ). Установим связь между полярными координатами точки и ее прямоугольными координатами.
При этом будем предполагать, что начало прямоугольной системы координат находится в полюсе, а положительная полуось абсцисс совпадает с полярной осью.

Пусть точка М имеет прямоугольные координаты X и Y и полярные координаты Р и φ .

(1)

Доказательство.

Опусти из точек М 1 и М 2 перпендикуляры М 1 В и М 1 А, . так как (x 2 ; y 2) . По теореме, если М 1 (х 1) и М 2 (х 2) – любые две точки и α– расстояние между ними, то α = ‌‌‌‍‌‌|x 2 - x 1 | .




Top