/ y1. Однако так поступать нельзя, так как x1 или y1 могут оказаться равными 0. Вместо этого мы проверяем равенство x1 * y2 = x2 * y1.
Мы приведем пример функции на Pascal'е для решения этой задачи, введя, для удобства записи, тип point.
type point = record
x, y: integer;
end;
function isStraightLine (A, B, C: point)
: boolean;
begin
isStraightLine :=
((B.x - A.x) * (C.y - A.y)
-C.x - A.x) * (B.y - A.y) = 0);
end;
Проблема, не имеющая прямого отношения к программированию: если мы возьмем векторы AB и BC, то получится ли другая функция, отвечающая на тот же вопрос?
Оказывается, что выражение, которое вычислялось в предыдущем упражнении, позволяет ответить еще на один важный (как будет ясно позже) вопрос. Объяснение этого факта мы оставим любителям математики.
Пример #2.
Даны 3 точки A, B и C, не лежащие на одной прямой. Определить, является обход A®B®C обходом по часовой стрелке или против часовой стрелки.
Решение
function isClockWise (A, B,