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

Содержание

Слайд 2

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

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

Скалярное произведение векторов a · b = |a| · |b| cos α
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 = SA1 A2 B2 B1 + SA2 A3 B3 B2 + SA3 A4 B5 B3 +

Вычисление площади многоугольника заданного координатами своих вершин. Метод трапеций S = SA1
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.

Слайд 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
begin
bx:=2*x1-ax; by:=ay;
end;
if y1=y2 then
begin

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

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» в противном случае.

Слайд 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» в противном случае.