Вычислительная геометрия. Стороны треугольника

Содержание

Слайд 2

Скалярное произведение векторов a · b = |a| · |b| cos

Скалярное произведение векторов

a · b = |a| · |b| cos α
a

· b = ax · bx + ay · by
Слайд 3

Косое произведение векторов [a, b] = |a||b|sinθ [a, b] = x1y2 — x2y1.

Косое произведение векторов

[a, b] = |a||b|sinθ
[a, b] = x1y2 — x2y1.

Слайд 4

По введенным трем числам a, b, c определить существует ли треугольник

По введенным трем числам a, b, c определить существует ли треугольник

с такими сторонами. 

Неравенство треугольника является необходимым и достаточным условием существования треугольника
a + b > c
a + c > b
b + c > a

Слайд 5

Определить существует ли треугольник с такими координатами вершин. Треугольника не существует

Определить существует ли треугольник с такими координатами вершин. 

Треугольника не существует когда

данные три точки лежат на одной прямой.
Проверяется через косое произведение векторов:
[a, b] = x1y2 — x2y1.
Если оно равно нулю, то векторы коллинеарные, то есть все три точки лежат на одной прямой. 
Слайд 6

Треугольник задан своими сторонами. Определить тип треугольника: тупоугольный, прямоугольный или остроугольный.

Треугольник задан своими сторонами. Определить тип треугольника: тупоугольный, прямоугольный или остроугольный.

Теорема

косинусов:

Вычислять косинус угла не обязательно, необходимо учесть лишь его знак: Если cosα > 0, то a2 < b2 + c2 – треугольник остроугольный
Если cosα = 0, то a2 = b2 + c2 – треугольник прямоугольный
Если cosα < 0, то a2 > b2 + c2 – треугольник тупоугольный
где a – большая сторона.

Слайд 7

По данным сторонам треугольника найти его площадь.

По данным сторонам треугольника найти его площадь. 

Слайд 8

Вычислить площадь треугольника заданного координатами своих вершин. Косое произведение двух векторов

Вычислить площадь треугольника заданного координатами своих вершин.

Косое произведение двух векторов определяет

ориентированную площадь параллелограмма основанного на этих векторах.
S = (x1y2 — x2y1) / 2 — ориентированная площадь треугольника
X1,Y1 – координаты вектора А

 

Слайд 9

Вычисление площади многоугольника заданного координатами своих вершин. Метод трапеций S =

Вычисление площади многоугольника заданного координатами своих вершин.

Метод трапеций
S = SA1 A2 B2 B1 + SA2 A3 B3 B2 +

SA3 A4 B5 B3 + SA4 A5 B6 B5 - SA5 A6 B4 B6 - SA6 A1 B1 B4
Площади трапеций: полусумма оснований на высоту SA1 A2 B2 B1 = 0.5 * (A1B1 + A2B2) *(B2 — B1)
Слайд 10

Определить взаимное расположении точки и прямой: лежит выше прямой, на прямой,

Определить взаимное расположении точки и прямой: лежит выше прямой, на прямой,

под прямой.

Косое произведение двух векторов положительно, если поворот от первого вектора ко второму идет против часовой стрелки, равно нулю, если векторы коллинеарны и отрицательно, если поворот идет по часовой стрелки.

Слайд 11

Симметрия (Время: 1 сек. Память: 16 Мб Сложность: 19%) Многие из

Симметрия
(Время: 1 сек. Память: 16 Мб Сложность: 19%)
Многие из вас, вероятно,

знакомы с понятием симметрии относительно прямой. Пусть на плоскости расположена прямая L и точка A. Точка B называется симметричной точке A относительно прямой L, если отрезок АВ перпендикулярен прямой L и делится пополам точкой пересечения с ней. В частности, если точка А лежит на прямой L, то точка B совпадает с точкой А.
Задана прямая L, параллельная одной из осей координат, и точка А. Найдите точку В, симметричную А относительно L.
Входные данные
Первая строка входного файла INPUT.TXT содержит 4 числа: x1, y1, x2, y2 – координаты двух различных точек, через которые проходит прямая L. Вторая строка входного файла содержит 2 числа xA и yA – координаты точки А. Все числа во входном файле целые и не превосходят 108 по модулю.
Выходные данные
В выходной файл OUTPUT.TXT выведите числа xB и yB – координаты точки B.
Слайд 12

Слайд 13

var x1,y1,x2,y2,ax,ay,bx,by:longint; begin assign(input,'input.txt'); reset(input); assign(output,'output.txt'); rewrite(output); readln(x1,y1,x2,y2,ax,ay); if x1=x2 then

var x1,y1,x2,y2,ax,ay,bx,by:longint;
begin
assign(input,'input.txt'); reset(input);
assign(output,'output.txt'); rewrite(output);
readln(x1,y1,x2,y2,ax,ay);
if x1=x2 then
begin
bx:=2*x1-ax; by:=ay;
end;
if y1=y2 then


begin
by:=2*y1-ay; bx:=ax;
end;
writeln(bx,' ',by);
end.
Слайд 14

Треугольник и точка (Время: 1 сек. Память: 16 Мб Сложность: 32%)

Треугольник и точка
(Время: 1 сек. Память: 16 Мб Сложность: 32%)
В декартовой

системе координат на плоскости заданы координаты вершин треугольника и еще одной точки. Требуется написать программу, определяющую, принадлежит ли эта точка треугольнику.
Входные данные
В четырех строках входного файла INPUT.TXT находятся пары целых чисел - координаты точек. Числа в первых трех строках - это координаты вершин треугольника (x1,y1), (x2,y2), (х3,у3), в четвертой строке - координаты тестируемой точки (x4,у4). Все координаты не превышают 10000 по абсолютной величине.
Выходные данные
В выходной файл OUTPUT.TXT необходимо вывести слово «In», если точка находится внутри треугольника и «Out» в противном случае.
Слайд 15

Слайд 16

 

Слайд 17

Фонарики (Время: 1 сек. Память: 16 Мб Сложность: 31%) «Одна голова

Фонарики
(Время: 1 сек. Память: 16 Мб Сложность: 31%)
«Одна голова хорошо, а

две лучше. Одна лампочка хорошо, а две лучше!» - подумал Миша, и решил собрать фонарик с двумя лампочками. Теперь он хочет узнать, насколько фонарик с двумя лампочками лучше, чем фонарик с одной. Для этого Миша посветил фонариком на стену, и каждая из лампочек осветила на ней круг.
Эффективность фонарика Миша хочет оценить через площадь освещенной части стены. Миша догадался измерить координаты центров освещенных кругов и их радиусы (которые оказались одинаковыми). Причем, площадь, освещаемая фонариком с одной лампочкой известна, т.к. описана в документации, прилагаемой к фонарику. Но что делать дальше он не знает. Напишите программу, которая поможет Мише.
Входные данные
В первых двух строчках входного файла INPUT.TXT содержатся координаты (x1,y1) и (x2,y2) - центры кругов от лампочек собранного Мишей фонарика. В третьей строке задан радиус r описанных выше кругов, а четвертая строка содержит площадь освещения s фонариком из одной лампочки. Все числа целые и удовлетворяют следующим ограничениям: 1 ≤ x1,y1,x2,y2,r ≤ 100, 1 ≤ s ≤ 105. Так же заметим, что площади, освещаемые разными фонариками, отличаются друг от друга более чем на 10-3.
Выходные данные
В выходной файл OUTPUT.TXT выведите «YES», если Мишин фонарик лучше старого (т.е. освещает большую площадь) и «NO» в противном случае.
Слайд 18