Для выпуклого многоугольника все векторные произведения смежных сторон будут одинакового знака, а если это не так, то будет присутствовать и произведение противоположного знака.
вот правило, на основании его строим алгоритм
virt
10.11.2005 3:27
Цитата
(требуется из некоторых из заданных 25 точек на плоскости составить Выпуклый многоугольник, чтобы ВНЕ его площади ни лежало ни одной точки)
это задача построения выпуклой оболочки.
площадь многоугольника:
type TPoint = record
x,y : real;
end;
function Square(const points : arrayof TPoint;const n : integer):real;
var i : integer;
vr : real;
beginif n < 3then Square := 0elsebegin
vr := points[0].x * (points[1].y - points[n - 1].y) +
points[n - 1].x * (points[0].y - points[n - 2].y);
for i := 1to n - 2do
vr := vr + points[i].x * (points[i + 1].y - points[i - 1].y);
Square := abs(vr) / 2;
end;
end;
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.