IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Найти площадь четырехугольника по координатам точки
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Мужской

Репутация: -  0  +


Даны 4 точки на плоскости, образующие выпуклый четырехугольник и точка внутри этого 4-угольника. Все точки заданы своими координатами. Найдите площадь этого четырехугольника.

Пожалуйста помогите решить

Сообщение отредактировано: Dranik7 -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Я.
****

Группа: Пользователи
Сообщений: 809
Пол: Мужской
Реальное имя: Саша

Репутация: -  11  +


В 9м классе на пары математики ходил? Вот и решай. Хотя бы свои идеи выдавай.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


> и точка внутри этого 4-угольника

Не нужна

Площадь 4угольника ABCD равно сумме площадей треугольников ABC и CDA. А площадь треугольника ABC равна половине площади параллелограмма, натянутого на вектора AB и AC. А площадь паралелограмма сам рассчитай, формула должно простая получиться.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Мужской

Репутация: -  0  +


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.


Вот сделал что смог,
неполучается выразить формулу
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Я.
****

Группа: Пользователи
Сообщений: 809
Пол: Мужской
Реальное имя: Саша

Репутация: -  11  +


TarasBer, неужели выводить синусы итд?
Используй, наверное, формулу Герона. (сделай ее функцией)
function герон(длина1,длина2,длина3);

ответ=
герон(dl(xa,ya,xb,yb),dl(xb,yb,xc,yc),dl(xa,ya,xc,yc))+
герон(dl(xc,yc,xd,yd),dl(xd,yd,xa,ya),dl(xa,ya,xc,yc));

Заметь, я использовал чуть подругому твою функцию:
function dl(x1,y1,x2,y2:integer):a тут угадай какой тебе тип подскажет Паскаль?;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


> TarasBer, неужели выводить синусы итд?
> Используй, наверное, формулу Герона. (сделай ее функцией)

ппц

g Векторное произведение


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Я.
****

Группа: Пользователи
Сообщений: 809
Пол: Мужской
Реальное имя: Саша

Репутация: -  11  +


Точно smile.gif
Это как раз учат в 10м классе)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


Почувствуй разницу между 4 вычислениями квадратного корня (у куче умножений, вычитаний итд) в формуле Герона и 2 умножениями и 1 вычитанием в нормальной формуле.

Это же так просто - нарисовать параллелограмм на бумаге, дополнить его до прямоугольника со сторонами, параллельными координатам, разбить дополнение на прямоугольные треугольники со сторонами, параллельными координатам, вычилить все площади по простейшим формулам, скомпоновать и получить простой ответ.
Да и выражение из формулы Герона наверняка можно упростить чисто алгебраическими методами, если порасписывать да скобки пораскрывать на 5 страниц мелким почерком. Просто прежде, чем скармливать компьютеру выражение, надо сначала на бумаге посмотреть, можно ли его упростить.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Я согласен с Тарасом по поводу вычисления площади - на координатной сетке и в 10-м классе можно найти более эффективные методы вычисления площади, чем Герон. Но в одном я бы все же уточнил..
Цитата(TarasBer @ 10.10.2010 22:00) *
Площадь 4угольника ABCD равно сумме площадей треугольников ABC и CDA
Тарас, никто не сказал, что точки перечислены в порядке обхода выпуклого 4-угольника. В условии сказано "даны точки, образующие выпуклый четырехугольник", а не "дан выпуклый четырехугольник ABCD". Поэтому их придется сначала расположить в нужном порядке..


Добавлено через 2 мин.
P.S.
зачем дана внутренняя точка, остается загадкой природы..


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Новичок
*

Группа: Пользователи
Сообщений: 11
Пол: Мужской

Репутация: -  0  +


Вот что у меня получилось

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.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


Злостный любитель
*****

Группа: Пользователи
Сообщений: 1 755
Пол: Мужской

Репутация: -  62  +


> Вот что у меня получилось

Препода это устроит, но это не дело.
Уже второй раз вижу этот кошмарный метод вычисления площади.
Так вот, площадь треугольника ((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 результатов берём максимальный по модулю.


--------------------
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 28.03.2024 16:20
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name