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