输入N个点的坐标,判断这N个点能否构成一个凸多边形

输入N个点的坐标,判断这N个点能否构成一个凸多边形 用java 不要4个点的啊

凸多边形的定义任意一边无限延长后其余边在这一边的同一侧
一个二维数组
存入N个点坐标(x,y)
取出一个点记这个点为(x1,y1)与其余点的x比较记其余点的x为x2,x1-x1最小为邻近点 再将这两个代入直线方程式求出k,b得出方程式为((x1-x2)/(y1-y2))(x-x1)+y1-y=0
将其余点的x代入若小于0(点在这一边的下面)设一个值n=-1,若大于0设n=1测试下一个点若下一个点代入后小于0设n1=-1或大于0,n1=1直到N个点接着判断n与n1,n2的数值相同不的,相同成立则为凸多边形,不同则不是。可能有点乱,具体算法自己写吧我提供思路
建议以后设计程序先看下这个东西的定义
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-06-07
求神人写吧,想不出算法来。问了下同事,也没人会写。
1:怎么把这个多边形构造出来?
2:构造出来,怎么去判断是不是凸多边形(任意两边之间的夹角<180°)

真心求教神人思考下本回答被网友采纳
第2个回答  2012-06-08
1:怎么把这个多边形构造出来?
2:构造出来,怎么去判断是不是凸多边形(任意两边之间的夹角<180°)

用C++编程输入N个点的坐标,判断这N个点能否构成一个凸多边形
由任意点开始寻找能够与其组成边的点,若按顺序能够找到N点则其为凸多边形,反之则不能.3.设计思路。输入N个点,用二维数组存储这N个点, 定义real函数判断N个点是否能构成凸多边形,从第一个点开始能够找到N条满足函数tt的边则为图多边形.tt为判断2点能否够成图多边形边的函数.4.流程图。5.源程序。

输入N个点的坐标,判断这N个点能否构成一个凸多边形。
首先要弄清这N个点是否是连续(顺序)的,即1连2, 2连3, 3连4.。。。N连1 如果这N点是随机(任意次序)的,目前我没想出很好的办法,也许对某点可以将相邻最近的两点与其连起来?如果这N个点是连续(顺序)的,那么对于凸多边形,某顶点临近的两顶点的连线必然在多边形内部,反之则不是凸多边...

输入N个点的坐标,判断这N个点能否构成一个凸多边形
将其余点的x代入若小于0(点在这一边的下面)设一个值n=-1,若大于0设n=1测试下一个点若下一个点代入后小于0设n1=-1或大于0,n1=1直到N个点接着判断n与n1,n2的数值相同不的,相同成立则为凸多边形,不同则不是。可能有点乱,具体算法自己写吧我提供思路 建议以后设计程序先看下这个东西的...

用C++编程 输入N个点的坐标,判断这N个点能否构成一个凸多边形. 程序设计...
多边形所有点满足 点(Pn-3),点(Pn)在线段(Pn-2,Pn-1)的同侧 多边形是凸多边形,否则为凹多边形。这个函数判断点c在线段ab的左边还是右边,如果返回值大于0在左边,如果小于0在右边,否则共线 double left_right(point a,point b,point c){ a.x-=c.x; a.y-=c.y;b.x-=c.x; b.y-...

C语言程序,输入N个点的坐标,判断能否构成凸多边形
也就是说凸多边形边界上或内部的任意两点所连成的直线段上所有的点均在该凸多边形的内部或边界上。 通常,用多边形顶点的逆时针序列来表示一个凸多边形,即P=<v0 ,v1 ,… ,vn-1>表示具有n条边v0v1,v1v2,… ,vn-1vn的一个凸多边形,其中,约定v0=vn 。 若vi与vj是多边形上不相邻的两个顶点,则线段...

C语言 输入N个点坐标判断这N个点是否可以构成凸多边形的源程序
N个点是排序的吗?用转角法,记录转角是否等于2pi

怎么判断一个图形是不是凸多边形 比如16 变形为什么不是凸多边形
16边形可以是凸多边形的。。 如果存在一个内角大于180度 就是凹多边形 不然就是凸

...给定n个点的坐标,这n个点依次围成一闭合多边形,再给一点(x,y),判 ...
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;} 参数说明:nvert: 多边形的顶点数 vertx, verty: 顶点X坐标和Y坐标分别组成的数组 testx, testy: ...

...给定n个点的坐标,这n个点依次围成一闭合多边形,再给一点(x,y),判 ...
这个代码的主要大意就是,如果这个点在多边形里面,那么沿着多边形走,这个点一直会在左边或一直在右边。2个向量的叉乘就是计算向量的位置是在左边还是右边。输入有要求,即:1、n至少为3,至少得为三角形吧,2、这n个点必须按多边形顺时针或逆时针依次输入,3、这个多边形必须是凸多边形。本人由于做过和这类似的acm题目...

C++编程,关于凸多边形的问题
则要么t全大于0,要么t全小于0。然后依次交换(x1,y1)和(x2,y2)并依次测量其他点,变能判断所有的点能否构成图多边形。下面解释一下程序中关见部分 首第tt函数中的第一个for语句,这个语句是判断某一点是否位于直线的同侧,程序为 for(int i=0;i<N;i++){ if(i==a||i==b) { continue;...

相似回答