给定n个点坐标,这n个点依次围成一比和多边形,再给一点(x,y),判断它是否再多边形中

来源:百度知道 编辑:UC知道 时间:2024/07/15 15:58:50
C语言编程 高手帮忙下,谢谢啦

给你说下思路吧
个人意见

1。构造函数max和min,分别比较所给出的坐标中,x及y的最大值和最小值
2。判断,若给出的那一点满足:x最小值< x < x最大值,且y最小值< y < y最大值,则可确定此点在多边形内,否则不在。

如果是凹多边形呢
你的判断条件就不合适了

#include <stdio.h>
#include <stdlib.h>

int x,y,x1,y1,x2,y2;

int do_test()
{
int a=(y1-y2);
int b=(x2-x1);
int c=(x1*y2-x2*y1);
int d;

if (y1==y2)
{
return 0;
}

if (((y<=y1)&&(y<=y2))||((y>=y1)&&(y>=y2)))
{
return 0;
}

d=a*x+b*y+c;

if ((d==0)||((d>0)&&(a<0))||((d<0)&&(a>0)))
{
return 0;
}

return (y1<y2)?1:-1;
}

int main(int argc, char *argv[])
{
int x0,y0;
int count;
int i;

if ((argc<9)||((argc&1)==0))
{
printf("usage:%s x y x0 y0 ... xn yn \n", argv[0]);
return -1;
}

x=atoi(argv[1]);