Решение задачи 1.Даны 2 точки A(x1,y1) и B(x2,y2). Определить, какой из отрезков, OA или OB, образует больший угол с осью OX.В курсе высшей алгебры показывается, что еслиD=x1*y2-x2*y1<0,</span>то угол, определяемый точкой A больше, чем угол, определяемый точкой B; если D=0, то углы равны, и если D>0, то угол, образуемый OB, больше.Например:A(-1,3), B(0,-2), x1*y2-x2*y1=2>0,и следовательно, отрезок OA образует меньший угол с осью OX (угол всегда отсчитываются против часовой стрелки !).[Назад]Решение задачи 2.Как определить, принадлежит ли точка A(x,y) отрезку с концевыми точками B(x1,y1) и C(x2,y2)?Точки отрезка z можно описать уравнениемpOB+(1-p)OC=z, 0<=p<=1, OB и OC - векторы.Если существует такое p, 0<=p<=1, чтоpOB+(1-p)OC=A,то A лежит на отрезке, иначе - нет.Равенство (*) расписывается по координатно так:<span>px1+(1-p)x2=xpy1+(1-p)y2=yИз первого уравнения находим p, подставляем во второе: если получаем равенство и0<=p<=1, то A на отрезке, иначе - нет.<span>[Назад]Решение задачи 3.Найдем какую-нибудь внутреннюю точку A(x,y) выпуклого многоугольника, например, центр масс трех последовательных точек на контуре: A(x,y)=((x1+x2+x3)/3;(y1+y2+y3)/3).На контуре выберем произвольно две последовательные вершины L1 и L2 и вычислим углы, которые образуют отрезки (A,L1) и (A,L2) с осью OX. Если первый угол меньше второго, то обход против часовой стрелки, иначе - по часовой. Для вычисления углов можно использовать функцию arctan(x) в Pascal.Рассмотрим чуть другую задачу:Даны 2 точки A(x1,y1) и B(x2,y2). Определить, какой из отрезков,OA или OB, образует больший угол с осью OX. (Предыдущая задача очевидным образом сводится к этой задаче 1).Если в условии задачи многоугольник невыпуклый, то можно предложить следующий способ решения: находим точку с максимальной абсциссой, и, идя вдоль контура, смотрим: если первое невертикальное ребро отклоняется против часовой стрелки, то это обход против часовой стрелки, иначе - нет.[Назад]Решение задачи 4.Пусть a,b и c - длины отрезков XY, YZ и ZX соответственно. Если перпендикуляр P попадает на отрезок XY, то углы XYZ и YXZ по величине не превосходят 90 градусов (эти оба угла не тупые).По теореме косинусовB2 = A2 + C2 - 2*A*C*cos YXZиC2 = A2 + B2 - 2*A*B*cos XYZЕсли углы XYZ и YXZ не тупые, то cos YXZ и cos XYZ лежат в пределах от 0 до 1, и слaгаемые -2*B*C*cos YXZ и -2*A*B*cos XYZ в приведенных выше формулах неположительны, т.е. в случае, когда перпендикуляр попадает на отрезок XY, должны выполняться одновременно два неравенстваB2 <= A2 + C2</span>иC2 <= A2 + B2,</span>Если хотя бы одно неравенство нарушается, то перпендикуляр попадает на продолжение отрезка . Примечание :Квадрат длины отрезка, например, XY, можно найти по формулеA = (x1-y1)2 + (x2-y2)2