Методичка. Решение геометрических задач на областной

advertisement
МБОУ ДОД СЮТ г. Кохма
Методическая разработка
Решение геометрических задач на
областной олимпиаде.
Составитель:
Преподаватель дополнительного образования:
Трупиков В.Н.
Кохма-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. строго внутри него.
Download