МБОУ ДОД СЮТ г. Кохма Методическая разработка Решение геометрических задач на областной олимпиаде. Составитель: Преподаватель дополнительного образования: Трупиков В.Н. Кохма-2014 Решение геометрических задач на областной олимпиаде. Задача. Две линии на плоскости заданы парами целочисленных координат концевых точек (X1,Y1 - X2,Y2). Определить, пересекаются ли они. Var x0, y0, x1, y1, x2, y2, x3, y3, x4, y4: Real; a1, b1, c1, a2, b2, c2: Real; Begin Write('X1,Y1 - X2,Y2 = '); ReadLn( x1, y1, x2, y2); Write('X3,Y3 - X4,Y4 = '); ReadLn( x3, y3, x4, y4); a1:= -(y2 - y1); {Нахождение коэффициентов} b1:= x2 - x1; {уравнения 1-ой прямой } c1:= x1 * (y2 - y1) - y1 * (x2 - x1); a2:= -(Y4 - Y3); {Нахождение коэффициентов} b2:= x4 - x3; {уравнения 2-ой прямой } c2:= x3 * (y4 - y3) - y3 *(x4 - x3); IF (a1*b2=a2*b1) AND (b1*c2=b2*c1) THEN WriteLn('Прямые совпадают'); IF a1 * b2 - a2 * b1 = 0 THEN WriteLn('Прямые параллельны'); IF a1 * a2 + b1 * b2 = 0 THEN WriteLn('Прямые перпендикулярны'); x0:= (b1*c2 - b2*c1) / (a1*b2 - a2*b1); y0:= (c1*a2 - c2*a1) / (a1*b2 - a2*b1); WriteLn('Прямые пересекаются в точке с координатами: '); WriteLn('X0 = ', x0:7:2, 'Y0 = ', y0:7:2); ReadLn; End. Задача решена с учетом приведенных ниже формул и расчетов: (Y-Y1)/(Y2-Y1) = (X-X1)/(X2-X1) - уравнение прямой проходящей через 2 точки с координатами (X1,Y1-X2,Y2) Преобразование получившегося уравнения к каноническому виду. (Y-Y1)*(X2-X1) = (X-X1)*(Y2-Y1) - запись уравнения в строку; Y*(X2-X1)-Y1*(X2-X1) = X*(Y2-Y1)-X1*(Y2-Y1) - раскрытие скобок; DX = X2-X1; DY = Y2-Y1 - обозначение разности координат; Y*DX-Y1*DX = X*DY-X1*DY - уравнение с использованием DX,DY; DX*Y+(-DY)X+(X1*DY- Y1*DX) = 0 - перенос элементов в левую часть; A = -DY = -(Y2-Y1) - обозначение коэффициентов перед X B = DX = X2-X1 Y; C = (X1*(Y2-Y1)-Y1*(X2-X1)) - свободный член; - канонический вид уравнения прямой; A*X+B*Y+C = 0 A=0 B=0 C=0 - прямая параллельна оси ОХ; - прямая параллельна оси ОY; - прямая проходит через (0,0); X0 = (B1*C2-B2*C1) / (A1*B2-A2*B1) Y0 = (C1*A2-C2*A1) / (A1*B2-A2*B1) - координаты точки пересечения двух прямых; A1 / A2 = B1 / B2 = C1 / C2 - условие совпадения двух прямых; A1*B2-A2*B1 = 0 - две прямые параллельны; A1*A2+B1*B2 = 0 - две прямые перпендикулярны; Условие прохождения через т. пересечения двух прямых, третьей: A1*B2*C3+A3*B1*C2+A2*B3*C1-A3*B2*C1-A2*B1*C3-A1*B3*C2 = 0 Задание. Решить задачи. 1. На плоскости задано N-прямых. Напишите программу, которая определяет, на сколько кусков разбивают плоскость эти прямые. Прямые задаются координатами двух точек принадлежащих каждой прямой. Подсказка. Найдите количество пересечений и используйте теорему Эйлера: Nвершин - Kребер + Lчастей = 1 --> L=K+1-N Пример: 3 \2 / N=3 0,0,0,2 \/ K=9 0,2,2,0 1/\3 L = 9+1-3 = 7 2,0,0,0 __/_7_\__ Ответ 7 частей 6/ 5 \4 2. Два ОТРЕЗКА заданы координатам своих концов (X1,Y1-X2,Y2) Определить, пересекаются они или нет. Если пересекаются, то вывести координаты точки пересечения. Подсказка: Найти точку пересечения и посмотреть значения Y1,Y2 относительно точки пересечения. Теория: A*X+B*Y+C = 0 A = -DY = -(Y2-Y1) B = DX = X2-X1 C = (X1*(Y2-Y1)-Y1*(X2-X1)) - классическое уравнение прямой. - обозначение коэффициентов перед X Y - свободный член Y = k*X+b - вид уравнения прямой не || оси ОY Y=(-A/B)*X+(-C/B) - преобразование в него канонического ур-я k = -A/B = DY/DX = TAN(ALFA) - угловой коэффициент b = -C/DX = Y1-X1*k - отрезок отсекаемый прямой на оси ОY ALFA k>0 k<0 k1 = k2 k1 =-1/k2 k1*k2 = -1 - угол между прямой и осью ОХ - прямая находится в 1,3 четвертях - прямая находится в 2,4 четвертях - прямые параллельны - прямые перпендикулярны Для двух прямых F TAN(F) = (k2-k1)/(1+k1*k2) - угол между двумя прямыми - нахождение угла 3. По уравнению прямой(Y = k*X+b) и координатам концов ОТРЕЗКА (X1,Y1-X2,Y2) определить, пересекаются ли они. Подсказка - подставь Х1, Х2 и сравни Y с Y1, Y2. 4. В компьютер в виде координат Xi,Yi последовательно вводятся точки прямых движения автомобиля. За каждый левый поворот водитель получает штраф - 1000р. Определить количество левых поворотов, сумму штрафа и вывести маршрут движения на экран. 5. Определить пересекаются ли прямая заданная уравнением прямой (Y = k*X+b) и окружность радиуса R. Если пересекаются, то вывести координаты точки пересечения. Подсказка: используйте формулу окружности: Х*Х+Y*Y = R*R 6. Треугольник на плоскости задан координатами своих вершин. Подсчитать по отдельности количество точек с целочисленными координатами лежащими: 1. на границе треугольника; 2. строго внутри него.