Связь и интернет Архив Программирование
   
Сделать стартовойСделать закладку            
   ПОИСК  
   
Главная / Алгоритмы / Математика / Вычислительная геометрия / Работа с многоугольниками /
8  Perl
8  PHP
8  JavaScript
8  HTML
8  DHTML
8  XML
8  CSS
8  C / C++
8  Pascal и Delphi
8  Турбо Ассемблер
8  MySQL
8  CASE-технологии
8  Алгоритмы
8  Python
8  Обратная связь
8  Гостевая книга
Новости о мире


Определение: выпуклый многоугольник или нет - Программирование от RIN.RU
Определение: выпуклый многоугольник или нет

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



/*
Return whether a polygon in 2D is concave or convex
return 0 for incomputables eg: colinear points
CONVEX == 1
CONCAVE == -1
It is assumed that the polygon is simple
(does not intersect itself or have holes)
*/
int Convex(XY *p,int n)
{
int i,j,k;
int flag = 0;
double z;


if (n < 3)
return(0);


for (i=0;i<n;i++) {
j = (i + 1) % n;
k = (i + 2) % n;
z = (p[j].x - p[i].x) * (p[k].y - p[j].y);
z -= (p[j].y - p[i].y) * (p[k].x - p[j].x);
if (z < 0)
flag |= 1;
else if (z > 0)
flag |= 2;
if (flag == 3)
return(CONCAVE);
}
if (flag != 0)
return(CONVEX);
else
return(0);
}




 8  Комментарии к статье  8 8  Обсудить в чате

 
  
  
    Copyright ©  RIN 2003 - 2004      * Обратная связь