Найти площадь многоугольника

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)