БлогNot. Шнурки Гаусса

Шнурки Гаусса

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

Далее показана реализация этого несложного алгоритма на консольном C++, код проверен в Studio 2015 для координат вершин многоугольника, изображённого в "Вики".

Координаты последней точки в многоугольнике pointSet должны совпадать с координатами первой, сама функция shoelace для простоты замыкания многоугольника не делает.

#include <cstdlib>
#include <cstdio>
#include <cmath>

struct point { double x, y; };

double shoelace (int numPoints, point *pointSet) {
 double leftSum = 0., rightSum = 0.;
 for (int i = 0; i<numPoints-1; i++) {
  leftSum += pointSet[i].x*pointSet[i+1].y;
  rightSum += pointSet[i+1].x*pointSet[i].y;
 }
 return 0.5*fabs(leftSum - rightSum);
}

int main () {
 const int numPoints = 6;
 point pointSet[numPoints] = {
  {3,4}, {5,11}, {12,8}, {9,5}, {5,6}, {3,4}
 };
 printf("The polygon area = %lf", shoelace(numPoints,&pointSet[0]));
 getchar();
 return 0;
}

05.02.2018, 13:54 [2067 просмотров]


теги: c++ алгоритм

К этой статье пока нет комментариев, Ваш будет первым