Даны 4 точки на плоскости, образующие выпуклый четырехугольник и точка внутри этого 4-угольника. Все точки заданы своими координатами. Найдите площадь этого четырехугольника.
Пожалуйста помогите решить
sheka
11.10.2010 0:32
В 9м классе на пары математики ходил? Вот и решай. Хотя бы свои идеи выдавай.
TarasBer
11.10.2010 1:00
> и точка внутри этого 4-угольника
Не нужна
Площадь 4угольника ABCD равно сумме площадей треугольников ABC и CDA. А площадь треугольника ABC равна половине площади параллелограмма, натянутого на вектора AB и AC. А площадь паралелограмма сам рассчитай, формула должно простая получиться.
Dranik7
11.10.2010 2:53
function dl(x1,x2,y1,y2:integer):integer;
begin
dl:=trunc(sqrt(sqr(y2-y1)+sqr(x2-x1)));
end;
var
s,a,b,c,d,x1,x2,x3,x4,y1,y2,y3,y4:integer;
begin
readln(x1,y1);
readln(x2,y2);
readln(x3,y3);
readln(x4,y4);
a:=dl(x1,y1,x2,y2);
b:=dl(x2,y2,x3,y3);
c:=dl(x3,y3,x4,y4);
d:=dl(x4,y4,x1,y1);
S:= ФОРМУЛА
writeln(s);
readln;
end.
Вот сделал что смог, неполучается выразить формулу
sheka
11.10.2010 3:11
TarasBer, неужели выводить синусы итд? Используй, наверное, формулу Герона. (сделай ее функцией) function герон(длина1,длина2,длина3);
Почувствуй разницу между 4 вычислениями квадратного корня (у куче умножений, вычитаний итд) в формуле Герона и 2 умножениями и 1 вычитанием в нормальной формуле.
Это же так просто - нарисовать параллелограмм на бумаге, дополнить его до прямоугольника со сторонами, параллельными координатам, разбить дополнение на прямоугольные треугольники со сторонами, параллельными координатам, вычилить все площади по простейшим формулам, скомпоновать и получить простой ответ. Да и выражение из формулы Герона наверняка можно упростить чисто алгебраическими методами, если порасписывать да скобки пораскрывать на 5 страниц мелким почерком. Просто прежде, чем скармливать компьютеру выражение, надо сначала на бумаге посмотреть, можно ли его упростить.
Lapp
11.10.2010 7:41
Я согласен с Тарасом по поводу вычисления площади - на координатной сетке и в 10-м классе можно найти более эффективные методы вычисления площади, чем Герон. Но в одном я бы все же уточнил..
Цитата(TarasBer @ 10.10.2010 22:00)
Площадь 4угольника ABCD равно сумме площадей треугольников ABC и CDA
Тарас, никто не сказал, что точки перечислены в порядке обхода выпуклого 4-угольника. В условии сказано "даны точки, образующие выпуклый четырехугольник", а не "дан выпуклый четырехугольник ABCD". Поэтому их придется сначала расположить в нужном порядке..
Добавлено через 2 мин. P.S. зачем дана внутренняя точка, остается загадкой природы..
Dranik7
11.10.2010 9:40
Вот что у меня получилось
function dl(x1,x2,y1,y2:integer):integer;
begin
dl:=trunc(sqrt(sqr(y2-y1)+sqr(x2-x1)));
end;
var
p2,a,b,c,d,x1,x2,x3,x4,y1,y2,y3,y4:integer;
poly1,poly2,s1,s2,s:real;
begin
readln(x1,y1);
readln(x2,y2);
readln(x3,y3);
readln(x4,y4);
a:=dl(x1,y1,x2,y2);
b:=dl(x2,y2,x3,y3);
c:=dl(x3,y3,x4,y4);
d:=dl(x4,y4,x1,y1);
poly1:=(a+b+c)/2;
poly2:=(a+c+d)/2;
S1:=sqrt(poly1*(poly1-a)*(poly1-b)*(poly1-c));
s2:=sqrt(poly2*(poly1-a)*(poly2-c)*(poly2-d));
s:=S1+s2;
writeln(s:1:1);
readln;
end.
TarasBer
11.10.2010 12:51
> Вот что у меня получилось
Препода это устроит, но это не дело. Уже второй раз вижу этот кошмарный метод вычисления площади. Так вот, площадь треугольника ((x1,y1),(x2,y2),(x3,y3)) равна 0.5*abs( (x3-x1)*(y2-y1) - (x2-x1)*(y3-y1) ) Учите векторную алгебру и геометрические свойства скалярных и векторных произведений.
Добавлено через 6 мин. > Тарас, никто не сказал, что точки перечислены в порядке обхода выпуклого 4-угольника.
Блин, точно. Внутренняя точка тут не поможет никак. Значит, есть 3 способа расположить эти точки по кругу - ABCD ACBD ACDB Для каждого из них считаем площадь 4-угольника, разбивая её на 2 треугольника, но площади треугольников берём со знаком. Из 3 результатов берём максимальный по модулю.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.