Реферат: Вычисления площади произвольного многоугольника

1) Запишем уравнения прямой, проходящей через точки A1 и A2.

Преобразуем его в форму вида:

где , ,

Из геометрии известно, что если две точки находятся по одну сторону от прямой, то при подстановке их координат в полином левой части получим значения одного знака. Таким образом, если точки B1 и B2 располагаются по разные стороны от прямой, то

(AX1B +BY1B +C)(AX2B +BY2B +C)<0

Но пересечение прямых не является достаточным для пересечения отрезков, например:


Эти отрезки не пересекаются.

Для достаточного доказательства пересечения отрезков необходимо произвести все вышеприведенные операции над точками B1 и B2 , т.е. провести через них прямую и выяснить расположение точек A1 и A2 относительно ее.

Таким образом определяем возможность отсечения вершины многоугольника с количеством вершин, больше четырех.

Для некоторых видов четырехугольника это условие не несправедливо, например:


Здесь вершину A отсечь нельзя. Для четырехугольника определяем расположение отсекаемой вершины и вершины, несмежной с ней (через оставшиеся проходит "линия отреза"). Если они расположены по одну сторону, как на рисунке, то отсекать нельзя. Приведенный алгоритм контроля реализуем в следующей функции:

function cross(c: integer): boolean;

var a, b, i: integer;

AA, BB, CC,

AA1, BB1, CC1: real;

function Mline(x,y: real): real;

begin

Mline:=AA*x+BB*y+CC

end;

function Sline(x,y: real): real;

begin

Sline:=AA1*x+BB1*y+CC1

end;

begin

if c=1 then

begin

a:=n;

b:=2;

end

К-во Просмотров: 1186
Бесплатно скачать Реферат: Вычисления площади произвольного многоугольника