Здавалка
Главная | Обратная связь

Задача 5. Визначення площі довільного многокутника



Визначення площі многокутника

Задача 1. Визначення довжини відрізка

За заданими координатами початку і кінця відрізка визначити його довжину.

Довжина відрізка

Процедура визначення довжини:

 

procedure line(x0,y0,x,y:real;var l:real);

begin

l:=sqrt(sqr(x-x0)+sqr(y-y0));

end;

Задача 2. Визначення площі трикутника (формула Герона)

За заданими сторонами трикутника визначити площу трикутника.

a
C
B

 

Площа тритника за формула Герона обчислюється:

, де

Процедура визначення площі трикутника:

 

procedure pl(a,b,c:real; var s:real);

var p:real;

begin

p:=(a+b+c)/2;

s:=sqrt(p*(p-a)*(p-b)*(p-c));

end;

Задача 3. Визначення площі трикутника за заданими координатами вершин

За заданими координатами вершин трикутника визначити його площу.

Для визначення площі скористуємось двома процедурами за координатами знаходимо довжини сторін за довжинами сторін визначаємо площу трикутника.

Програмний код:

Program pr1;

var x1,y1,x2,y2,x3,y3,st:real;

procedure line(x0,y0,x,y:real;var l:real);

begin

l:=sqrt(sqr(x-x0)+sqr(y-y0));

end;

procedure pl(a,b,c:real; var s:real);

var p:real;

begin

p:=(a+b+c)/2;

s:=sqrt(p*(p-a)*(p-b)*(p-c));

end;

 

begin

readln(x1,y1,x2,y2,x3,y3);

line(x1,y1,x2,y2,a);

line(x2,y2,x3,y3,b);

line(x3,y3,x1,y1,c);

pl(a,b,c,st);

writeln (st);

end.

Задача 4. Визначення площі опуклого многокутника

За заданими координатами вершин многокутника визначити його площу.

(x3,y3)

 
 

 


Розбиваємо многокутник на трикутники і знаходимо суму трикутників. Координати вершин многокутника заносимо в массив.

Програмний код:

 

Program Prog 2;

var xx,yy:array[1..100] of real;

a1,b1,c1,st,s_mn:real;

i,n:integer;

procedure line(x0,y0,x,y:real;var l:real);

begin

l:=sqrt(sqr(x-x0)+sqr(y-y0));

end;

 

procedure pl(a,b,c:real; var s:real);

var p:real;

begin

p:=(a+b+c)/2;

s:=sqrt(p*(p-a)*(p-b)*(p-c));

end;

begin

readln(n);

for i:=1 to n do readln(xx[i],yy[i]);

s_mn:=0;

for i:=1 to n-2 do begin

line(xx[1],yy[1],xx[i+1],yy[i+1],a1);

line(xx[i+1],yy[i+1],xx[i+2],yy[i+2],b1);

line(xx[i+2],yy[i+2],xx[1],yy[1],c1);

pl(a1,b1,c1,st);

s_mn:=s_mn+st;

end;

writeln(s_mn);

end.

end.

 

 

Задача 5. Визначення площі довільного многокутника

За заданими координатами вершин многокутника визначити його площу.

Для обчислення площі можна використати формулу:

Обґрунтування:

1) Для трикутника:

 
 

 


Координати векторів (x2- x1,y2-y1), (x3- x1,y3-y1).

Модуль векторного добутку рівний площі паралелограма, а ½ модуля векторного добутку - площі трикутника.

 

2) Структуру формули можна зрозуміти на прикладі трикутника.

 

Справді, а наприклад, площа трапеції дорівнює

Зазначимо, площа фігури, заданої точками А1, … , Аn, n³4, залежить від порядку, в якому задано вершини. Наприклад, якщо вершини розміщені на площині так, як показано на малюнку, то дістанемо фігуру, яка називається чотиривершинником (його площа заштрихована).

 

3) Структуру формули можна зрозуміти на прикладі многокутника.

Нехай потрібно визначити площу многокутника A1, A2, A3, A4, A5 з координатами вершин x1,y1; x2,y2; x3,y3; x4,y4; x5,y5. Площа многокутника S можна преставити трапеціями, у яких абсциси є основними, а різниця ординат сусідніх точок висотами.

 

 

S = a1A1A2a2 + a2A2A3a3 + a3A3A4a4 - a5A5A4a4 - a1A1A5a5.
2S = (x1 + x2)(y2 - y1) + (x2 + x3)(y3 - y2) + (x3 + x4)(y4 - y3) +

+(x4 + x5) (y5 - y4) + (x5 + x1)(y1 - y5).

Після розкриття дужок і приведення подібних членів отримаємо

2S = x1y2 - x2y1 + x2y3- x3y2 + x3y4 - x4y3 + x4y5 - x5y4 + x5y1 - x1y5

Після винесення за дужки x1, x2, x3, x4, x5 будемо мати

2S = x1(y2-y5) + x2(y3-y1) + x3(y4-y2) + x4(y5-y3) + x5(y1-y4)

а якщо з винести за дужки y1, y2, y3, y4, y5. то будемо мати

2S = y1(x5-x2) + y2(x1-x3) + y3(x2-x4) + y4(x3-x5) + y5(x4-x1).

В скороченому вигляді ці формули можна записати так:


Після перетворення отримаємо формулу в її нормальному вигляді.

, де X0,Y0 = Xn+1,Yn+1

У програмі використовуються змінні:

n – кількість вершин;

s – площа многокутника:

x[1..n+1], y[1..n+1] – масиви координати вершин;

і - змінна циклу.

На n+1 позицію заносимо координати першої вершини.

Програмний код:

Program Prog 3;

var x,y:array[1..100] of real;

i,n:integer;

s:real;

begin

write('n=');

readln(n);

for i:=1 to n do

readln(x[i],y[i]);

x[n+1]:=x[1];

y[n+1]:=y[1];

s:=0;

for i:=1 to n do

s:=s+(x[i]*y[i+1]-x[i+1]*y[i]);

s:=1/2*abs(s);

writeln('s=',s:2:2);

end.

 







©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.