C++ 获取任意多边形内的所有x、y点

C++ 获取任意多边形内的所有x、y点,c++,C++,我试图得到c中任意多边形形状内的所有x,y++ 例如,我有一个长方形,它有以下坐标 第1点: X = 5 Y = 10 第2点: X = 5 Y = 8 第3点: X = 9 Y = 8 第4点: X = 9 Y = 10 因此,基于给定的4个点的多边形内的坐标将 X = 6 Y = 9 X = 7 Y = 9 X = 8 Y = 9 这是我从你家找到的 bool pointInPolygon(){ int i,j=多晶面-1; bool=NO; 对于(i=0;itesty))&

我试图得到c中任意多边形形状内的所有x,y++

例如,我有一个长方形,它有以下坐标

第1点:

X = 5
Y = 10
第2点:

X = 5
Y = 8
第3点:

X = 9
Y = 8
第4点:

X = 9
Y = 10
因此,基于给定的4个点的多边形内的坐标将

X = 6 Y = 9 
X = 7 Y = 9 
X = 8 Y = 9 
这是我从你家找到的

bool pointInPolygon(){
int i,j=多晶面-1;
bool=NO;
对于(i=0;itesty))&&
(testx<(vertx[j]-vertx[i])*(testy-verty[i])/(verty[j]-verty[i])+vertx[i]))
c=!c;
}
返回c;
}

事实上,我找到的大多数搜索结果都有类似的代码(如上所示)。据我所知,如果点位于多边形内,代码(如上所示)只会返回真/假,而不会返回在多边形内找到的任何跳线。

如果您有函数
bool pointInPolygon(polygon*pol,int point_x,int point_y)
,您可以执行以下操作:

int x_min, x_max; // determines x min and max of your polygon
int y_min, y_max; // determines y min and max of your polygon
int i, j;

...

for(i = x_min; i < x_max; i++) {
  for(j = y_min; j < y_max; j++) {
     if(pointInPolygon(pol, i, j)) {
        // add the point (i, j) in an array
     }
  }
}
int x_min,x_max;//确定多边形的x最小值和最大值
int y_min,y_max;//确定多边形的y最小值和最大值
int i,j;
...
对于(i=x_最小值;i
在处理二维图形时,它工作得很好。

在多边形上运行一个程序,并在执行过程中用整数坐标记录所有点

这适用于一般多边形。

通过任何形状,是否包括自交多边形?
int pnpoly(int nvert, float *vertx, float *verty, float testx, float testy) {
  int i, j, c = 0;
  for (i = 0, j = nvert-1; i < nvert; j = i++) {
  if ( ((verty[i]>testy) != (verty[j]>testy)) &&
   (testx < (vertx[j]-vertx[i]) * (testy-verty[i]) / (verty[j]-verty[i]) + vertx[i]) )
     c = !c;
  }
 return c;
}
int x_min, x_max; // determines x min and max of your polygon
int y_min, y_max; // determines y min and max of your polygon
int i, j;

...

for(i = x_min; i < x_max; i++) {
  for(j = y_min; j < y_max; j++) {
     if(pointInPolygon(pol, i, j)) {
        // add the point (i, j) in an array
     }
  }
}