用C或C++实现给定N个点坐标且N个点依次围成多边形,再给一点(X,Y)判断是否在多边形中

如题所述

boolean pointInPolygon() {

int i, j=0 ;
boolean oddNODES=FALSE ;

for (i=0; i<polySides; i++) {
j++; if (j==polySides) j=0;
if (polyY[i]<y && polyY[j]>=y
|| polyY[j]<y && polyY[i]>=y) {
if (polyX[i]+(y-polyY[i])/(polyY[j]-polyY[i])*(polyX[j]-polyX[i])<x) {
oddNODES=!oddNODES; }}}

return oddNODES; }
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-01-14
判断点在多边形内一般用扫描线法

...坐标,这n个点依次围成一闭合多边形,再给一点(x,y),判断它是否在多边 ...
int onSegment(point a,point b,point c) { if(dd(xmult(a,b,c),0.0)&& dyd(c.x,min(a.x,b.x)) && xyd(c.x,max(a.x,b.x)) && dyd(c.y,min(a.y,b.y)) && xyd(c.y,max(a.y,b.y))) return 1; return 0; } int is_Cross(point a,point b,point c,point d...

C++编程,关于凸多边形的问题
比如延长边ab,则图多边形的所有其他边都在ab的一侧,则有可能是图多边形,然后依次判断其他边是否在某一边的一侧,比如再延长bc边,判断其他边是否都在bc边的一侧,如此循环,一直判断完所有边,如果都在同一侧,则是图多边形,否则不是。

C++的给出多边形定点坐标,求周长问题
float nDiffY = ptEnd.y - ptBegin.y;return (float)sqrt(nDiffX * nDiffX + nDiffY * nDiffY);} int main(){ Polygon polygon;int nVertexCount = 0;POINT* pArray = NULL;while(true){ cout << "输入顶点数量:";cin >> nVertexCount;if(nVertexCount < 3){ cout << "请输...

最大点独立集问题,如何用C\/C++实现?
从1开始依序号依次搜索,对于每个要填色的点,先判断其周围有没有黑色的点,没有的话就分为填黑色和填白色两种情况讨论,有的话就只能填白色了。调用:search(1);void search(int i){ int flag=0;int k;if(i==n){ if(now>maxx){ for(k=1;k<=n;k++) best[k]=color[k];maxx=now;...

求c++的 泰森多边形
泰森多边形法是一种根据离散分布的气象站的降雨量来计算平均降雨量的方法。具体做法是,将所有相邻气象站连成三角形,作这些三角形各边的垂直平分线,于是每个气象站周围的若干垂直平分线便围成一个多边形。可用这个多边形内所包含的一个唯一气象站的降雨强度来表示这个多边形区域内的降雨强度,并称这个多边形...

C语言:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报...
*p==0){\/\/如果健在 if(out_n==(N-1))break;\/\/如果仅剩一人 call_n++;\/\/报数 call_n%=3;\/\/最大为3,到了3就从0开始 if(call_n==0){*p=1;out_n++;}\/\/为0(即3)出局 } p++;if(p==a+N)p=a;\/\/循环转向下一人 } printf("最后剩余者的编号是:%d\\n",p+1-a);} ...

C++语言 输入一个正整数,判断它是否是回文数
h> int main(){ int num,k,n=0;printf("请输入一个数:");scanf("%d",&num);k=num;while(k>0){ n=n*10+k%10;k=k/10;} if(n==num)printf("%d是回文数",n);else printf("No!它不是回文数!");return0;} 运行效果:...

我编写的C程序怎么错了啊。在FLOAT那一行!
1. C语言的缺点主要是表现在数据的封装性上,这一点使得C在数据的安全性上做的有很大缺陷,这也是C和C++的一大区别。2. C语言的语法限制不太严格,对变量的类型约束不严格,影响程序的安全性,对数组下标越界不作检查等。从应用的角度,C语言比其他高级语言较难掌握。[C语言指针]指针就是C语言的一大特色,可以说C...

汉诺塔问题公式是什么?
汉诺塔问题(又称河内塔问题)是根据一个传说形成的一个问题:有三根杆子A,B,C。A杆上有N个(N>1)穿孔圆盘,盘的尺寸由下到上依次变小。要求按下列规则将所有圆盘移至C杆:1. 每次只能移动一个圆盘;2. 大盘不能叠在小盘上面。提示:可将圆盘临时置于B杆,也可将从A杆移出的圆盘重新移回A杆...

c++ 的特点是什么?c++ 的特点是什么?谈谈它的多态性。
用在编译时被束定到函数体上,使得这个表达式中的函数调用执行point类的showarea()。为此,当程序员在实现一个派生类而变动了基类中的操作实现时,C++提供的虚函数机制可将这种变动告诉编译器,即将关键字virtual放在类point中该函数的函数说明之前(virtual void showarea()),程序其它部分保持不变(circle::showarea()...

相似回答