Найти площадь многоугольника
- From
- Kostya Sudilovsky (2:452/77.19)
- To
- Ivan Voroshilin ()
- Date
- 2000-02-27T20:29:46Z
- Area
- RU.ALGORITHMS
Как поживаете, Ivan ?
Я заметил, что в Воскресенье Февраль 27 2000, Ivan Voroshilin писал:
IV> Решал я задачу на олимпиаде по программированию следующего содержания:
IV> Вводим кол-во вершин многоугольника и коорд-ты (x,y) каждой вершины.
IV> Необходимо вычислить площадь этого многоугольника.
/│\ C
│ .
│ . |.
│ . .
│ . | .
│ . .
│ B . | .
│ | . .
│ . | .
│ | . .
│ . | .
│ | . .
│ . | .
│ | . .
│ | . .
│ | . .
│ | . .
│ | . .
│ | . .
│ | .
│ | | A
└───────────────────────────────────────────────────────────────>
D E F
Без нарушения общности считаем, что фигура располагается пол-
ностью в одной из полуплоскостей (если это не так, то просто сделаем
параллельный перенос).
Площадь фигуры будем вычислять как сумму площадей трапеций
(считаем, что площадь может быть и отрицательной) по формуле
1 n
S= ─── * SUM (X - X )* ABS(Y - Y )
2 i=1 i+1 i i+1 i
Тут считается, что (X ,Y )=(X ,Y ).
N+1 N+1 1 1
Например, для фигуры на рисунке площадь будет вычисляться следующим
образом :
S = S + S + S = S + S - │S │.
ABC DBCE ECAF ABDF DBCE ECAF ABDF
Периметр фигуры находится как сумма длин сторон многоугольни-
ка, длина стороны между точками A(x1,y1) и B(x2,y2) вычисляется по
хорошо известной формуле
d(A,B)=SQRT(SQR(x1-x2)+SQR(y1-y2)).
Нахождение угла между сторонами можно свести к задаче нахож-
дения угла между отрезками OD и OP (O - начало координат). Находим
(используя функцию arctan в Паскале) угол, образуемый отрезком OP
с осью OX, и угол, образуемый OD с OX (при этом необходимо пра-
вильно определить значение величины угла - арктангенсы углов 45 и
225 градусов одни и те же; для нахождения истинных величин углов
надо еще смотреть, в каких квадрантах расположены точки P и D).
Digitally yours, Sudilovsky Kostya.
--- GoldED/W32 3.0.1-asa9 SR3
* Origin: Gomel State Univesity (2:452/77.19)