No Image

Как проверить принадлежит ли точка отрезку

2 232 просмотров
10 марта 2020

Урок из серии «Геометрические алгоритмы»

Здравствуйте, дорогой читатель!

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

Для реализации операций сравнения над вещественными данными напишем еще две функции: функцию EqPoint(), которая ,будет проверять, совпадают ли две точки на плоскости и функцию RealMoreEq() , которую будем использовать для проверки отношения «>=» (больше или равно). Причина ввода специальных функций нам уже известна.

Задача. Проверить, принадлежит ли точка отрезку.

Пусть точки — начальная и конечные точки отрезка. — произвольная точка на плоскости.

Вектор с началом в точке и концом в точке будет иметь координаты (x2-x1, y2-y1).

Если P(x, y) – произвольная точка, то координаты вектора равны: (x-x1, y – y1).

Точка Р будет принадлежать отрезку если:

  1. Векторы в и коллинеарны (равно нулю их векторное произведение):
    , т.е. (x-x1)(y2-y1)-(y-y1)(x2-x1) = 0
  2. Абсцисса точки P удовлетворяет условию: или . Иначе точка будет находиться на прямой левее или правее отрезка.

Результаты выполнения программы.

Введите координаты точек: x1, y1, x2, y2, x,y
0.5 1 2.5 2.8 1.203 1.633
Да.

Результаты тестирования в программе GeoGebra:


Сегодня мы написали функцию AtOtres() , которая проверяет принадлежность произвольной точки отрезку, заданному своими координатами.

Ввели еще две функции: EqPoint() и RealMoreEq() для реализации операций сравнения над вещественными данными. Первая проверяет, совпадают ли две точки на плоскости, вторая — используется для проверки отношения «>=».

На следующем уроке, на основе ранее написанных процедур, напишем процедуру определения координат точки пересечения двух отрезков.

На этом я с вами прощаюсь. До встречи на следующем уроке.

Спасибо, сам уже догадался до этого.. .
Кому интересно вот пример (не полный листинг) :
var
Form1: TForm1;
start:integer;
back:TBitmap;
AB,Am,Bm:real;

Читайте также:  Мини кассеты для камеры

function LLine(x1,y1,x2,y2:real):real;
begin
LLine:=sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
end;

У меня есть некая база отрезков (steps) маршрута:

У меня есть координаты точки, которая точно принадлежит к одному из указанных маршрутов. Как мне узнать, к какому участку маршрута принадлежит точка?

  • Вопрос задан более трёх лет назад
  • 3056 просмотров

Важно отметить!
Исходная точка может не находится на прямой между парами участка.
Пример отрезка:

Можно переиначить вопрос:
как найти диапазон точек между двумя парами координат учитывая топографию местности (Google Map API v3 DirectionsRenderer)?

Комментировать
2 232 просмотров
Комментариев нет, будьте первым кто его оставит

Это интересно
Adblock
detector