Положение точек относительно прямой.
Пусть заданы две произвольные точки (x3,y3 и x4,y4) и прямая линия. Надо определить находятся ли эти точки по одну сторону относительно прямой или по разные.
Рис 3.1
Из выше изложенного видно, что если для двух точек с координатами (xi,yi) и (xj ,yj) значения выражений Axi + Byi + C и Axj + Byj + C имеют одинаковые знаки, то они лежат по одну сторону относительно прямой, если разные знаки - по разные стороны.
Приведем участок текста программы, которая определяет лежат ли точки по одну сторону от прямой или по разные. Условимся, что если они лежат по одну сторону результат работы программы 'YES' иначе 'NO'. Для этого воспользуемся свойством произведения двух чисел.
Знак первого числа
|
Знак второго числа
|
Знак результата
|
Положительное
|
Положительное
|
Положительное
|
Положительное
|
Отрицательное
|
Отрицательное
|
Отрицательное
|
Отрицательное
|
Положительное
|
Отрицательное
|
Положительное
|
Отрицательное
|
Procedure Work;
begin
Rezult:=’ NO’;
а:= y[2]- y[1];
b:= x[1]- x[2];
c:= -x[1]*(y[2]- y[1])+ y[1]*(x[2]- x[1]);
if (a*x[3] + b*y[3] + c)* (a*x[4] + b*y[4] + c)>0 then Rezult:=’YES’;
end;
Здесь мы специально проверяли условие положительности результата, так как это гарантирует то, что точки лежат по разные стороны относительно прямой. Это связано с тем, что одним из возможных вариантов может быть результат, когда произведение равно 0. Это может быть в случае если одна или обе точки лежат на прямой линии, в этом случае можно считать, что они лежат по разные стороны относительно прямой. Если Вы несогласны поменяйте в условии знак '>’ на знак ‘<‘ и соответственно первоначально назначьте Rezult:=’YES’.
Достарыңызбен бөлісу: |